It’s been a hot topic lately in the Java user group I subscribe to recently so I decided to put a like here to get feedback from a wider range of techies.
I just read an interesting post from one of the Java user groups I subscribe to (PinoyJUG to be exact). The question was “what is the career path from a software developer to CTO (Chief Technology Officer)?” Now that I’ve actually had some more time to reflect on the matter after sending in my reply, I’m going to repost it here with a few minor improvements.
Obviously, not everyone is destined to become a CTO (or even a CIO for that matter). From my experience, very few developers would even consider doing project management work since it detaches them from doing actual software development. In reality, career paths for software development personnel vary from company to company. Big companies normally have a pretty clear career path set, SME’s usually just have it simpler, you’re either a developer / systems analyst or a PM / CIO / CTO. From what I’ve seen so far though, this is what a typical career path from developer to CIO/CTO would look like:
http://bp3.blogger.com/_e2rFmgFROjg/SDl64L5gRFI/AAAAAAAAADI/RFisorGRnsw/s1600-h/programmercareerpath.jpg
But let’s put things in perspective first. Why would someone want to work as a developer in the first place? Typically, its because that person wants to do software development, experiment with the latest technologies, loves to solve programming problems, etc. So now the question becomes, after so much time being a developer / team leader, what’s the next step for you? You have to bear in mind that this becomes the point in your career when you have to decide where you feel you will be more productive and happier. Do I want to take on a management role (i.e. become a PM) or do I want to stay where I can keep my hands dirty with actual software development work (remain a developer or advance to being an architect)? Happiness can mean different things to people. This is when HR has to listen carefully to the person being considered for a promotion to a management position. HR has to carefully determine whether or not a person is ready to manage people. Why? Because a management role will either make you or break you, and if it breaks you, it will have adverse consequences on a project as well as the company. That is why most big companies have new PM’s go through management training and seminars/workshops first before they even get assigned to actual projects. Some companies have new PM’s do apprenticeship work under Senior PM’s in order to assess their capabilities and potential. Unfortunately, not all companies have the luxury of doing this.
Let’s take a simple scenario: Joe developer has been recommended by his boss for promotion to a PM because of his consistently good performance. But does being a good programmer directly translate into being a good project manager? Remember that just because you have great programming kung-fu doesn’t mean you can resolve squabbles between programmers bickering over non-programming issues. As a PM, people skills come into play when you are put in a management role. You will also find yourself becoming more and more detached from doing actual programming. You will become more preoccupied working out project schedules, coordinating with clients, coordinating with the development team, trying to manage the expectations of the project stakeholders. Making sure deadlines are met, planning for contingencies, trying to reduce and mitigate risks to the project, trying to control scope creep, trying to keep everybody informed in a timely fashion, etc. There’s a lot more but I think you get the general idea. Now you have to ask yourself: Do you honestly think you will find this the challenge you are looking for in your career? Do you find yourself wanting to overcome the challenges mentioned above? Do you want to know what the bigger picture really is and how you can be part of its inner workings? Are you prepared to take on the responsibility of a project’s success or failure? If the answer is yes, then you probably should take the plunge into management. Otherwise, either stick to being a programmer or consider advancing to the role of architect which is another challenging and exciting path. But remember, the role of architect is not just a fancy role with more pay. It share the same weight of responsibility with that of a PM. PM’s and architects work hand-in-hand. The architect decides what technologies to use and how the system should be designed. So if the system architecture fails, the project fails. Also, becoming an architect is not a career dead-end because there are different fields of specialization as well.
So there you have it. Hope this helps explain why very few developers ever become part of management. 🙂
You can check out my blog post on the subject here as well: http://firestorm711.blogspot.com/2008/05/career-path-for-programmers.html