Cultivating Engineering Growth

How tenured engineers helped me along my path to senior engineering Investing in engineering growth is a cultural decision that can have an enormous impact on retention, happiness, and long-term company scalability. Senior engineers are a crucial component to cultivating engineering growth on any team. As someone who was recently promoted to senior engineer, this […]

How tenured engineers helped me along my path to senior engineering

Cultivating Engineering Growth

Investing in engineering growth is a cultural decision that can have an enormous impact on retention, happiness, and long-term company scalability. Senior engineers are a crucial component to cultivating engineering growth on any team.

As someone who was recently promoted to senior engineer, this journey is still fresh in my mind. Here are some ways that senior engineers have helped during my career path from junior to senior engineer.

Building Trust

My most valued relationships with senior engineers all have one thing in common – trust.

The very first step to building a culture of growth on your team is fostering trust amongst all team members, especially the junior engineers. When your teammates are comfortable asking “stupid questions”, making mistakes, and even failing, they will learn more quickly.

Share your own mistakes

How do you help others feel comfortable making mistakes? By being honest about your own experiences, especially your failures.

In my first job as a software engineer, I had weekly 1:1s with an engineer with decades of experience. He had built and sold a company to LinkedIn. His experience was so far beyond my own that following in his footsteps seemed completely unattainable. I was constantly nervous around him and worried about asking stupid questions (see: imposter syndrome).

This was unfortunate – the ability to ask questions is an engineer’s most valuable skill.

My false image of him as “all-knowing” was shattered when he shared a story about meeting one of the original creators of Netscape, Marc Andreessen, at a party in college. They got to chatting about the internet and its potential. This engineer told the creator of Netscape that, while the internet was very cool, it would never take off.

That story of him saying something so completely wrong was (1) very funny and (2) made me vastly more comfortable being wrong myself. While I was still somewhat nervous asking questions, this story splintered my incorrect view of him. It made him human. It made me more comfortable asking “stupid questions”.

Say “I don’t know, but here’s how we’ll find out”

When I first started at Gusto, I had very little experience working with senior engineers on a daily basis. I thought that any problem I worked on would be trivial to a senior engineer and that they would immediately have the answer.

After a day of struggling with a difficult ticket, I decided it was time to ask a senior engineer on my team for help. He dropped what he was doing, and we started pairing. I observed his investigation process as he learned more about the problem. He used methods I had not seen before to find the root cause of the bug.

I learned much more by watching my teammate investigate the problem than I would have if he’d immediately solved it without going through each step. Teaching how to debug, investigate, thoroughly think through code – this is the most valuable type of pairing for junior engineers. Going through this process with your teammates and being honest when you don’t immediately have an answer will continue to build trust on your team. Think “we do not have the answers, but we will find them together.”

Understanding some teammates have additional obstacles

Some teammates have additional obstacles.

My first job out of college was as a mechanical engineer. After two years, I quit due to sexism and sexual harassment. That experience set me up to go into every new job with a fear that my coworkers will immediately judge me as less competent and might even exclude me from meetings or important decisions. I felt I would need to work twice as hard to be respected.

After starting at Gusto, I had my first 1:1 with the most senior engineer on our team (a team of two white men, and now me). The same fear was there – “would my gender be a problem on this new team?” However, in an unexpected twist, it was something this senior engineer was thinking about as well.

During the 1:1, my new teammate acknowledged that our little team was seriously lacking in diversity. His exact wording was “I know we’re a team of white guys from the midwest.” He then assured me that he was happy I was joining the team, that they will really benefit from having some diverse perspectives, and that they were lucky to have me.

I can’t explain how far those few sentences went in terms of making me comfortable on this new team. From that reassurance, I knew he had spent time thinking about joining the team from my perspective. He was aware I might feel strange as the only woman on the team. Most importantly, I knew it mattered to him that I felt welcome and included. Several months later I was ingrained in the team and we had grown to include more engineers from under represented groups. The culture created by our manager and the senior engineers allowed me to shift my focus away from a fear of other people’s biases and towards learning while building cool software.

It’s important to note, not every engineer would want their other-ness to be called out in this way. While it helped me, it might not help others.

Underrepresented groups in tech have additional obstacles as engineers. You are not going to solve systemic sexism, racism or prejudice on your own, but you can do the work to help understand the additional obstacles your teammates face. You can bring that understanding into your relationships at work. Checkout the list of resources at the bottom of this article for easy ways to start learning more.

Providing Opportunity

Engineers cannot advance to more senior positions without projects that expand their comfort zone. Senior engineers are in a unique position to help junior engineers grow. Senior engineers have power on the team. They have influence over what work the team takes on and who works on those projects.

They also know where opportunity hot spots lie within the code. Every senior engineer I know has an unofficial back-of-their-mind list of projects they would like to see completed. They could partner on this work with a more junior engineer or even support their teammate to lead the project.

Understand their goals

Before you can provide an opportunity to grow, you must understand your teammate’s career goals. What are their short term goals – are they interested in learning more about a specific language, domain, or other skill? How about long term goals – do they want to stay technical, become a manager, or something else entirely? Once you understand what their goals are, you can keep an eye out for ways to get them involved with relevant projects.

