On Becoming a Senior Engineer

I turn 36 tomorrow. As lame as it may be, I feel a lot better about myself this birthday than last for one reason: I just got promoted to senior software engineer.

Getting here has been a hard and sometimes confusing journey. It took me a long time to find my path, and once I settled on software engineering, I wanted to move up really quickly. Yes, you can learn to code at any age, but it's still uncomfortable to be a junior engineer in your 30's. What I learned over the past 3 years, is that professional growth is not linear and technical development isn't something you can just cram for.

After a successful first year as a software developer, I was confident I'd quickly move up to senior engineer. I had plans to either continue learning about data science or pick up elasticsearch. I had my generalist skills from my years in the workforce prior to becoming a developer, and I naively thought I could simply conquer the technical skills.

Instead, I quickly lost my first year momentum. My family moved into a new house, and I lost that extra thirty minutes in the morning before I felt work "started". My daughter was officially done napping (yes, at 2 years). I quit my early morning Python work and didn't seek out something to replace it.

I focused on doing my job. I learned a lot about background jobs and databases and worked on API's. I carved a space as a domain expert on some of our product offerings. Around two years on the job, I knew I wasn't at a senior level yet, but began to wonder, how long would it take to get there?

I was actually still a good ways off. I both needed to improve my code design and become a stronger leader on the team.

On the technical side, I was lucky to work with a couple of experienced staff engineers who really challenged me. I often felt uncomfortable and insecure working with them, but it helped me grow. By not allowing me to take the easy way out, they forced me to step back and reason through my design choices. Talking with them through designs and what classes were responsible for taught me so much.

Code design isn't like learning a concrete skill; I think you can only accelerate your progress on this front so far. You learn by observation, by guidance, by practice, and honestly, by time. You suffer the pain of poor design choices. For me, something clicked when I saw the difference between my prior work and how extensible these new projects were.

In addition to my technical development, I also needed a reality check about my impact on the team. I'd noticed other people scoping out initiatives and scheduling planning meetings with product managers that I didn't quite see as within my lane. When I asked my manager about what differentiated our fairly recently minted senior developers from me, I was surprised to hear him mention many leadership activities. I thought that I had these skills from years working in other roles and from being a voice on cross-functional projects, but I was actually fairly passive within the engineering team. I wasn't driving projects, doing presentations, or mentoring.

My lack of direct license to lead had frozen my growth. I didn't have a title, and no one had told me to lead, so I only spoke up in cases in which I felt really confident (often, non-technical decisions). In order to grow and support my team, I had to take a leap of faith and lean into asserting myself more.

I started advocating for refactoring time before new initiatives and found that later extensions were not as difficult to make. I led some engineering initiatives, gave technical presentations, and began more active mentoring. After time and committing myself to speak up, I got a lot closer to that senior milestone.

I had a strong review the first quarter of 2020 and felt it was time to really home in on a promotion. I asked my manager about the career ladder our VP of engineering had developed. While it hadn't been formalized or broadly disseminated, he agreed to share the framework with me and have us separately evaluate me on the criteria.

When I went through it, I was a little shocked. I was giving myself 5(of 10) or higher on almost every metric.

Once the evaluation was complete, it became clear to my managers (I switched managers during this time), that I warranted a promotion. I was fortunate to get my promotion approved relatively quickly.

Moving into a senior role is a little scary. By nature, you’re held to a higher standard. You help steer the direction of the team, and you need to be thoughtful about the choices you make.

That doesn’t mean you can’t mistakes or be wrong. It also doesn’t mean you’re done learning. I seek out advice a lot more on my current project than I did in the past. For the project to succeed, it’s critical that the code and modeling be thoughtful and well structured, so I need insight from domain experts and gut checks from engineers more senior.

I came at this career relatively late in life, and sometimes it's hard to accept slow progress. I'm glad to reach this milestone and finally feel some space to not need to cram or strive quite so hard. For now, I can focus on being thoughtful and supportive and hopefully, a really effective senior engineer.