The Evolution of a Software Engineer: From Medior to Senior

Josip Vojak
5 min readDec 13, 2022

In the world of software development, the terms “medior” and “senior” are commonly used to describe different levels of experience and expertise. But what do these terms mean exactly, and what sets a senior software engineer apart from a medior engineer? In this article, I will explore the key differences between these two roles, including their responsibilities, challenges, skills, and expertise.

Photo by Jason Goodman on Unsplash

Defining medior and senior software engineers:

  • A medior software engineer is someone who has a few years of experience in the field and a good understanding of software development principles.
  • A senior software engineer is someone with a high level of experience and expertise in the field.

Key differences between the two roles

I will try to break down the differences into four categories — responsibilities, challenges, skill & expertise, and varying criteria in different organizations. Each category will be explained from the medior and senior software engineer's point of view.

Responsibilities

Medior Software Engineer

  • Debugging and troubleshooting code
  • Writing unit tests and conducting code reviews
  • Collaborating with other team members on design and implementation decisions
  • Providing support and assistance to less experienced team members

Senior software engineers

  • Developing and implementing software architecture and design patterns
  • Leading development teams and managing project schedules
  • Providing technical guidance and mentorship to other team members
  • Working with stakeholders to define project requirements and prioritize tasks
  • Ensuring the successful delivery of complex software projects on time and within budget.
Photo by Nubelson Fernandes on Unsplash

Challenges

Medior software engineer

  • Keeping up with the latest technologies and best practices in the field
  • Working effectively in a team environment with other engineers who may have more experience
  • Managing their time and workload effectively to meet project deadlines and deliver high-quality code
  • Developing their skills and expertise to advance their careers and become senior software engineers
  • Medior software engineers may face challenges related to implementing new features and fixing complex bugs.

Senior software engineer

  • Balancing the needs of different stakeholders and ensuring that everyone’s priorities are aligned
  • Making high-level strategic decisions that impact the direction of the project and the organization
  • Leading and managing teams of engineers, including providing guidance and support to help them develop their skills and expertise
  • Dealing with complex technical challenges and finding innovative solutions to difficult problems.
Photo by KOBU Agency on Unsplash

Skills and expertise:

Medior software engineer

  • Experience with one or more programming languages and frameworks, such as Java, Python, or Node.js
  • Knowledge of software development principles, such as design patterns, data structures, and algorithms
  • Understanding of software testing and debugging techniques, including unit testing and code review
  • Ability to work effectively in a team environment, communicate with other team members, and collaborate on design and implementation decisions.
  • Experience with version control systems, such as Git or SVN, and the ability to manage code repositories and collaborate on projects with other team members
  • Knowledge of agile software development methodologies, such as Scrum or Kanban, and the ability to work effectively in an iterative, incremental development environment.

Senior software engineer

  • Extensive experience with a wide range of programming languages, frameworks, and technologies
  • Deep understanding of software architecture and design patterns, and the ability to apply them to complex systems
  • Strong leadership and management skills, including the ability to lead development teams and guide the technical direction of a project
  • Expertise in high-level problem-solving and strategic decision-making, and the ability to think critically and creatively to find innovative solutions to complex challenges.
  • Experience with continuous integration and deployment (CI/CD) tools and processes, and the ability to automate the build, test, and deployment of software applications
  • Knowledge of security and privacy best practices, and the ability to design and implement secure systems that protect sensitive data and comply with relevant regulations and standards.
Photo by Diana Polekhina on Unsplash

Varying criteria for what constitutes a senior software engineer

  • The criteria for what constitutes a senior software engineer can vary depending on the company or organization. Some companies may define a senior software engineer as someone who has a certain number of years of experience in the field, such as 5–10 years. Others may focus more on the level of expertise and skill, and consider someone to be a senior software engineer if they have a deep understanding of a specific technology or programming language, or if they have experience leading development teams and managing complex projects.
  • For example, at one company, a senior software engineer may be someone who has at least 7 years of experience in the field, has a strong understanding of multiple programming languages, and has experience leading development teams and managing project schedules. At another company, a senior software engineer may be someone who has at least 10 years of experience, has expertise in a specific technology such as machine learning or cloud computing, and has a track record of delivering successful software projects on time and within budget.
  • Overall, the criteria for what constitutes a senior software engineer can vary depending on the specific needs and priorities of the company or organization. It is important for software engineers to understand these criteria and to work towards meeting the requirements for a senior level of experience and expertise.

Summary

In summary, the key differences between medior and senior software engineers are their level of experience, responsibilities, challenges, skills, and expertise. It is important to understand these differences in order to properly navigate the world of software development and to determine the right career path for you. Whether you are just starting out or are a seasoned pro, becoming a senior software engineer can be a rewarding step in your career.

In conclusion, the biggest difference between medior and senior software engineers is their level of experience and expertise. Medior software engineers are typically responsible for implementing features and fixing bugs, while senior software engineers often lead development teams and provide guidance and mentorship to other team members. Medior software engineers may face challenges related to learning new technologies and working with more experienced team members, while senior software engineers may face more complex challenges related to high-level problem-solving and strategic decision-making.

To become a senior software engineer, medior engineers should focus on developing their skills and expertise in a wide range of technologies and frameworks and gaining experience leading development teams and managing complex projects. They should also strive to build a deep understanding of software architecture and design patterns, and to develop their leadership and management skills. By working towards these goals, medior software engineers can advance their careers and become senior software engineers, taking on more responsibility and tackling more complex challenges in the field of software development.

--

--

Software architect (AWS Certified) and a former professional volleyball player.