What’s the difference between a Software Test Engineer (STE) and a Software Design Engineer in Test (SDET)?


The Microsoft career site has two excellent definitions for the Software Test Engineer and Software Design Engineer in Test roles at Microsoft. In my experience, these clearly defined role definitions have very vague applications here at Microsoft. After all, aren’t we all just assuring that the software that we ship is the highest quality possible?


Historically, it seems to have made a lot of sense that these two positions had distinct roles. Years ago, Software Test Engineers were testers who had limited programming experience. I’ve heard particularly frightening stories from Microsoft old-timers where Software Test Engineers were used as monkey labor- “Run this test fifty times, and call me if this breakpoint gets hit”. STEs didn’t need a strong CS background to get their jobs done- they just needed a lot of patience, and basic understanding of *using* computers.


The Software Design Engineer in Test role was reserved for Testers who were capable of writing tools and/or automation. I’ve also heard stories from other old-timers about STE hires that write tools in their first half year on the job having their job title switched by management to SDE/T.


It’s easy to understand the difference between STE and SDET with a black and white example. If you’re testing an API, then yes, you’ll surely be an SDET (how can you do any testing without writing a line of code?) Conversely, if you exclusively black box test a user interface (without tools/automation), then you’d have the job title of STE. The gray area between these two extreme examples is huge, though. I don’t know any STEs who don’t end up writing at least *some* code. In my personal experience, I’ve spent the past three months on the job writing automated test cases. Like many of my fellow STEs, this doesn’t strike me as uncommon. I'm sure there are plenty of STEs that in practice write more code than SDETs! This difference is particularly pronounced across different product teams at Microsoft.


Management seems to be pushing for a unification of these two roles, probably for this reason. Both roles dedicate themselves to product quality, both are reliant on strong fundamental understanding and application of CS principles.  A quick look on the career website seems to back this up- there are currently 326 active postings for SDETs, compared with 44 for the job title of STE. This doesn’t mean software testing is going away- I only see it as a reflection of the increasingly technical nature of testing software at Microsoft. It looks like the job title that the company is shifting to is SDET, which is more a mouthful but also more impressive sounding.


In short, don't be surprised if the name of this blog becomes "Software Design Engineering in Test at Microsoft" to match the way that the management wind seems to be blowing. If it comes to that, hopefully Chris and I can come up with less unwieldy blog title! :-)