Provide opportunity and support

I would not have been promoted to senior engineer at Gusto without this type of opportunity, supported by the senior engineers on my team. When I was working towards my senior engineering promotion, my manager identified that he needed more signal about my ability to take a poorly defined project and return results. This was frustrating as I believe is one of my strengths. However, even if I had displayed this skill at previous companies, I had not had the opportunity to do so at Gusto.

In this case, senior engineers and my manager worked together to create time and space for me to take the lead on a project to connect small businesses on Gusto with our Gusto Partners, skilled accountants and bookkeepers. My manager dreamed up the project idea and provided the necessary resources for me to make it happen. The most senior engineer on my team helped create separate work streams that allowed me to focus on this promotion case project while the rest of the team focused on our other OKRs. Another senior engineer on the team partnered with me on the project, working with me on a daily basis.

Without this project I would not have met the requirements for promotion and likely would have been passed over. I would have grown frustrated – I probably would have quit. This opportunity for growth gave me a chance to learn while proving my engineering abilities. In this scenario, my manager and the senior engineers not only helped me learn, they kept me at the company.

Rotate project lead

One of my favorite processes for promoting learning throughout the team is rotating the project lead. Project lead is the engineer responsible for the initial investigation into technical complexities, creating JIRA tickets, and ultimately ensuring the project is completed. The ability to investigate and plan a project is a crucial engineering skill. Taking turns supporting your teammates on their projects fosters a sense of camaraderie. This is an easy way to use your team process to provide growth opportunities for all teammates regardless of seniority.

Supporting teammates is your top priority

Unblocking

Sometimes being stuck on a particularly tricky bug is a learning opportunity, but other times it is just demoralizing. This is especially true for junior engineers working hard to prove themselves.

Being stuck does not exclusively mean being unable to debug a problem. There have been times I was blocked when considering trade offs related to best practices or architecture decisions. Some decisions are difficult to make without experience and can be made much more effectively with timely input from more tenured engineers.

As a senior engineer, you have the power to unblock your teammates. Supporting your team and keeping everyone unblocked should be a senior engineer’s top priority.

If you’re reading this and thinking, “This is impossible. If I were to follow this advice I would never get anything done” consider whether you are being properly supported as a senior engineer. You should be able to work as a senior engineer, spend significant heads down time on your own projects, while also making time to support the more junior engineers on your team. If this is not the case, do you need more senior engineers? Do you need more mid level engineers? An imbalance between time to support your more junior teammates and heads down time for yourself is a red flag that your team needs more midlevel and / or senior engineers.

Create time to learn

As engineers we are constantly learning. If the more junior engineers on your team see you taking the time to learn, to investigate code thoroughly, to read or attend conferences, they will feel comfortable doing the same.

At my first two jobs as a software engineer I had very little (and sometimes no) help from senior engineers. This led to an incorrect view of what it meant to be a senior engineer. I thought a more talented senior engineer was constantly producing work. Senior = faster. At Gusto I saw this was not exactly the case. Of course, the more senior engineers can build very quickly. This was not what made them better engineers. The senior engineers were taking time to learn new things, read about best practices, and discuss ideas.

It can be incredibly difficult to find time to learn at a company, especially at startups. There is so much pressure to constantly produce. However, I have seen that tenured engineers carve out time for themselves to be heads down, to learn and explore. The most talented engineers I know understand how they learn best and create that space for themselves.

Lead by example. If you take time every Friday to study or read articles, let your team know. If you need heads down time every week to dig into code related to long term projects, put it on your calendar. Tell your team what you’re doing. The more junior engineers on your team are building the skill of creating time to learn. Being transparent about how you make this possible for yourself is crucial to helping them create time to grow as well.

Real feedback

Feedback is hard, but it is the fastest way to learn what you are doing well and where you need to improve. Feedback from the senior engineers on a team carry an enormous amount of weight. One of my teammates still remembers feedback she received from one of the more senior engineers at our company. He left positive feedback on her PR for a refactor she completed. She remembers the PR, the project, and the exact words he said. As a senior engineer, your feedback has a huge impact.

It takes considerable time, effort, and emotional energy to provide real feedback, but it means the world to your teammates and will greatly impact their growth. These are some questions I ask myself before providing feedback for teammates.

  • Imagine the engineer at the next level – what qualities would she need in order to meet expectations at that level?
  • What would be missing from your team if this engineer left? Both technically and culturally.

While I am now a senior engineer myself, I know I have not perfectly followed every one of my own recommendations. Being a senior engineer is hard work and I am still learning myself. However, I do aspire to help my teammates in the same way other engineers have helped me.

This article is, of course, only half of the senior <> junior equation. In order for this relationship to work, junior engineers need to be curious, ask questions, and look for ways to learn and grow.

I consider it the responsibility of the senior engineer to set the culture at a company, on their team, and within relationships with their more junior teammates. These are the things that helped me on my journey to becoming a senior engineer. Do you have anything to add about ways senior engineers have helped you? I would love to hear about them in the comments below.

URG resources

This is not a comprehensive list – just a few resources to get you started.

Source: Gusto