brandur.org

Entropy

A curious thing that occurs over the course of a job is the accumulation of responsibility over time. On your first day, the only things you need to remember are to fill out some paperwork and be nice to your new colleagues. By your last, you might be invited to half a dozen meetings, and be commenting on dozens of in-flight tasks.

The increased burden isn’t purely a bad thing. A lot of that overhead is being directed to discussions on product and implementation, quality reviews, and mentoring, which are all valuable to the larger organization. It’s good for the engineer as well in that this work is often specialized enough to place a high value on their tenure because if they were to leave, considerable resources would have to be redirected to fill the void.

The downside is that there’s less time to think about anything new. For an engineer this is especially problematic; part of their role is to spend at least some of the time innovating, which involves thinking about today’s architecture and working to make it better, or just prototyping new ideas. But when time gets tight, these are the first things to be thrown overboard.

I like to compare this to the concept of entropy, borrowed from physics:

A thermodynamic quantity representing the unavailability of a system’s thermal energy for conversion into mechanical work, often interpreted as the degree of disorder or randomness in the system.

If we replace “thermal energy” in the definition above with “time”, we’ve got a pretty close analog to how an engineer’s career progresses at any given company. Over time, all systems tend to progress in the direction of increasing entropy, and are less capable of producing useful work.

Paradoxically, this means that the engineers with the most internal context have the least opportunity to ship. It might be a worthwhile trade-off, but it’s not going to make everybody happy.

There are probably a variety of techniques available to help mitigate this; perhaps comprehensive processes for project hand-offs, or maybe sabbaticals. Sometimes though, it can advantageous to just to hit the reset button. There’s certainly danger of leaving a great thing behind, but the benefits of throwing off the chains and getting to learn something completely new might outweigh the risk.

On Tuesday, I start at Stripe.

Did I make a mistake? Please consider sending a pull request.