No Lone Wolves: What It Really Takes to Get to the Top of Engineering
I was recently promoted to a Senior Staff position at Box, which has caused me to reflect on my various roles and how my needed skill set has changed with those roles. When I became a manager, it was obvious that my job was changing — now you’re responsible for people and their careers, not just technical tasks. However, my job has also changed as I advanced on the individual contributor track. Unlike what I thought originally, a very senior engineer is almost never someone who is just amazing at coding and can pound out a large feature in an hour. Instead, even though the jobs are still different, I’ve found that in many ways the skills required for a very senior engineer are actually very similar to the skills needed for manager roles.
Individual engineering titles and where the bars are may vary quite a bit between different companies, but the overall progression is largely similar. When you’re in the more entry level roles, your advancement is largely focused around becoming more independent and gaining additional technical skills and knowledge. From there, more technical depth is still important, but to a larger and larger extent, advancing becomes related to many skills that are totally unrelated to technical ability. Even on the individual contributor track, senior engineers are expected to have the ability to think about things from a very high level in addition to specifics, they should be strong influencers and direction setters, they should exercise diplomacy and they should be growing everyone around them.
Big Picture Thinker
Senior engineers are expected to be able to understand things from both the nitty-gritty details level but also have an eye toward the big picture. For example, if we had a task around code quality, we would expect an entry level engineer to fix any problems in their team’s code. We would expect a middle career engineer to not only do that but to also think about how to prevent future problems by adding something to automatically check for quality in the pipeline (or something similar). Meanwhile, we would expect a senior engineer to not only find a way to automatically check, but find a way to make that more generalizable, super easy to adopt and encourage other teams to adopt it. This applies to features as well, this is the difference between building a specific feature and thinking more largely about what problems we’re trying to solve and if they apply in other areas and trying to find super general ways to solve a customer problem that can be used over and over. Building less is more. The question for a senior engineer is never just how can I solve this problem. Instead, it’s how can I solve this problem as well as the future problem as well as any related problems and is this even a problem we should be solving? In addition, it’s about thinking about how things work together. When I am solving a problem, how do I not only solve that problem in the best way for my team, but also in the best way for all teams? How will my solution affect future architectures and interactions between features or teams? There are many more questions that are situation specific, but largely, this is about both keeping in mind the big picture and knowing how to incorporate it.
Influencer and Direction Setter
As I start to think bigger, many of these things may involve working with other teams. If I have the most amazing idea but can’t convince anyone else, it won’t happen. Similarly, if I have an initiative that I want to promote across all of engineering, but am not good at communicating to large groups, no one will know about it. I obviously need to have good ideas, but once I have them, I also need to be able to clearly communicate those ideas and convince everyone around me of their value and merit. In addition to pushing individual ideas, I find that senior engineers can be most effective if they can also set a direction. This is related to thinking bigger. Not only should I be convincing my group of a single initiative, but all the priorities should be considered together. Where are we trying to go technically? Is there a cohesive vision? Is that vision something we have consensus on? Organizations will be most effective if everyone is aiming for the same north star.
As you and your team align on a single north star, in all likelihood, not everything can be done, which involves a lot of prioritization. On one side, you have whoever is getting woken up in the middle of the night when the service goes down telling you to only make changes to stabilize your service, meanwhile on the other side, you have someone from product asking you to add some great new feature and yet someone else from the business side asking you to cut costs for everything. Each of these options takes time, energy and sometimes are directly in conflict with each other. Being a senior engineer involves both understanding the priority of each area and knowing when to take a hard line. At the same time, you also need to keep everyone happy and not burn any bridges. It’s always easier to be firm on an objective without understanding the other view point or building report with your colleague arguing a differing view point. However, a career is never about getting your way on a single issue. You’re playing the long game — knowing when and how you should compromise in order to get your way when it does count is much more important than getting your way on any single issue. Also, by taking the time to fully understand and empathize with the other person can help you make sure you’re actually making the best decision possible. I’ve often found that I can get what I want accomplished by taking the time to understand where the other person is coming from and finding a way to align what I want with what they want.
Building relationships doesn’t just apply to you either. In order for your team to work effectively, they also need to have good working relationships with each other and with other teams. As a senior engineer, recognizing when there are issues and finding ways to bridge those can be fundamentally important to getting your team performing. If we can all put our energy into working together rather than working against each other, we can all be more productive.
Mentor and Coach
Along with being aware of dynamics between people and improving those, senior leaders should also be coaching and growing individuals around themselves as well. Some of this coaching and growing can be thought of in larger contexts (talks or blogs to teaching others), but often, this also includes working with people one on one. As others have framed it to me, I can have a much bigger impact if I can train other people to do my job. I still only have so many hours in the day to try to do all of the things I want to get done. If I can teach other people to do pieces of that, those people grow, but it also frees up my time to also grow. By prioritizing teaching others, I can actually help grow the entire organization and make all of us better — including myself. Not only that, but if I teach an engineer why and how to think about a problem instead of just telling them what to do, the next time something similar comes up, they’ll be able to do it on their own or possibly even teach someone else.
It’s All About Impact
Advancing on the technical track is all about increasing impact. If you really think about it, all of the roles and skills I’ve discussed are about how to have a larger impact. When you start out in engineering, you impact yourself and probably your scrum team. As you advance, this should be growing to larger and larger groups of people. You should be thinking about larger problems and the bigger picture to influence larger problems. You should be aligning larger groups of people and solving conflicts to get everyone working together as effectively as possible. You should also be finding ways to scale yourself through teaching others so that more can be accomplished than what a single person can do.
All of this isn’t to say that technical skills aren’t important. If I can lead a team but send them off in the wrong directions, we’re going to have problems. That said, I’ve seen many junior engineers put all of their effort into technical skills. Technical skills are still worth a lot of focus, but even on the individual contributor track, being a senior member of the technical staff is about being a leader and being a leader means thinking big, setting direction and growing everyone around you.