Gergely Orosz’s Post

View profile for Gergely Orosz, graphic

Observations on software engineering at Big Tech and startups. Writing The Pragmatic Engineer, the #1 technology newsletter on Substack. Author of The Software Engineer's Guidebook.

Microsoft was the company to pioneer the Software Development Engineer in Test (SDET) role in the 90s, and then got rid of it in 2014. But why? I was there, and here is what I observed: My first team at Microsoft was Skype for XBox One. On our team, for for every 2 developers (SDEs) we had 1 developer in test (SDET). Devs wrote production code; testers wrote automation and executed manual tests when necessary (and automated these). What about unit tests? I'm glad you asked 😅 This was an initial source of contention, and we had a lot of back-and-forth on it until we settled on a solution (detailed in https://lnkd.in/eFjW67Jd ) Early 2014, I moved to a new team, Skype for Web. This team was different to most other Skype (and Microsoft) teams in how we didn't ship once every few weeks: but daily, even multiple times per day. This team consisted of 6 SDEs and 3 SDETs, on paper. In reality, we were 9 SDEs, thanks to our engineering manager and the test lead who quietly decided it made zero sense to have a dedicated test role, when we shipped new features every day. And it worked: we became much more productive by removing the SDET role from our team! SDETs still focused mainly on testing-related work, but also picked up development tasks. Just as importantly, we paired a lot! I remember pairing with former SDETs to build a feature. I was decent at thinking about how to make something work, and SDETs were really good at pointing out edge cases I hadn’t considered. When it came to debugging, turns out that the testing mindset is super helpful, and I learned plenty of tricks this way! Web teams across Microsoft started to quietly remove the SDET role. Back in 2014, our web team in the London Skype office felt ‘special,’ as the only other teams to merge the SDET function were web-based teams, of which there were not many. On every other team, SDETs kept working the way they always had. And in the middle of 2014, Microsoft formally retired the SDET role and introduced the unified SE (software engineer) role. Which was, basically, what our team - and many other web teams - were already doing, and it worked pretty well for us. For more details, check out this week's free The Pragmatic Engineer issue: https://lnkd.in/eFjW67Jd I've not worked with dedicated SDETs since the Skype/Microsoft days. In some ways, this is a bit sad: as I learned a ton about the 'testing mindset' from devs specializing in testing. A shoutout to the awesome Skype for Xbox One and Skype for Web teams, which were both great groups, and challenging, as well as fun projects!

  • A 2:1 SDE:SDET ratio was common across Microsoft until around 2014. It was the case on my team at Skype for Xbox One, in 2012, when the team was formed. Here’s how our team was composed, based on headcount:

12x SDEs (software development engineers)
6x SDETs (software development engineer in test)
2x PMs (product managers)
1x EM (engineering manager)
1x SDET lead
Ahmed Zaman

Senior Software Engineer at Microsoft

7mo

Personally, I much prefer the "everybody develops and tests" approach. Gives everyone ownership of the feature delivery and final product and (importantly, IMHO) makes us better, more skilled, hireable engineers that can fit in any team. I have fond memories of working with you on the Skype for Xbox One project and special gratitude goes to our SDETs (who were super capable SEs, after the merge) at the time for how much I learnt about the testing mindset.

Jonathan Moss

Organisational Development at Zettle by PayPal

7mo

You weren’t alone in fact. The Windows Phone team also went through a similar transition. Whilst we weren’t shipping as often, the boundaries between roles became fuzzier. Developers learned to automate and test better, testers to code. The team was so much more effective as a result. The morale was also high. I put it down to a lack of ego and supportive leaders. Best team I’ve ever worked with.

Felicity Gracie-Herst

Head of Operations, Farm Heroes Saga at King

7mo

It wasn’t perfect but I learned so much on that Skype for Xbox One team - coming from the games industry where the wall between dev and test was steep and testing was considered low skilled manual work, it inspired a passion for TDD and quality and shifted my own mindset for life

James Furdell

Software engineer with 20+ years of experience; technical and process leader, specializing in front-end development and data visualization

7mo

I also worked as an SDET at Microsoft, mostly on Windows Phone, after working in the industry previously as a developer. It was a great job; I worked with smart people, learned a ton, and I was proud of putting out high-quality products. But, yeah, the limits on career growth and feelings of being treated like a second-class citizen in the company were real. It took a lot of effort to transfer back into an SDE role within the company because of that "SDET stigma", which was a shame; I was still doing a lot of coding through automation, and I was very focused on quality, teamwork, careful observation, and debugging; all things you need to ship something worthwhile, regardless of role. Once I did switch, that made future job changes easier, and I felt I was able to write my own ticket to better things. Since then I've made it a point to focus on quality first as both a developer and tech lead. Our work isn't capital-D Done unless it works correctly, and we're all responsible for doing the work to verify that.

I was there when Microsoft started retiring SDETs. I was in Bing when it first started. They did convert most SDETs in Bing to SDEs at that time ~2011, they however left end to end SDET team intact and we continued doing CICD and test automation. Having 20 + years in test automation and focusing on agile transformation and CICD recently I do believe that developers can do majority of the unit test and functional automation, there is however still lots of work left after that for end to end/customer scenario automation. If done well it can speed up your delivery, improve quality/customer experience and decrease amount of time spent on fixing bugs in production. I dont think SDET is ever going out of business honestly. But I do think the ratio of SDETs in the current world doesnt have to be that high. I managed a team of 8 SDETs supporting 100 people organization devs and I think we did a great job at that.

I went through the same transition in Microsoft at the same time, and felt that the company lost a great resource. There had been cases through the company, such as SBS, where newly-minted SDEs promptly left for other teams, leaving legacy SDEs to do both dev and testing work without additional support. Those legacy SDEs promptly left as well. To me, there's just no substitute for a great SDET. The quality of Microsoft products since getting rid of SDETs shows that quite clearly. In my experience, while a good SDET can usually also be a good SDE, the reverse does not apply. SDEs tend to pay lip service to testing, and quality suffers as a result.

Michael Free McGlothlin

🐓 Faithful follower of my loving Lord Chicken since 1995! 🐔 Cock-a-doodle-doing it! ⚙️Maker 👨🏼💻Software Engineer 🧩Software Architect ⌛️Legacy System Modernization Consulting 💵E-Commerce Consulting 🦁LION #ONO

7mo

Seems like a lot of human clutter. If you know how to write code decently then you know how to test code and automate things. If you don’t then you need to stay a junior developer until you learn. It is such a hassle, and slow down, having to constantly wait for other people to do what you could do for yourself. And we tend to write worse code because of silly pressures to comply with random demands instead of actually trying things and comparing the results.

Dilan O.

I use my business degree and ADHD to grow in tech | Software Engineer at Pokémon | Co-founder at Coding Allies

7mo

I'm pretty sure I heard some SDETs' existence, but as contractors. This was some time between 2015-2020. Does that really mean the function of the role was obsolete?

David Rubino

Product Manager - Firefox

7mo

The real mistake was getting rid of STEs in the early 2000s. Except we didn’t actually get rid of them… about half of the SDETs continued willing or unwillingly to be STEs. The value we provided was manual user mode testing done by core members of the feature teams who were involved from ideation onward, who knew how to code, how software worked, and how to break it. Automation produced little value by comparison. When SDET ended so did the huge shadow STE army, and quality tanked.

See more comments

To view or add a comment, sign in

Explore topics