Welcome back to The Modern Software Developer. This month’s issue was inspired by a recent coaching client trying to define their level in the industry. One of their questions was, “How do you define a mid-level developer…?” It’s a good question that led me to think about the role a little deeper, reflect on the 100s of mid-level developers I’ve worked with over the years and produce this issue, “Avoiding The Classic Mid-Level Developer Trap”…
Introduction
There are many levels in software development, with the Mid-Level Developer being the most vague. This can lead many developers to fall into what I call The Mid-Level Developer Trap, which can cause them to lose focus, become demotivated, stop learning and growing, and ultimately end up unhappy in their job while just going through the motions, letting life pass them by.
I’ve seen it a lot and done a little bit too…
I’ve worked at almost every level in the industry during my career, and I’ve worked with countless developers, many of them were what we call mid-level.
Of course, not all job titles will include the words mid-level; it is implied by the lack of “Apprentice”, “Junior”, “Senior”, or other such words to that effect.
If your job title is just “Software Developer” or “Software Engineer”, you’re mid-level.
But that’s not much of a helpful definition, now is it?
Defining The Mid-Level Developer
Let’s start simple. A Mid-Level Developer has progressed beyond that junior status and hasn’t yet moved to senior status…
Again, probably not that helpful, but we’ve narrowed it down a little.
What does it mean to have progressed beyond junior status? First and foremost, “Junior” will be dropped from your title, but let’s take it a little further.
Progressing beyond junior status suggests that you have acquired some solid experience with your tech stack and are skilled enough to be somewhat self-sufficient. I’m not going to put a number of years on it as I don’t find that useful at all.
You’ve gone through a pretty steep learning curve, and that’s something to be proud of.
You’ll probably still harbour doubts about your abilities and knowledge, but that’s perfectly natural.
Broadly speaking, as a Mid-Level Developer:
👉 You have a greater awareness of the features and capabilities of your current tech stack.
👉 You can research and find answers to problems you don’t know the answers to.
👉 You’re confident enough to ask for help when needed, but you’ll already have explored several options.
👉 You’ve likely picked up a good amount of domain knowledge (although you don’t miraculously go back to junior if you change domain).
👉 You’ll probably get a little more opportunity for focused coding.
👉 You’ll likely be able to rattle through various features unassisted.
On the flip side, you are unlikely to have any significant responsibility.
👉 You’re probably not leading on projects
👉 You’re probably not shaping team processes
👉 You probably aren’t mentoring junior teammates
👉 You’re probably not contributing significantly to code reviews
👉 You’re probably not shaping patterns and coding standards for your team
👉 You’re probably not thinking bigger picture or contributing to architecture decisions
👉 You’re probably not considering Architecture, Resilience, Observability, Fault Tolerance or Scalability for your application.
And that is ok… you’re a Mid-Level Developer.
Avoiding The Classic Mid-Level Developer Trap: Complacency and Stagnation
When you don’t recognise the privilege of your Mid-Level Developer role, you might fall into The Mid-Level Developer Trap.
I’ve seen it countless times, and I’ve been there myself.
You have the competence to get on with your job, and you’ve gained enough knowledge about the domain and product that you don’t encounter anything too challenging… You might even think it’s pretty easy…
You don’t have the added responsibility, stress and pressure that comes with more senior roles…
To a certain degree, the pressure is off…
For some developers, this can lead to them sitting back and spinning their wheels. They become complacent and stop learning new skills…
It can go even further; they can stop focusing on personal development and even neglect their health.
Sooner or later, they start to de-skill, and their motivation takes a dive, along with their productivity and morale.
The longer it goes on, the more trapped they feel because they don’t think their skills are up to date to allow them to get another job… and they don’t really want another job because this one is easy…
This can lead to personal and professional stagnation, not to mention poor mental and physical health…
The Privilege of Being A Mid-Level Developer
I’m guessing that you’ve never heard anyone describe the Mid-Level Developer role as being a privileged position, but that is how I see it.
At this point in your career, you have a great opportunity. You have enough technical knowledge to do your job mostly without assistance, and have very little responsibility or the stress and pressure that come with it.
It’s an ideal time in your career to take stock, take advantage of the fact that you’re not under immense pressure and start plotting your path forward.
You probably have more time as a Mid-Level Developer than at any other point, so use it wisely.
How you spend this time will define you as a person and your career going forward.
A Holistic Approach to Growth
Like it or not, you, as a person, are the absolute foundation of your career. Your physical health, mental health and your mindset will drive everything else you achieve… or don’t…
This is a great time to start forming beneficial habits for your mind and body.
👉 Consider taking up mindfulness
👉 Consider starting a regular exercise routine
👉 Consider researching how to improve your mindset.
Your mind and body are crucial for sustained personal and professional success.
Technical Skills Enhancement
If you want to progress in your career in software development, then there are, of course, technical aspects you’ll want to learn.
You can start with the list above about what you’re probably not doing, such as Resilience, Observability, Architecture and Scalability and use them to start a tech skills audit to determine what you need to know and how you want to prioritise them.
Then you can start to look out for opportunities to go on courses, and attend workshops or conferences that are relevant to your desired skills.
You can engage in the conversations of more senior people around you and seek their guidance and feedback.
For an optimal approach, seek a mentor or coach to help you define what you want to work towards, offer support and provide accountability.
Guille Ojeda’s book - Node.js on AWS - From Zero to Highly Available and Scalable Hero is a great place to start to get to grips with some of these higher level technical concepts in a simple and concise way.
Guille is a highly experienced Cloud Architecture Consultant. In this book, he covers High Availability, Scalability, Logging and Monitoring, Caching and Content Delivery, CI/CD and more, using Node.js on AWS.
As a Modern Software Developer, you can get 40% off by using discount code RDCOACHED 👍
Soft Skills Development
In addition to your technical skills, you’ll soon realise that your soft skills play a huge role in software development. This is an ideal time in your career to determine what you could improve on and define a plan to take it forward.
As you progress through your career, one of the essential skills you’ll need to develop will be communication. If you’re anything like I was as a Mid-Level Developer, you’ll be uncomfortable recognising this and even more so trying to do something about it.
But believe me, it’s crucial to your success, and you’ll never regret working on your communication skills.
One thing I did, which was super out of my comfort zone, was to join a speaking club. It gave me the confidence boost I needed as an introvert, and the encouragement and support was fantastic.
Other such skills you might want to work on are:
👉 Working on your time management
👉 Becoming an excellent team player
👉 Giving and receiving feedback
👉 Problem-solving abilities
👉 Effective collaboration
👉 Presentation skills
👉 Showing empathy
Leadership
An extension to improving your soft skills is venturing into leadership. The best software developers show leadership regardless of their level or title.
My first tip for this is to know yourself.
👉 What do you want?
👉 What do you stand for?
👉 What kind of leader do you want to be?
👉 What are your strengths and weaknesses?
To help with this, it’s a great idea to define your core values, which I do with all my coaching clients - Self-leadership is the start of true leadership.
Then start reading some leadership books. They come in all shapes and sizes; getting several perspectives on the topic is super valuable.
In the workplace, you can start to take the initiative for what needs doing and get involved in decision-making processes by offering your perspective. Perhaps take ownership of something small and see where it leads.
In my experience, leadership and communication skills are a massive differentiator from one developer to the next and really make you stand out.
The Future: Putting in the Work
The work you put into yourself and your career during your Mid-Level Developer phase can be a rock-solid foundation for an extraordinary career if you choose to take the opportunity.
When you start to put in the work at this stage and slowly build your mindset, tech skills, soft skills and leadership skills, you’ll build credibility and trust too, which will make transitioning into a senior role or even a leadership role so much smoother.
Even better than that, you’ll be an excellent Mid-Level Developer, setting the standard and setting an example for others to follow.
The Mid-Level Developer role can be pretty broad and vary from company to company.
Just remember, Rome wasn’t built in a day, and you don’t have to become a senior or a leader overnight.
Plot your course and use this phase of your career to take small but meaningful steps towards your goals.
Final Thoughts
As a Mid-Level Developer, you can sit back, relax and spin your wheels, or you can recognise the privileged position you find yourself in and take full advantage of it.
Which path you choose will significantly impact your career and your life.
My recommendation is, of course, to see this phase of your career as an opportunity to create a solid foundation for unparalleled growth.
There hasn’t been and won’t be a better time in your career to do it.
Remember
It's not selfish to put yourself first; there's nothing more important than your own wellbeing!
Know someone that might find this useful? Do them a favour and share it with them.
Until next time...
Stumbled across this article by chance, and I am so glad that I did!
Currently working as a Junior Data Engineer, but I really appreciated how you laid out the expectations and outlined what differentiates a Mid-Level from a Junior, something I am trying to bridge the gap between.
Superb. This article is something to get at hand in your pocket and read it every time you want to progress in something. You can replace mid-level for junior, senior or any other existing title. I believe it also allows anybody to fight against the impostor syndrome.
This describes what you can do by yourself that is really important but, you should care about external factors as well, for example, if there is room for another senior dev, or the project budget allows for it, etc. I would like to read you an article about this if possible. What do you think?