I like programming, and I'd prefer that the majority of my day consist of it. At this point, I have no interest in being a manager. Things like attending countless meetings, writing little to no code, and worrying about budgets just don't appeal to me. No offense to managers, but I like doing "real work". Yet I do often worry about future opportunities if I eschew the management career path. Will it be financially viable and intellectually stimulating enough for me to remain a programmer for the rest of my career?
Page 107 of DeMarco's and Lister's Peopleware: Productive Projects and Teams does a good job describing part of my fear. Although they're mentioning companies with higher rates of turnover, I think it's the general attitude of many companies.
"If people only stick around a year or two, the only way to conserve the best people is to promote them quickly. That means near beginners being promoted into first-level management positions. They may only have five years of experience and perhaps less than two years with the company.
There is something very disconcerting about these numbers. A person with a work life of, say, forty years will spend five years working and thirty-five managing. That implies an exceedingly tall, narrow hierarchy. Fifteen percent of the staff is doing work, with eighty-five percent managing."
There's several things wrong with this. For one, it means that there's a lot of managers with little programming experience - and that experience could have been from quite a long time ago. It also means more managers than programmers, leading to what I call the Eiffel Tower corporate hierarchy. But in regards to this post, it also means that at a lot of companies, the only career path is management. The most talented and promising become managers. But what about people who don't want to become managers and just want to continue excelling at what they currently do? What prospects do they have?
Like I said, right now I just want to be a programmer. But that doesn't mean that I want to do the same thing for the rest of my life. Granted, I need to continue to make enough to live comfortably (and that amount unfortunately continues to increase), but more importantly, I want a job that continually challenges me. In terms of programming, that means a job that allows me to use new technology, tackle complex problems, and assume responsibility for larger and larger features in terms of scope. But on a team with several talented programmers, how do you provide career growth? You can only have a handful of architects and lead developers, so simply promoting everyone doesn't work. So how do you keep a team together while still giving everyone on the team a chance to grow? Is this possible, or do programmers have to move onto other jobs in order to continue to grow and face new challenges? Or do you reach a point where you just accept that you're at a good company, you get to write code in a somewhat enjoyable fashion, and you leave it at that?
3 comments: