Microsoft has played a significant role in shaping the quality assurance landscape in the tech industry. In this article, we delve into the history and impact of Microsoft’s SDET role, its eventual retirement, and the implications of these changes.
The SDET Role
Origins and Responsibilities
The Software Development Engineer in Test (SDET) role was an innovative concept introduced by Microsoft. SDETs were software engineers who focused on writing automated tests and building and maintaining testing systems. The only difference between an SDET and a software development engineer (SDE) was that SDETs focused on writing test code, while SDEs primarily wrote production code.
Although the exact introduction of the role is uncertain, it likely emerged in the 1990s. In a 2004 post by a Microsoft Exchange team member, the responsibilities and expectations of an SDET were detailed. An SDET was described as a developer who worked in a test team with a keen sense of testing and a love for writing code.
SDETs were responsible for providing tools and processes to enable testers to efficiently test products. They analyzed product functionality and architecture to design and implement tools that helped testers perform their tasks. SDETs enjoyed shorter project life cycles, worked with the latest technology, and had room for innovation.
Career Growth and Team Composition
Microsoft established a formal career path for SDETs, with options to grow as a Test Architect, SDET Lead, Test Manager, or switch to a developer role. In the early 2010s, a 2:1 SDE:SDET ratio was common across Microsoft. For example, a 2012 Skype for Xbox One team consisted of 12 SDEs, 6 SDETs, 2 product managers, and managerial staff. SDET teams owned all aspects of testing, including manual verification, automated checks, test planning, and collaboration with SDEs during the planning phase of features.
Unit Testing Debate
A contentious issue in teams with assigned SDETs was the responsibility for writing unit tests. Some developers believed that any automation, including unit tests, should be performed by the SDETs. Others argued that developers should write their own unit tests due to the tight coupling between unit tests and code. The debate was eventually resolved, with developers writing unit tests and SDETs handling other testing tasks.
Retiring the SDET Role
The Shift to a Unified Engineering Role
In early 2014, some Microsoft teams began to merge the SDET and SDE roles for greater efficiency. The Skype for Web team was among the first to adopt this approach. The team evolved from having six SDEs and three SDETs to nine unified software engineers. This change led to increased productivity, as SDETs focused on both testing-related work and development tasks.
The integration of roles also facilitated better collaboration between team members. Developers and SDETs paired to design features, with developers focusing on making things work and SDETs identifying edge cases. Debugging became a joint effort, with SDETs and developers working together to solve problems.
This new approach eliminated the “us vs them” dynamic that previously existed between developers and SDETs. Developers became responsible for testing their own code and fixing any discovered bugs before shipping to production.
The Impact on Microsoft Teams
The retirement of the SDET role and the introduction of the unified Software Engineer (SE) role began to spread across Microsoft teams in 2014. This change was inspired by the success of Bing’s team, which shifted the responsibility of creating programmatic tests to developers and redefined the QA role to focus on end-user style “real world” testing.
In July 2014, Microsoft announced its largest layoffs to date, including the elimination of many SDET roles. Affected SDETs were to transition to the SE role within the next few months. This change made sense for teams that shipped on a daily basis, as Microsoft increasingly adopted the software-as-a-service (SaaS) model.
Reflections on the Transition
Brian Harry, Technical Fellow at Microsoft, reflected on the transition in a 2017 blog post. He described the disadvantages of the old model, including a lack of accountability on developers, slow feedback cycles, and a divergence between code architecture and test architecture. After merging the development and test teams, the Visual Studio Team Services team saw a significant improvement in the number and type of tests they utilized.
Two years after the transition, almost all “old” tests from the separate developer and tester roles were replaced with new, more granular tests. Harry concluded that the shift to a unified engineering role resulted in improved quality, agility, and engineer satisfaction.
In conclusion, Microsoft’s groundbreaking SDET role played a crucial part in shaping the quality assurance landscape in the tech industry. However, as the industry evolved and the need for more efficient development processes grew, the retirement of the SDET role and the shift to a unified engineering role proved to be a valuable change for Microsoft teams.