As an engineer in search of the next opportunity, it can be rather difficult to understand the roles advertised by companies. Different companies use different titles, and worse, the same title can mean different things at different companies. To address this issue, in this post, we clarify the roles senior engineers take on at Up Learn. These roles make sense for Up Learn in its current stage of growth (going from 6 to 25 engineers) and do not claim these roles to be right for any other company. Before we outline the 4 roles senior software engineers take on at Up Learn, there are a few aspects about these roles that must be clarified.
- Regardless of the role a senior engineer plays, they are expected to spend about 50% of their time doing hands-on development. They do code reviews, development, technical scoping, and so on within a product squad just like other software engineers. This allows them to develop and maintain a deep understanding of our code base. At the current stage of the company, we believe that this is necessary for them to carry out their responsibilities effectively.
- We believe that senior software engineers should be able to move into and out of these roles with ease. This means a senior engineer could try one role and a few months later decide that the role isn’t right fit for them and seamlessly move into a different role. Since there is no title change, this doesn’t lead to any salary changes or major organizational changes. It simply requires communication with those affected by the change.
- Each of these roles are considered equally important at Up Learn because each role contributes to a unique but equally valuable aspect of the company.
With that out of the way, here are the four roles we see software engineers take on at Up Learn.
The Tech Lead Role
Up Learn’s product work is executed by independent squads. The squad structure is similar to the Spotify Squad Model - each squad consists of a product manager (PM), a Tech Lead, 5-8 engineers, a data/product analyst, and a product designer. Each squad is provided with a high level product strategy and company goals and it independently:
- Identifies the next problem to work on
- Explores the problem domain and possible solutions
- Identifies and implements the best solution
- Verifies that the solution solved the problem
Steps 1, 2, and 4 are usually done by the PM and the Tech Lead together. They are also often referred to as dual leads as they both are responsible for the output of the squad they lead.
A senior software engineer plays the role of the Tech Lead. Due to the nature of the role, Tech Leads carry out a variety of interesting activities related to the product:
- Participate in user studies
- Participate in exploring usage data to understand problems in the product
- Help define product processes
- Design A/B tests and other analyses with the help of product analysts
- Participate in communication with the wider company
This also demands additional skills like ability to communicate technical concepts to a non-technical person and ability to interpret data from analysis and A/B tests.
The Engineering Manager Role
The engineering manager role is generally a well understood role. Their goal is to nurture the growth of engineers by providing guidance, coaching, and support as appropriate. The role requires a huge amount of empathy, good communication skills, and a strong desire to think about challenges of individuals as human beings in addition to good software engineering skills.
The Engineering Excellence Lead Role
At Up Learn, we believe in Growth Mindset. We believe that through deliberate practice, continuous improvement and frequent feedback, everyone in the engineering team can be excellent software engineers. However, to achieve this we need an in depth understanding of what it means to be an excellent software engineer, and what it takes to become one. It requires building necessary mechanisms across the entire engineering team that enable everyone to experiment and improve engineering practices. And finally, it needs someone who can take up this challenge as their primary responsibility (currently this is done by me as one of many other activities).
Notice that this is different from a learning and development budget or access to learning resources. This is about building a more opinionated belief of what are engineering best practices and building mechanisms within the DNA of the engineering team so that every engineer is able to implement engineering best practices.
We are currently at a very nascent stage of this journey. So far we have taken inspiration from Beyond Legacy Code and Refactoring: Improving the Design of Existing Code to start implementing practices of TDD, Refactoring as a part of regular feature work, and pair programming. We have also developed a PR (or Merge Request in our case) evaluation framework that helps an engineer understand how well their PRs are and where they can improve.
A senior engineer taking on an Engineering Excellence Lead role owns the above challenge. They help take the entire engineering team towards best practices as agreed by the team. This role exposes the senior software engineer to several interesting aspects:
- Empirical academic research on engineering best practices.
- Practices advocated by respected engineers and domain experts.
- Challenges of helping a large team change their habits.
- Conducting in-house (probably non-scientific) experiments on different practices and processes.
A senior engineer taking on this role will require additional skills of organizational management and experimentation to do their job well.
The Individual Contributor Role
The individual contributor role is the one where a senior software engineer focuses on identifying and solving the hardest technical problems the company faces. As a result those playing the individual contributor role spend 100% of their time doing active development.
In terms of organizational responsibility, even though this seems like the least impactful role one can have, we believe that senior software engineers can make significant and long-lasting impact playing this role. When a software is designed and built, it stays on for years and depending on the scope, can affect tens or hundreds of engineers during its lifetime. By identifying parts of software that will have bigger impact and ensuring high quality in those parts senior software engineers contribute by saving days and months of engineering time. This is something that none of the other roles can achieve. This is what makes senior software engineers playing individual contributor roles equally valuable as all other roles at Up Learn.
So there you have it. These are the four roles we see senior engineers take on at Up Learn. One way to slice these roles is that the tech lead and individual contributor roles focus more on the technology/product, while engineering managers and engineering excellence leads focus more on the engineers themselves. That said they still all do active development and thus contribute to the technology/product.