Software is a strange field. Its rules and patterns for career growth and advancement are unlike most others. It's thought of as a professional occupation, requiring a college degree and offering advanced degrees. At the same time, it's treated much like a manufacturing job, with no one showing any interest in how it's done other than wanting assurance that modern standard methods are used, and wanting quality results on budget and on time.
Being a software manager is better in many ways than being a software engineer. Dilbert, as usual, pretty much sums it up:
Surely there are other ways to advance a career in software than becoming a manager like pointy-hair-boss above. There are indeed. Here is a detailed description of how to climb up the ladder of status in software. Bottom line: the farther away you are from customers and actually producing working code, the higher your status. It's kind of like being a field hand on a farm. Necessary work, but everyone would rather someone else did it.
To explain what you do to people who know nothing about software, it's hard to avoid using physical metaphors to explain things -- metaphors that are widely accepted but deeply misleading. And then it's easy to slip into lying about the software, because it's invisible to anyone who doesn't look at the code -- in other words, practically everyone.
Partly because of the invisibility, the compensation system is totally nuts. The star players in sports get the best salaries -- everyone watches them do their thing and win! Makes sense. But in software, it's as though no one can see what happens on the field. And worse, they've never picked up a ball or bat themselves, and have no idea, visual or otherwise, how it all works. So the pay is worse.
That's part of why software is so awful. It's no secret. There have been over 50 years of attempts to make the process of building software work the way that managers imagine it should. The attempts continue to this day. They fail. Here's a bit of history on the subject.
Why keep on keeping on as a programmer? It's invisible. You are pressured to lie to get ahead. You're constrained by awful methods that are supposed to make things better but in fact make them worse. Far easier to slog through the ten seconds of guilt described by pointy-hair-boss above, and make the move.
Comments