In technology-based organizations today, different roles and positions are often used interchangeably giving way to a lot of confusion for candidates and even professionals. Some companies use ‘Software Engineer’ and ‘Senior Software Engineer’ to address the employees who build and maintain the software product. While a lot of other companies like Amazon and Microsoft use the SDE(Software Development Engineer) job family (SDE-1, SDE-2, SDE-3) to address the different levels of software developers.
Here’s an informative chart representing the different ways software engineering levels are addressed in big tech companies:
In this article, we’ll focus on the SDE job family and dissect the different levels by their roles, responsibilities, and experience. But before that, let’s understand exactly what is a software development engineer, in general.
What is a software development engineer?
A software development engineer is responsible for building applications and software systems using the principles of computer science, computer engineering, information technology, and analysis concepts. They work on optimizing the program for better performance delivery and make all software modifications based on client needs.
In addition to writing code, a software development engineer also plans high-level tasks like how an application will work, how to reduce time and space complexity, etc. They have to be great at algorithms and programming.
Let’s understand it better by taking a look at an SDE’s functions at a tech giant like Amazon:
- They contribute to defining the security, scalability, and low latency of processes
- They work with cross-functional teams to deliver on-demand projects
- Deliver and support multi-tiered software applications and software tools
- SDEs at Amazon also innovate new products for customers by collaborating with fellow employees
Now, the world runs on a hierarchy and so there are levels in the SDE job family as well that are generally denoted by SDE-1, SDE-2, and SDE-3, where SDE 3> SDE 2> SDE 1 in terms of experience and authority.
Understanding the different layers
We’ll go cover their specific roles and expectations in detail but let’s first get a bird-view of how developers at different levels align w.r.t their experiences to build final projects, so that you get a clear picture of the hierarchy involved in a tech team. We won’t go too far and start with a rather local example at Masai.
Recently, we decided to switch from METTL(a platform where we conducted entrance tests) to build an in-house platform named MSAT. (No rewards for guessing, we did that for cost-cutting).
Now, multiple teams had to be involved in making this transition possible. Our director of technology worked with the data team and the product team to understand what was expected out of the project. After understanding the product requirement, he designed the information architecture and the code architecture.
Now, it was time to assign respective roles and micro-services to the SDE-2s, who would then work with the SDE-1s to finish the more ground-level layers of the project. The director of technology overlooked the whole process and shipped the finished product for testing and utility checks.
And that’s how our in-house testing platform MSAT came into existence. Now, things might work a bit differently in bigger companies where there can be more layers, but we just wanted to give you a rough idea before getting started with the specific roles at different levels of software development.
Software Development Engineer-1 (SDE-1)
This is most probably the first step if your tech career was a staircase. Fresh graduates with a computer science degree or people with 1-2 years of experience generally take up the role of an SDE 1.
The candidate is presumed to have a basic understanding of programming, be willing to learn whatever is given to them, follow directions logically, and carry out the assigned tasks.
Finding solutions on Stack Overflow is totally acceptable as long as they understand what they actually copied and receive a code review that conforms to existing code styles. Following SOPs (Standard Operating Procedures) is the bare minimum expectation.
Typically, engineers begin this phase by building test cases and fixing bugs ( yes, this is usually missed in most Universities).
Problem-solving should be one of the strengths. In case of an error, they work on identifying it using tools or log messages, understand what caused it, and collaborate with a team member to fix the error.
An SDE-1 needs additional help from their seniors to perform their job duties. The SDE-1 (Or L1 SWE-2 in the case of Google) typically concentrates on implementation activities in the majority of product-based enterprises.
They convert the design documents given to them by their senior colleagues into code that is ready for production.
Because of this, when you go for an interview, you will frequently hear the phrase "production-ready code." At the very least, an SDE-1 should write accurate coding.
It takes a lot of hard work, domain expertise, problem-solving skills, and a basic understanding of design, to advance to the next level, all of which could take 2-3 years to develop.
Software Development Engineer-2 (SDE-2)
SDE-2 is also commonly addressed as a Senior Software Engineer or Senior Member of Technical Staff in different organizations.
An SDE-2 by capacity is an individual contributor who works in a team. When someone is hired as an SDE-2 or gets promoted to an SDE-2 role, it is expected that they have considerable experience and won't need much help in solving straightforward issues.
A Software Development Engineer-2 (or an E4 in the case of Meta) holds end-to-end service ownership in various product-based organizations. Owning a service means being fully aware of everything that goes into it, even if you don't physically do the coding.
They’re tasked with providing rational, tested, efficient, and maintainable solutions to challenging software issues.
They’re also in charge of training new team members on the clients, what the team's software does, how it is built, tested, used, and how it fits into the overall picture.
What are the basic skills required to get to the SDE-2 level?
It’s a no-brainer that your coding skills will be judged. In interviews, they could slightly modify the requirements to check how you’re adapting the existing code. So, you need to have a good understanding of design patterns.
Besides, you are expected to write clean code and test cases, and be able to understand SoC(Separation of Concerns), DRY abstractions, and assumptions to get to the SDE-2 level.
The most common mistake interviewees do is to begin coding right away. You should address any questions you have about the requirements if you feel there are any.
Given end-to-end ownership, you must understand the ‘What's’ and the ‘Why's’ of a particular situation. You should be able to identify bottlenecks, figure out what part of the codebase is causing the outage, and locate the code region if you’re considering moving to an SDE-2 role.
Depth of knowledge
SDE-2 needs to have a broad knowledge of not just the product code but also of the other libraries being used in the project, and the infrastructure components employed by the team. As we mentioned, they guide the new members on how everything fits into the product.
Software Development Engineer-3 (SDE-3)
This is the level right below the architect and the principal architect, so it’s closer to the leadership positions in the company. It is also referred to as a technical lead or a Lead Member of Technical Staff or a Senior SDE in various organizations.
An SDE-3 needs to have the maturity and wisdom of making major decisions in alignment with the product and business objectives.
They needs to have a broad understanding of implementing solutions, dealing with NFRs(including system attributes such as security, reliability, performance, maintainability, scalability, and usability), problem-solving, and the ability to distinguish between short-term and long-term goals.
Given that we live in an SOA (service-oriented architecture) world, it’s necessary for an SDE-3 to have an understanding of distributed systems.
Since they are in a decision-making capacity and get to deal with other SDE-1s and SDE-2s on their team when they ask for guidance, displaying patience at this level is also crucial.
SDE-3 focuses primarily on designing, developing, testing, and deploying software and is skilled at dividing tasks such that they can operate in tandem with other SDEs and reassemble into a seamless launch.
They represent the team (or teams) to other teams and organizations as well; therefore, they must be well-conversant with the team's clients, software, and business needs.
Here are a few other responsibilities of an SDE-3 at big companies like Amazon and Flipkart:
- Builds high-level projects in an independent capacity
- Works on system design and low-level design
- Identifies resource wastage and creates systems that all teams in the organization can use
- Drives the adoption of best practices around coding, design, quality, and performance in their team
- Actively participates in technology forums & represents the company in external forums
How to progress from SDE 1 to SDE 2, and SDE 3?
Nate Waddoups from Microsoft summed the journey from an SDE 1 to SDE 3 wonderfully-
- SDE-1 = Creates complex solutions to simple problems.
- SDE-2 = Creates simple solutions to simple problems.
- SDE-3 = Creates simple solutions to complex problems.
- Principal SDE = Makes complex problems disappear.
Progressing from a junior developer to the SDE-3 level is not so much about widening your technical horizon as it is about elevating in other aspects of your personality.
Of course, you’ll grow technically and gain more depth and technical experience as the scope of your projects increases. Scope and Impact are the two keywords defining the career progression of a software developer.
In addition, you’ll need the following qualities to progress in your career:
At the SDE-3 level, you’re no longer just an individual contributor. You’ll be working with various teams across the board and so you need proper communication skills.
By that, we don’t just mean using jargon corporate words, but the ability to listen deeply, comprehend the problem statements and lay out the solution in a way that even non-tech folks in your company can understand. So, while you’re working in the capacity of an SDE-1 or SDE-2, you should be proactively improving your communication skills.
As mentioned before, SDE-3s have to attend both 1st and 2nd-level developers and provide them with guidance and the correct course of action. They are supposed to act as technical arbiters, and facilitators, and to provide technical and design guidance as well as long-term technical direction.
Thus, good leadership skills are a must. One needs empathy and management skills to be a good leader.
Bird-view of the business objectives
SDE-3s operate at a team architecture level. They are more aligned with the business objectives of the organization, and thus they need to have a bird-view of the company’s overall objectives and any structural changes going on in the operations.
While working in your capacity, you also need to keep your eyes and ears open to what’s going on at the upper level, how exactly is the tech team influencing executive decisions, what can be improved in the end product, so on and so forth.
It’s important to note that in tech giants like Amazon, you don’t get promoted into a job, but rather in a job. What that means is that you already have to be working in the capacity of an SDE-3 and demonstrating those qualities in order to get that promotion letter. It’s the same case when transitioning from SDE-1 to SDE-2.
Here’s another fact: Most SDE-1s can grow gradually into an SDE-2 role, but not all of them can become SDE-3s. The levels keep getting tougher like in the Super Mario game we used to play. Even if you’re really good at your core competency i.e. programming, you can't simply expect to be promoted to the senior level as you need to be well-equipped with all other aspects mentioned above.
We hope you got the gist of the article and now you can visualize how the road from a fresher to the top echelons in software development looks like. It might be rough but can definitely be travelled.
And to help you travel faster, we’re offering the MasaiX program that includes courses for both tech and non-tech professionals. If you’ve worked in the tech industry for at least 1 year and have some coding experience, you can opt for the part-time Backend Development course starting at zero upfront fee. You only need to pay once you get placed for a minimum of INR 10 LPA.
People with 1 or more years of work experience in a non-tech capacity can opt for our part-time Full-Stack Web Development course, both of which operate on the same pay-after-placement model, and you only pay once placed for a minimum of INR 5 LPA.