When you start your career as a developer, you already know that you need a few years of experience and upskilling in coding to become a mid-level developer. As a bit advanced programmer, sometimes you probably think that you can rapidly skip the gap between mid-level and senior positions. But is it like that?
Is there a thin line between mid-level and senior developers?
Maybe it looks like that, but a lot more is needed to survive and you will probably run into some difficulties you need to deal with on that road.
There are some indicators based on which we can say a developer is a junior, medior or senior: years of experience, how they write code, how they approach the problem, soft skills, mentoring experience, etc. A developer’s career consists of different phases and you have to walk through each of them in order to reach the senior level.
Deeply digging into a problem, understanding a customer’s problems, being a mentor to younger colleagues - these are just some of the requirements that an experienced developer needs to fulfill.
But what is the difference between mid-level and senior developers? Is it easy to jump from one level to another? The best answers always come from someone who has already been on that road - that’s why we asked our colleague Milan Radeta about this topic. We also talked about what he had to change about himself and asked for some advice to mid-level developers.
01. Q: When can you call yourself a medior and when a senior developer?
A: I'd say you're a medior developer when you perform most of the development tasks by yourself, without much help from others. It is also very important to work efficiently in at least 2 programming languages/technologies and not only that: to have knowledge of the inner workings of technologies you're using and advanced patterns used in technologies you're using.
As medior developer you also have to:
- give correct estimates for the work you're doing, aware of potential problems and impediments
- use debugging tools efficiently to find the cause of issues
- analyze, understand and navigate through existing code, without much hardship
Along with these medior developer characteristics, a senior developer:
- analyzes and identifies potential bottlenecks of the application
- thinks of, researches, and tests several solutions (code, libraries, packages) to a problem, comparing the results and choosing the most promising one
- mentors team and non-team members in advanced programming, software, analytical, organizational and soft skills
- takes initiative to hold workshops and knowledge sharing sessions
- treats each colleague as an individual developer, taking into account what are developer's strong and weak points and how to use and improve them
- has experience with and advanced knowledge of several (5+) different technologies
- recognizes patterns between different technologies
- works within limits of technology, but intelligently uses and incorporates ideas from other technologies
- has higher-level knowledge of architectural and design patterns, algorithms, and programming principles which he/she incorporates into work, regardless of technology
- analyzes and solves logical problems in a language-agnostic way first, relying on technology features afterward
- instructs his team members on how to solve particular tasks and what should be included in the estimation, regardless of the assignees
- expands the knowledge and keeps it up to date by reading and watching software development articles, blogs and videos
- experiments with and researches new technologies, thus expanding his skills
- refactors code along the way, thus making it cleaner and easier to maintain and understand
- develops basic and advanced DevOps skills
- communicates with project managers on how to improve sprints and organization
- communicates with sysadmins on how to improve performance and lessen memory consumption
- sets up environments with SysAdmins
02. Q: If you want to be a senior, you need to be a master of soft skills. Is that too hard?
A: I wouldn't say you need to be a master, nor that it is too hard. But you do have to communicate with everybody - team, project managers and clients.
When you experience difficult situations and hardships in different companies, projects and teams during your junior and medior years, it's not difficult to recognize those situations as a senior developer. In those cases, you need to take necessary precautions and prepare the field by communicating with your team and project managers, instructing them what potential problems may pop up and how they should be handled, whether it's a problem with code, organization, clients, or other developers.
You can also propose and, if possible, implement changes that will bypass those problems in the future, in consultation with everybody in the team and potentially other senior colleagues on other projects.
What is important is that your team can rely on your help and mentorship when it's needed. If they don't ask for it, ask them about their progress and current situation every now and then. Maybe even at the end of each workday. However, if the tension is starting to rise because of miscommunication, impediments, working longer than estimated, as a senior developer you need to be ready to:
- stand in front of your team and speak on their behalf to prevent other members from taking hits from clients
- talk with the team afterward, to see what can be improved, whether on their or your side
- have individual conversations with each team member, maybe with the presence of PM, HR or other senior colleagues
In short, you need to be ready to be your team's support and mentor, in both software developer and human terms.
03. Q: What did you have to change about yourself on this road from mid-level to senior dev?
A: I had to stop focusing solely on my tasks and projects, to start helping others with their tasks and finish them on time. I also had to start speaking my mind if I notice potential and current problems regarding the team and/or project, as well as take initiative in providing potential solutions, too.
04. Q: Is it important to understand the business side on this road?
A: It helps, but it's not necessary. The software development knowledge, sharing and improvement of it should be your prerogative. The business side is more important if you have a C-level role (CEO, CTO, etc.) and you'll certainly get insight into the business side of things during communication with other C-level colleagues.
05. Q: What advice would you give to a five-year-younger you?
A: If you're unhappy at your work, try to fix it yourself. If you can't, ask others at work for help. If nothing and/or no one can and/or want to fix it, leave and find another job. Learn, improve and you won't get stuck.
Seeing the big picture and constantly improving is that magnificent ace up in your sleeve if you want to dig more on that road between a medior and senior developer. Is there an end? It’s never the end if you don’t want to be stuck in your career.
And don’t try to skip this road. The main thing is to enjoy the journey.
If you want to change something on this road, keep in mind that we are looking for medior and senior developers, and we are ready to support you on this road.