The Software Engineer Growth Model

I have been thinking a lot lately about the best way to describe the progress of a software engineer’s career. The software engineer career is a transition through 3 stages: the how, the what, and the who.

You begin at the How stage. You focus on how to implement a feature. To master that, you learn coding best practices, testing strategies, debugging skills. As you master these pure technical skills, you master the art of implementing features.

As you master the How, you being to transition to the What. You grow to influence the design, selection, and prioritization of features. You learn how to write design documents, track features, and assign priorities. You will still be involved in the technical implementation, writing, testing, and debugging code.

The next natural transition takes you to the Who. You start to focus on people. You pitch features to your colleagues and leaders, work with other team members to implement larger features, interact with clients to learn about their needs. In this stage, you spend more time interacting and influencing people. You will still be involved in the design but will incrementally focus on higher-level design work as you grow. Your involvement in the technical implementation will shift to the strategy and mentoring of junior engineers.

As you progress through your career, your growth will depend on successfully shifting your time to people’s issues. There is a limit to what you can achieve designing and implementing features on your own. To achieve greater success, you will need to shift to delivering your project by leading a team and having the team follow the technical process you design to deliver high-quality results. You will need to work with clients, both internal and external, to take more impactful projects.