Software development is a specific role. Acceptable quality is on much lower level than in different areas of our lives. The product is more virtual. New technologies are invited much faster. And people stick to the role for shorter period of time.
The last thing isn’t typical for all positions in software business. For example there are many long-serving project mangers. By the way that makes much sense, because one of essentials for PM is experience. Although for developers experience is also one of key factors, which decide about quality of their work, long careers on that position are much less often. In the long run developers struggle to outgrow their role and escape to architecture, project management or running own business.
While I don’t judge that attitude (I used to have the same back than when I was a developer) I think we’ll see more and more positions requiring 10+ years of experience in software development roles. On one hand complexity of systems increases, on the other software goes deeper and deeper into our lives. It’s hard to imagine a hospital without any software working somewhere inside. It’s hard to imagine a new car without at least a couple of processors. It’s hard to imagine a jet without all those cool-looking systems, powered by (what a surprise) thousands lines of code. And it’s so easy to imagine losing life in any of above places. Over the years it’s more and more about the software, its quality, performance, availability and reliability. And developers.
Developers who make everyday code-level decisions basing on their best knowledge and experience. The more different solution they’ve co-created, the easier is to make the right choice. The fewer mistakes they’ve already made, the bigger is the chance to choose the wrong path. Sure, the team doesn’t have to be built from experienced developers only – it would be neither wise nor cost-effective choice – but leaving young wolves without experienced leader doesn’t guarantee you a success.
Yes, I hear you talking about Bill Gates or Larry and Sergey, but they were wunderkinds. You don’t see many of those around and most likely you won’t find any in your team. If I was asked who would lead the new complex project when high availability, high performance and high reliability were on the top of the requirements list I’d look for an experienced developer. Someone who has already dealt with performance issues and optimized the code, not the one who doesn’t even know where the performance traps are. Someone who has already designed a couple of poor architectures, not the one who is yet to make those mistakes. Someone who has tried different technologies, not the one who is all hot about the coolest Ruby-on-Rails only. I’d look for that particular type which isn’t very popular among developers.
That’s why I believe there is high demand on people who stick with development role for a longer period of time and it will grow over time. There will be more and more complex systems to be developed. Definitely that’s an idea to consider if you’re a developer and you’re planning your career.