Reflections of a Software Engineer
March, 21, 2023
Software Engineer is a pretty broad term. You can use this term to generally describe anyone working on software development in the tech industry. The title differences between junior, mid-level, senior, staff, etc. really only make sense to those in the industry. So what I mean for my career that I was a Software Engineer from X date to Y date, means I was a mid-level Software Engineer in that time period.
A mid-level engineer's abilities are supposed to be comfortable writing code with only a little bit of hand-holding from a more senior engineer. You should also be able to have a pretty decent code quality output. In short, let's say that you are given some requirements that are all spelled out for you and all you need to do is implement. You will probably have several questions for a tech lead or senior engineer but you would typically know what you need to do. You're not expected to lead or innovate, just get your work done. It's possible to stay at this level for a long time. Typically you'll be in this role for at least a couple years while you learn what it takes to become a Senior engineer - getting better at working with ambiguous tasks, working with cross-functional teams, high code quality, able to work more independently, great communication skills etc.
So, what did you do?
I was a mid-level for about 3 full years. I think that the typical range that people stay in this role is from 3-5 years. My experience spans 3 different companies, and of course, this makes it even trickier to secure a promotion as you have to keep proving yourself over and over. Besides that, I didn't truly feel like I deserved the promotion until my 2.5 year as a mid-level so I think the timing worked out well for me.
Anyways, in this role, I was able to work on projects with varying levels of difficulty. I had the ability to be an 'owner' where you become the go-to person with knowledge about a feature/project. With some of the earlier projects, I made mistakes. Quite a few, and they really show on the engineering side even if the project does wind up as a success. Eventually I did get better and made less mistakes. But, what ended up hindering me the most was not being confident and firm on my knowledge. I could really do well on what I owned, but how do I also simultaneously think big picture. How can I convince others on my designs, approaches, and opinions? My progress got hindered a bit because my first company went under due to the COVID-19 pandemic, so I had to start over at a new place.
At this next place, my second company, I was doing pretty well. I was learning a lot and getting along with coworkers. However, I got really stuck at one point because I was working with someone who had a really strong personality. While the person meant well, their communication was somewhat aggressive. I am not combative (at work hehe) and so would try to play the neutral card and just defer to what that individual would say. This happened when I was almost 2 years into this role. I think that the company helped me grow in my career by owning the engineering for an entire division, but I felt like I wasn't supported enough by my team to help me do better or even achieve the next role. It's part of the reason why I ended up switching companies again and starting all over. I knew that working up to the next promotion was going to take a bit longer but getting out of my current situation had more importance. Looking back, switching companies proved to be the best decision.
The Changeup
Now into this next company, my third overall, I came out of the gate swinging. I started touching code in my first few days of being there, and was leveraging a ton of my technical knowledge from my first company. But, I was still make mistakes here and there. Here's the story of how things started to change. I set up a meeting with my tech lead to ask what sort of tasks I need to do to boost my case to be promoted. The tech lead misunderstood what I was asking though. The tech lead thought I was asking for feedback on my performance and gave me some advice that I should try to slow down in my work. Slow down? At this point, when I finished my assigned work early, I picked up more and tried to complete it too. While the wide variety of work expanded my knowledge, I was still making small mistakes here and there which all add up, and seems like the tech lead took note. Well, this piece of advice turned out to be the turning point in my career. Instead of me thinking "I need to complete a high volume of work to shine", my perspective changed to "I need to do everything with a high quality of output first. Volume will always be secondary to this". From that point on, my work improved and many coworkers took point. I was still myself by learning and absorbing, but me slowing myself down to be detail-oriented and making sure my output was high quality, this was the turning point in building my case to become a Senior engineer. I am now a Senior engineer and this is one of a few factors that went into helping me achieve the next level. It's just so interesting looking back and realizing that you cannot fast-track some things. Some things just organically happen.