Transitioning from a Junior / Mid Level Software Engineer to a Senior Software Engineer
Published: 2020-02-14 05:19:11

---
title: Transitioning from a Junior / Mid Level Software Engineer to a Senior Software Engineer
published: true
description: 
tags: 
---

## Why I Am Writing This
When I look back at my development journey, I think about how much I thought I knew but actually was completely wrong about.  I have made a lot of mistakes and while those mistakes helped me get to where I am now, I think about my struggles and am writing this blog in hopes that others find an easier path.  I will be outlining my tips for going from a junior / mid level engineer to becoming a senior level engineer. 
 
*It is worth noting that I am lumping both junior and mid level stages of the career together not because there is no difference between the two, but more because I believe the jump to get from mid to senior level is more involved.*

This is the second part of a previous blog I wrote [here](https://dev.to/paulmojicatech/the-untraditional-dev-2jdi).

I will be writing another blog on my tips for going from senior level to becoming an architect / lead on a team.  Without further ado, here are my tips

## Find a good mentor
I think that this is one of the most important tips I can give to getting to the next level of your career.  A mentor can be in the form of a more experienced dev at your company or another dev outside of your organization.  You will want to look for someone that is patient and let's you both fail and succeed on your own (and whatever the outcome, they will explain what they liked and did not like about your code).  You will want someone that questions why you made the decisions you made.  This will help you think about being deliberate in writing your code.  If you don't have someone in your organization that you feel comfortable with asking, other good places to find mentors are at MeetUps and Twitter.

## Work on Side Projects
This somewhat goes hand in hand with finding a good mentor.  To me, becoming a good golfer and becoming a good developer are similar in that a positive outcome isn't always an indicator that you were successful.  In golf, a novice believes s/he failed because the ball did not go where s/he wanted it to go.  A more advanced golfer focuses more on the swing that caused the ball to not go where it was supposed to.  Similarly, getting code to work as expected is not necessarily an indication that you have written good code.  A senior level developer thinks about if their code is maintainable and easy to reason about.  Does it follow industry best practices (DRY, SOLID, extensible)? .  Working on side projects help you get practice in honing your craft and think about these things to later discuss with your mentor.

## Always Keep Learning
This not only applies to junior / mid level developers, but it also applies to all levels.  Technology is constantly evolving and moves very quickly.  You must keep abreast on trends in the industry, even if just at 10,000 level view.  Some places that I have found helpful are listening to podcasts and taking online courses (Pluralsight, Udemy, and YouTube are great resources).

## Focus on the Entire Stack
This is one that I personally believe holds true, though I am not sure if it is an opinion shared by others.  I believe that at a junior / mid level developer, you should focus more on the entire stack, front end, back end, and database level development.  This lets you see different paradigms between the different areas on software development that will help you make decisions when you become more specialized later on in your career.  For example, if you are a web developer, the work you did earlier in your career getting communication to work between front end and back end could help you in making decisions on caching strategies in the future.  

## Know your Tools and Become a Master Debugger
This is extremely important in learning how to code.  Using the features in the debugger like stepping through the call stack, inspecting the DOM (for web developers), reading .dmp files (for backend developers), etc help you not only resolve issues faster but also help you think about the logic you are writing to implement a feature.

## Read source code
This is one that I found extremely helpful.  I cannot tell you how much I learned from reading through code reviews from more senior team members on my team.  Seeing how they wrote their code, understanding the language features they were using that I was unaware of, and recognizing design patterns helped shape my own coding style.  

I hope this post has helped some of you in your development journey.  I love what I do and I could not have picked a better way to earn a living.  

[Follow me on Twitter](https://twitter.com/paulmojicatech)