I was a software development engineer at Amazon Web Services for 6 years. I started as an intern. I grew to be a team lead for various teams and projects.
During my time at AWS, I directly mentored over a dozen junior software engineers. I indirectly mentored others as a course instructor and technical reviewer.
I recently left AWS to be an independent freelancer and entrepreneur.
Since stepping back from full-time employment, I've taken some time to reflect on my journey. I had my fair share of success. But it wasn't all sunshine and roses.
I made many mistakes along the way. I'm taking this opportunity to share several, and how I corrected them. Hopefully this reflection will be insightful to other developers out there.
Here are 5 mistakes I made as a junior software engineer.
1. As a junior software engineer, I had entitlement.
My first few projects weren't cutting edge. They weren't on the latest and greatest tech stack. I considered myself underutilized, and didn’t take work seriously. In short, I was entitled.
I fixed this by embracing my role. I started to see the business value and impact of the projects I was working on. Whether my software had millions of customers, or just one.
I decided that if I was going to write code, it would be the best code I could produce. No matter how small the project.
2. As a junior software engineer, I competed with teammates.
I'd focus on minutiae in code reviews. I'd try to one-up them in design discussions.
This was a horrible strategy for building long-term relationships.
I fixed this by caring genuinely about the success of my teammates. I started being pragmatic, not a perfectionist. I started celebrating their wins and supporting them in their losses.
After all, we’re on the same team.
3. As a junior software engineer, I was timid to talk about a promotion.
I thought asking for a promotion was selfish. I thought that if I did good work, it'd come to me eventually. So I didn’t ask.
I fixed this by being transparent about my career goals and aspirations. I started to have uncomfortable conversations with my manager. I came to learn that such conversations about career growth can be both healthy and constructive.
The transparency allowed me to a) identify next-level gaps, b) prioritize work to cover those gaps, and c) measure and document the impact of my work. In doing so, I seized promotion opportunities.
4. As a junior software engineer, I was content to misunderstand.
During complex system design meetings, I zoned out. During daily standup meetings, I barely listened to what my teammates were working on.
I wasn't trying to be rude. My immediate tasks were hard enough — so I mentally filtered out anything that I didn't understand, because it didn't directly impact my day-to-day. But I grew to regret this whenever I went on call, or had to maintain my teammate's code or component.
I fixed this with active listening and clarifying follow up questions. I sought to pay attention, and piece together the puzzle over time. I sought to understand every conversation, and I eventually did. This gave me a foundation of understanding whenever I had to debug or work with unfamiliar code.
5. As a junior software engineer, I was quick to blame others.
If something broke in production, it was "not my fault." Or, "not my code." This blinded me from working with the team to learn from problems that caused customer impact.
I fixed this by ideating and participating in team-level process improvements, instead of blaming individuals. It helped me improve my team's ability to prevent, detect and mitigate flaws. More importantly, it lead to a healthier team environment.
So, there you have it!
5 mistakes I made as a junior software engineer.
If I'd learned to correct these sooner, I think I would've leveled up faster, and built stronger relationships with those around me.
I hope this helps you to recognize and avoid them. 🔹
Like this article?
It started on my Twitter. Follow me for more! Here's an example of what to expect: