Nate Meyvis

On rewarding simplicity

This nice piece about simplicity has been making the rounds. The industry does indeed fail at simplicity, both in implementing and in rewarding it. Some thoughts on the subject:

  1. Companies often review performance over the last 6 or 12 months. As hard as it is to say "I did something simple and it solved a problem this year" and get rewarded for it, it's much harder yet to say "I did something simple three years ago, it's still working, and it didn't cause any problems this past year."
  2. The situation gets worse when the simple solution isn't a pure win. When a problem goes wrong with a simple system that could be prevented with extra complexity, the simplicity can look like a problem. Complexity can feel professional (as the article notes), and actual problems look worse than hypothetical ones. It takes virtues of documentation, persuasion, and culture to advocate successfully for a simple solution that might bring trouble, however occasional and easily remedied that trouble is.
  3. The costs of over-engineered systems are often benefits to the people who made them. Those people are uniquely positioned to do the necessary maintenance, and they can make improvements that also look good. "I made X last year and improved it in these ways this year" often makes for a compelling performance-review (or promotion) document.1 (Even putting aside that such improvements look good and are legible to everyone, it's a rare company with mechanisms to punish you now for a design you made three years ago.)
  4. Industry-standard tools often come from big companies with needs, most obviously scale, that most companies don't have. The tools inherit complexity most users don't benefit from. Build systems and release pipelines are a good example of this. Many engineers have a hard time getting code deployed because their tools and processes are complicated, and they're in contexts where a much simpler approach would work fine.
  5. All of this can help us understand why some big tech companies work so hard, and spend so much, to maintain a strong culture. Valuing and rewarding simplicity requires both nurturing judgment and letting people exercise it. Making your engineers as good as possible, and encouraging them as strongly as possible just to do the right thing, will push you toward some strong, simple designs. I can't think of, and don't remember seeing, any other way to do it.

  1. That's not to say that people who do this are always, or even usually, conniving. It's just to say that they do in fact tend to benefit in these ways.

#sociology of software #software