Junior-to-mid developer progression
career
In my career, I saw “senior” developers with less than one year of professional experience. I am unsure if I fully trust that they are seniors; let’s not discuss those. It is taken for granted that your career progresses over time, but it is still possible to have some level of control over your progress. If you are a junior developer at the moment, you do not need to wait for two years before even thinking about progression. It is all in your hands. Even better, at the beginning of the career you usually see the biggest salary increase in short periods. Noice motivation to get there sooner!
Usually, all software developers are split into four levels: junior, mid (or just developer), senior, and lead. They all differ based on the years of experience and the complexity of the tasks they are expected to perform.
Junior
A junior title is granted to someone who recently started and has up to 2 years of experience within the industry. As a developer, they know how to write software.
Day-to-day tasks involve writing and debugging software and solving minor troubleshooting issues. It is expected that they will need support with their assignments.
Junior developers generally focus only on coding and the task at hand. Their mindset is to make the code work. Often, working code and good code are considered the same.
During work, they can ask many questions about code, most of which are related to implementation details.
Mid-level
A mid-level developer has at least 2 to 4 years of experience. They have mastered learning development skills and have some in-depth knowledge in some areas of application development (e.g., backend or frontend).
They are perfectly capable of working on a task alone or with a team or even supervising a junior developer. It is not expected that mid-level developers will design solutions; they just perform tasks. They can also simplify more complicated tasks by breaking them down and closely reviewing any complex code structures that need improvement.
The most crucial difference is that mid-level developers start asking the right questions when it comes to their relatively routine tasks or area of expertise, challenging the proposed solution.
Now, how to remove the “junior” from a developer’s title?
First of all, junior developers must go through the whole development cycle at least a couple of times. As a junior developer, you need to understand the process - how new features are defined and designed, how they are implemented and tested, and finally, how they are delivered to customers. This overview will give you knowledge of possible pitfalls in the process and what you might be more interested in.
When it comes to writing code, you should learn how to write simple code. You need to think about the maintainability of the code. There is a nice joke about this - write the code as if the next person reading it is a brutal maniac who knows where you live. You should also learn how to debug efficiently. Adding console.log(“here”) is one way, but it is much better if you understand what’s going on in your application and add this log in the right place.
An excellent exercise could be to try and debug your own code mentally. It should not be a problem for you to explain each statement. And then to try and review this code as a Pull Request. What can be improved or cleaned? Maybe some corner cases should be added or checked?
Now the prominent part. You need to learn everything. There will be a lot of acronyms, expressions, and practices. Things like YAGNI, canary deployments, and “sure, we will fix those E2E tests next sprint!”. The best approach would be to ask for clarifications on the spot. If it is not possible, you can write it down somewhere and do your own research. And then confirm if you got it right. You need to learn how to learn. Mid-level developers often specialize in one area too, so you can pick what gives you more joy and focus on that.
And finally, collect and appreciate feedback that is given to you. When someone suggests you change something in your code, consider it and maybe act on this suggestion. When you implement the advice, it will be a good idea to share back how it worked. It could spark a great conversation on the reasons and benefits of a new approach.
The last thing I wanted to touch on is internal promotion versus company jumping. Unfortunately, career progression inside one company often is not that fast; it is much easier and more beneficial from a money perspective to look for career advancement in the market. It is a pity when you started in a company and learned a lot from the team, but it cannot support your growth (especially with all headhunters on LinkedIn begging you to send your CV every day). I agree that you and your family must be the first priority, just be careful and do not change jobs too often. It will not look good if you jump every few months; for future career progression, you will need to show dedication and stability. If you want to try and pursue a promotion in your current company, do not hesitate to speak openly about it. Bring this topic during 1-1 with your manager and ask him what you can do. Also, do the homework and research requirements in the job descriptions for a mid-level developer. Compare yourself to them and make a plan of your own that will get you to this level.