During the previous weeks I was writing a lot about the career possibilities of programmers. First in the article “How to choose the right company for you?” I tried to give on overview about the different kind of companies. After that in “Levels of freedom as a programmer” I wrote about the opportunities of independent working as a programmer. This time I would like to summarize the career opportunities as an employee inside a typical company.
If you are working at a company and you are developing yourself and getting better and better sooner or later you will reach a point where you need to choose the direction of your carrier. These career paths are existing at most of the big companies, however it can be that they have a different name. If identified three main career path: team manager, project manager and technical expert. But next to these three I would like to mention about some less other possibly positions as well: these are the quality manager, technical sales colleague and the trainer. I identified these ones as main orientation opportunities. In case of smaller companies it can be that these are not strongly separated. I also tried to give a short description to each of these positions to help you to decide which is the most fitting one for you.
The usual development of a programmer is something like: junior developer, senior developer and what is coming here? Usually this is the point where you need to decide if you would like to keep on programming or rather concentrating on something else. If your decision is next to programming then technical expert can be a good path for you. Technical experts are often overtaking the role of software architect as well. That means they are designing the new software modules and taking the whole development under control from technical point of view: doing code reviews, supporting technical decisions, supporting other colleagues in technical problems. Quiet often technical experts are also going deep in one topic and getting real experts in that field and supporting colleagues in the special field all around the company world-wide.
But you need to know that technical experts are also not coding all day long: they need to attend several meetings, do discussions with others, support the project managers etc. If you would like to stay technically deep in the topic this is the right path for you, but don’t forget: next to great technical skills you will also need good soft skills.
About the role of project managers I have already written in article How to understand the managers?. They are responsible for time and cost planning and tracking of the project. They are communicating with all the stakeholders (customer, high management, developer team etc.) and they are creating a lot of documents (mostly plans and reports). They need to attend usually a lot of meetings. The life of a project manager is typically stressful, since you are responsible of a whole project or subproject. You will need really good communication and stress handling skills. The most typical programs you are using for your work will be Excel and PowerPoint. Usually the project manager is not deeply involved into the technical topics, but it is useful if the manager has a rough understanding of the technical aspectives of the project. At the beginning most likely you will be only responsible for a smaller subproject, but later on you can either overtake a project or all projects of a specific customer. In this case you won’t have any direct connection with the developer team anymore.
About the role of the team manager I also wrote in article How to understand the managers?. They are responsible for having a technically fit, well-motivated project which can successfully overtake all projects. For that a team manager needs to attend interviews, 1:1 meetings with the team members, need to define a vision and goals for the team and track them, next to that it is also needed to be in connection with the project managers and with the higher level management. What I see here as the biggest challenge is to communicate in a way with all of your team members which is giving the a good motivation and inspiring them for self-development and for a good quality work. For that you will need really good interpersonal skills. Although the team manager is not deeply involved into the development it is also needed to have a high level understanding about what the team is doing. If you are choosing this direction most likely first you will be responsible only the a small part of the team (5-6 persons), later for a whole team (15-30 persons) and later on you have chance to step one level higher and be responsible for a bunch of teams or a whole department.
If you think you can resolve all conflicts between people it is the right choice for you.
The sales of a software company is responsible for extending the business of the company. To find new opportunities and new projects. Furthermore to figure out the correct price for the projects to be done. For that kind of activity they will need some technical support who can identify the technical strength of the company, who can understand the technical content of project opportunities and propose further features and who can do a good high level estimation of needed development time and needed skills for the projects. These are usually the tasks of a technical sales colleague. If you have more interest in business, but you still want to use your technical knowledge this is also an opportunity for you, however this as a career path is not highlighted at most of the companies.
The quality manager is someone who is responsible for the quality of the products. To be able to do that the quality engineer needs to support the optimization of the development process and take care about that that all developers team are following the process, especially its quality related parts (reviews, documentation and testing). To be able to do that the quality manager is in connection with different development teams usually through the project manager and regularly control the project documents. For this position you need to be precise and quality oriented enough.
Most of the big companies have their training sessions for the employees. They are either done internally by colleagues of the company or by an external company. In both cases these trainings are held by professional trainers. The topic of the trainings can be either technical or soft skill oriented (communication, time management, stress handling etc.). This is also an opportunity to orient yourself into this direction and become a professional trainer. It is not taking 100% of your time in every cases, so you can do it next some other activities (like next to being a technical expert).