Blog

Writing Tests Improves Your Code

Writing Tests Improves Your Code

There’s another more subtle way that it comes about that I’d like to explore in this article. How the act of writing new tests highlights when a refac...

Why Writing Is An Engineering Superpower

Why Writing Is An Engineering Superpower

The strongest engineers write things down in a place where others can find them.1 This is important enough that Gitlab has it one of their core values...

Flavors Of No

Flavors Of No

We’ve largely been conditioned to do more at work, because there’s a belief that will bring a promotion or more compensation. At some point, though, y...

100% Test Coverage Is Not Enough

100% Test Coverage Is Not Enough

In order for me to get to the latter statement, I need to prove the former, but let me talk about how I justify this statement. It's about trade-offs...

Text Is The Universal Api

Text Is The Universal Api

Text went in, and binary went out. You couldn’t explain it.1 It’s just how it worked.

Graphql Why Would You Want It

Graphql Why Would You Want It

GraphQL is kind of like a pick up truck. If you research one a little and ask yourself, "why would I bother to fit this gas-guzzler in my garage?" Th...

Why You Should Upgrade Laptops Regularly

Why You Should Upgrade Laptops Regularly

Now normally some productivity guru will talk about, “I was working on the wrong things,” or “I was working to the wrong goal.” Those are definitely p...

Look ma! No thought!

Look ma! No thought!

However, this is not that message. I am not dismissive of the value of generative AI.

One Tool

One Tool

Each sub-tool is fundamentally a sub-optimal experience. A knife that is just a knife would be better than any knife on a Swiss Army Knife. A screwdri...

The Second System Effect

The Second System Effect

Moreover, the scope of the second system expands. Hubris runs rampant for all those involved in the project until timelines slip and then slip again.

To Kubernetes Or Not To Kubernetes

To Kubernetes Or Not To Kubernetes

I know Kubernetes sounds really cool. But after using it for about 5 years, I can give some broad advice here and save you some pain: 99% of the compa...

Quit Your Projects Earlier

Quit Your Projects Earlier

Instead I’m going to try to convince you that, you probably shouldn’t finish every personal project you start or even most of them. Instead I’ll advoc...

Data Untangling

Data Untangling

After getting it restored, I began probing through the different tables figuring that one of them surely would have a datetime column for to begin to ...

Engineering Is Trade Offs

Engineering Is Trade Offs

This is a comment I wrote about 5 years ago on one of the biggest hacks I put into production ever.

Revisit Decisions

Revisit Decisions

This all ran on a single MySQL database. No replication. But lots of caching to Redis.

Start Somewhere

Start Somewhere

A couple of days later I was starting have my confidence shaken, because I couldn't find the "right way" to do this. At one point I thought to myself,...

Agile Is Not Scrum

Agile Is Not Scrum

Most companies really don’t do Agile. They do something else.

Counting The Costs Of Dependencies

Counting The Costs Of Dependencies

Dependencies are me outsourcing my code to someone else. Something for nothing. Free sounds awesome at first. Borrowing someone else’s work is only pa...

How To Use Checklists

How To Use Checklists

A practical guide on effectively using checklists to improve processes and reduce errors.

Interviewing Developers

Interviewing Developers

Clearly, there’s something to this idea. So let me show you how we try to do it where I work.

Keeping Up With The Valley

Keeping Up With The Valley

I suspect it’s a consequence of the quarterly heartbeat from Wall Street. But for us in tech, there’s almost never any let up.

Project Management Systems Suck

Project Management Systems Suck

But there’s a long tail out there: Ganttic, Team Week, Hub Planner, Flow, Teamgrid, netsuite, ResourceGuru, Harvest Forecast, Zoho projects, Wrike, Li...