I also think this is a great article.
A big problem is that most developers hear, but can’t understand or don’t believe, the advice of the father that - “The hard part isn’t the technology — the number one failure of the software industry is building the wrong product.”
Hear, but don’t understand or don’t believe what Brooks wrote in No Silver Bullet - “The hardest single part of building a software system is deciding precisely WHAT to build.”
Even if understood or believed, no idea what to do about it.
This isn’t “the hard thing” about software development, as if there were only one.
First of all, employers want to make regular coding work a commodity. They’ve succeeded. The race to the bottom, as described in the article, exists. The product is junk, but (a) you can always hire better engineers later, right? and (b) no middle manager gets fired for buying cheap and squeezing down.
The issue is that people who are smart enough to solve tough problems (i.e., to do the work that commodity rent-a-coders can’t do) are generally averse to being typecast as business subordinates. They’ll only care about executive-level business concerns if they’re paid and treated at least as well as the execs, if not better (since a half-decent programmer– okay, my bar for “half-decent” might be high and someone else’s “quite good”– is smarter than 95% of non-technical VPs).
Employers want contradictory things from programmers. They want them to care about the business and think proactively about the business’s needs, but they also want for programmers to be subordinates. You really don’t get both, not from a smart person.
It’s not just an unwillingness to be subordinate. Many companies (if not the vast majority) have an openly hostile environment for engineers that want to understand and contribute to the business side of things. Stepping out of line creates drama that many technical people don’t have the emotional self-management skills to tolerate.
This is where strong engineering management matters. If you’re a good EM that protects talented people, then they stick around and grow. If you let them get kicked around by insecure product managers who can’t tolerate anyone else understanding how the business works, then as soon as someone progresses past the junior engineer stage, they’ll be looking for a new job where their opinions matter.
The fact that the author can’t find good senior engineers might say something about the culture he’s immersed in.
Need a Linked In account to view?
Seriously amazing article! I’m surprised it hasn’t been upvoted more!