A software engineer has quite a few career tracks to consider as he/she grows within the engineering domain.
I often hear –How do I get promoted? From enthusiastic fresh graduates and junior engineers, ready to prove their mettle to mid-level engineers feeling stagnated, disillusioned and not valued for not getting promoted though they’ve all been doing their job. Finishing work in hand in a timely manner and with high quality is why good engineers are hired. That’s the baseline. You don’t get a reward, recognition, a salary raise for just doing your job— You get a salary for that. You get a raise when you exceed expectations, or you raised the bar and brought additional value in some consistent way. Enthusiastic fresh hires disillusioned by lack of recognition or clarity in how to begin ascending the corporate ladder often find themselves attracted to career tracks which may seem more lucrative from title or salary perspective. The grass seems greener on the other side but often is not aligned with passion or skillset.
There are also a few potential career tracks in closely related fields such as product management, program management, project management, tech services, and customer solutions engineering.
What are the differences between object, NAS and file storage?
A software developer could move into product management and go on to becoming senior product manager or principal product manager. PMs are individual contributors and drive the vision, strategy, design, and execution of their product. Product management is a popular field that a lot of software developers consider as a career path.
A software developer could find their passion in project management, managing multiple projects, timelines, dates, priorities, scope creeps, bug management etc. Project managers are individual contributors and go on to become senior projects managers, principal and then consulting/director project managers.
Program managers are slight variations of project managers in that they manage multiple programs, multiple product releases, bug management, hotfix. They also patch maintenance, test cycles, retrospectives and process improvements.
All entry level software engineers wanting to continue in software engineering/software development track first need to grow into a mid level engineer. A software developer who decides to stay on individual contributor tracks go on to become a software engineer followed by senior software engineer, then a principal engineer, consulting, followed by distinguished and some organizations have a concept of fellow as well. If an engineer has people management aspirations, a good way to try it out is to aspire for a technical lead position. In this case, the path would look like software developer, software engineer II, senior software engineer, tech lead followed by engineering manager position.
Getting from Entry level to Mid level
As an Entry level [1-3 years] software developer, begin by being dependable, finishing the given work in a timely manner with high quality. You want to show a high sense of urgency towards customer issues. You also want to show curiosity and self motivation to learn beyond what is directly assigned (this is the key). Show ownership towards the product and be self driven to contribute to product and process improvement creatively. To become a software engineer II, demonstrate the ability to work independently with minimal guidance. Prove yourself to be trustworthy and reliable; someone who can be counted on to execute and deliver results (there is no shortcut to this; work timeliness and quality will directly influence reliability factor). If stuck, this person has figured out the right resources to reach out to for guidance, brainstorming and help. Demonstrate not only the readiness for next role but that the new workload/responsibilities are manageable. Voluntarily expand to take care of a few showing you are operating like one.
The checklist below is in place to help own your growth from entry level to mid level and analyse more logically.
|Knows functional area well||Yes/No|
|Understand the product end to end decently well||Yes/No|
|Have been contributing outside the direct assignments (volunteering)?||Yes/No|
|Successfully meet = finish tasks on time with high quality. Leave no broken glass behind. Show full accountability for any bugs that follow. Has innovative potential
Consistently exceed = finish tasks on time and exceed expectations by doing extra along the way (self driven enhancements, self motivated product improvements, documentation, process improvements, mentoring along the way, learning new areas without being asked and stepping up to solve customer problems. This could also be helping support with creative tools or better logging/ monitoring without being asked.
|Are you innovative. Progressively bring new ideas, perspectives and suggestions to existing and emerging products and practices.||Yes/No|
|Is considering trade-offs in their decisions and importantly sharing that insight. An example of a typical trade-off decision could be picking a technology that’s faster to go to the market rather than the one that may enable use-cases in future, cost/benefit of design A vs B; thinking resource optimization as they design and implement code big(O), thinking performance, scalability||Yes/No|
|Is this person bringing visibility to extra credit work they did. If the person doesn’t share what they did it is called leaving credit on the table and in worst cases someone else could take credit for it.
Make sure that higher authority such as the manager or lead gets regular visibility into their achievement
|Need oversight. (25% dependent (1:4)||Yes/No|
Getting From Individual Contributor to Leading Engineers
If a mid level engineer has an aspiration to lead teams, he/she needs to start demonstrating soft skills along with pure technical mastery. Here is a checklist of some big bucket items from soft skills perspective that would help make a strong case enabling you in your conversation with your manager.
|Mentoring juniors, interns while knowledge sharing with your team||Yes/No|
|Being a team player. Being able to give and take feedback||Yes/No|
|Able to enhance team building and camaraderie||Yes/No|
|Develop collaborative relationship/fosters cross functional coalition
Good at resolving conflicts and putting out fires
||Must have for a good lead|
|Thinks like a leader (anticipates future trends and helps the group to respond)||Yes/No|
|Anticipates customer needs, enables team to solve problems as well as builds customer trust and loyalty||Yes/No|
|Show organizational influence
Moving From Tech Lead to People Management Comes Next !
The ideas expressed in this blog are influenced by the wisdom gathered not only by years of experience, but also from various YouTube videos I’ve seen, and blogs I’ve read and people who’ve made my experiences richer with their advice from time to time. Hope you found a few pointers worth your time. Comments and feedback appreciated!