When Smart People Can’t Agree

Two of the smartest engineers on the team have locked horns over some design decision and they’re really going at it. I used to watch this sort of thing happen every week. (If I’m being honest, I usually was one of the guys arguing.)

I thought about this phenomenon for a very long time. It seems very strange to me that two smart, talented, and experienced people can have such opposing views of what constitutes quality in software. And yet, this scenario continues to play itself out weekly in team spaces every where.

Continue reading “When Smart People Can’t Agree”

Software Design Heuristics

The cruelest part of being trapped in the fifth-year plateau is that you are now competent enough as a software engineer that you know what garbage looks like and you know what good looks like, but you can’t always get there. A lot of the code you write is amazing, but some of it (most of it) is still absolute garbage. You cruise along with absolutely zero sense of pride in your work while the bosses can’t praise you enough. You’re the most important person on the team and you’re not even doing very good work.

Continue reading “Software Design Heuristics”

The Fifth-Year Plateau

The great thing about software is that you can teach yourself everything you need to know to become a moderately competent application developer. The problem is that once you get to around five years of experience, you’ve gotten about as far as you’re going to get on your own. You are probably the best person on your team and your productivity is very high. And yet, you still have not reached mastery.

Continue reading “The Fifth-Year Plateau”