What does an SDET do?

March 31, 2007 at 7:49 pm | Posted in Microsoft, Software development | 44 Comments

I’ve been meaning to write this post for a while now but I’ve just been so busy at work at the moment, I just haven’t had the time.

In this post I want to cover what the role of an SDET at Microsoft is. As most of you already know, I am an SDET, or Software Development Engineer in Test, with the Windows Serviceability team at Microsoft.

Unfortunately, sometimes people call this person a ‘Tester’ which I find to be a bit incorrect, as the job does not involve only testing. In previous companies that I have been in, you typically have the software developer who creates the code for the software, and then you have a tester who tests the software through black-box testing. In case you don’t know what black box testing is, basically the tester does not get to look at the code and just tests the software interface that is presented to him/her. This is not what an SDET does at Microsoft…Typically, most teams have Software Test Engineers (STE) that do this kind of testing. It is their job to test the software, identify failures, analyze the log files, and report bugs to the SDET.

At this point in time, you are probably thinking so what is the the role of the SDET…Well, here is a list of what I think to be the important aspects of being an SDET:

  • Developing new tests. This is pretty much one of the biggest things that an SDET has. They must work with the developers and PMs in order to identify what needs to be tests in new or existing features in the product. The SDET has full access to the code and the design of the component, so typically this is considered white box testing. Being able to look and understand the source code allows you to develop much better and more targeted tests as you can see what the typical boundaries are, how the code works, and what code paths need to be tested more than others.
  • In-Depth knowledge of the code. Sometimes you need to know the code even better than the developers. Usually when a new developer comes onto a team, he doesn’t necessarily have to understand every aspect of the code…just usually his area, or the area that he’s writing – so when he gets a bug report he can easily fix it. The SDET does not have this luxury, he needs to not only understand every aspect of the product, but as well he needs to know how it interacts with all other components (and when you are dealing with a product as large as Windows, the challenge can be immense!!)
  • Excellent debugging skills. Debugging code can be a huge field by itself. I’ve attended a couple of courses at Microsoft, and it can become really complicated and advanced. But to be a good SDET you need good debugging skills. You need to be able to take a failure in a test case and then troubleshoot it down to the problem function. This can sometimes get tricky when you are dealing with threads, timing issues that disappear under a debugger, or memory corruption.
  • Writing Code. Some people think that an SDET doesn’t really need to learn or write code, but that is far from the truth. A good SDET will write lots of code. An excellent way of testing involves using automated test suites. It actually is a necessity when you are dealing with hundreds, and thousands of test cases. SDET’s are the ones that write these automation suites, and write the necessary code to test their components. In addition to this, SDET’s write tools and utilities that help them in their jobs (for example, a tool that will generate logs, or fuzzers to test their programs). Also, some SDET’s participate in miscellaneous projects that pop that seek volunteers (for example for diagnostic tools that help product support).
  • Enjoy breaking things. Developers typically create and hate it when they find a bug in their code. SDET’s have the opposite mentality…They usually like to find new and interesting ways of breaking the software and are very happy when they find a new bug. Ever since I was a child (much to my parents anger) I loved taking things apart to try and figure out what makes them tick. You need this type of mentality in order to be a great SDET.
  • Being a good consumer advocate. It is the SDET’s responsibility to make sure that we are shipping the highest quality code possible. It is his/her responsibility to advocate the right bugs to fix and to reject the ones that would introduce too much risk to the customers. It is a very big and very real responsibility that an SDET faces with every bug found.

There is a lot more useful and great information found in the following JobsBlog article which describes the role well. It also identifies what a recruiter looks for when looking for an SDET.

In addition, if you wish to learn more technical information about testing. I found the following books to be excellent and would strongly recommend reading them:

If you have any questions about the role, or if you wish to discuss it here – please feel free to. I am looking for as much feedback as possible!

44 Comments

  1. You are right, SDETs gain breadth knowledge, while SDEs gain depth knowledge.

    I know what you’re talking about well because my first position with MS was a performance engineer, a position very similar to SDET

  2. hmmm. I didn’t know that. I just assumed SDETs were testers. But now that I know, I think it could be more fun than development

  3. Meshref – yes you are right. But SDETs still do gain depth knowledge and they have to use it. You need in depth knowledge of your component + you need breadth knowledge to know the interactions with other components

    Mak – Thanks for visiting. Yes – While in Egypt a testers role was just limited to black-box testing and was generally looked down upon by developers. After learning more about the role, and reading The Art of Software Development – I realized testing is a huge field…there is an art and there is a science to it – and just because you’re in test it does not mean you stop doing dev. work. I love programming…always have and always will…Plus to be honest, its a lot easier to write code for the first time, than to go in and understand code that was already written 🙂

  4. Ali, what’s a good book for test cases. Meaning finding test cases for basic algorythm problems?

  5. mr E. – I am sorry but I do not know of a good book that will just list the test cases for basic algorithms….Usually though books regarding testing show you how would you come up with different test cases for things. For example some things you can do: Check for correct behavaior, Check for error conditions, Check boundary conditions (e.g. if a function takes a number between 0 and 100, then try -1, 0, 99, 100, 101). There are also different buckets you can test for (e.g. performance, reliability, accessibility, usability, stress, compatibility, etc.)

    I hope this is a good guideline for you to come up with your own test cases (which is a good exercise).

  6. I know what you’re talking about, what I mean that SDE is more about depth, SDEs also must gain breadth knowledge (because they are not creating isolated components) but they gain depth knowledge more than breadth, SDETs is the reverse of this, the amount of breadth knowledge they gain is more than the depth one.

  7. Ali,
    I’m interviewing for an SDET position soon. Do you have any study tips and or things I should focus on?

  8. Well I would definately recommend the books I have listed above. They are good resources and also read the post to evaluate for yourself whether you want to be an SDET…

    Also I would recommend reading the post I wrote titled Preparing For the Microsoft Onsite Interview.

    The most important thing to understand and focus on is algorithms I think and being able to use them in real-world scenarios. This is for the on-site….The phone interview is more broad and I have some tips for that in my post Microsoft Phone Interview Tips

    Good luck and keep us updated!

  9. Ali, is SDET treated is a lower employee at MSFT? Do they get paid less? Do they get the same benefits and access to same resources?

  10. Hey mustafa,

    An SDET is now treated as a “lower” employee at all at Microsoft. They do not get paid less and have the exact same access to the resources as the SDE’s (e.g. same trainings, same access to source code etc.) There are also SDE’s who switch to SDET’s and vice versa…And yes they also have the same exact benefits.

  11. Thanks SO MUCH for this info. I’m a recruiter at MS, and this really helps define the role of the SDET from someone actually doing it 🙂

  12. Ali, once we have worked in an SDET role, would it be difficult to move out of it. Or how difficult is it to move out of it? For example, if I need to move out of MS, say, because of some personal reasons, ….. would it be difficult for me to get into Dev position in other good companies, (not all companies have a role like SDET, and I would not be interested in regular (blackbox) testing that other companies would be doing). Will we get type casted as QA or testers? Will working as SDET in MS mean end of Dev career else where too?
    Also, in what situations can we switch to an SDE from an SDET? How often have you seen this happening or the reverse happening?

  13. These are some very good questions and I am not sure I can give you 100% answers to all of them. The best I can do is give you opinions.

    – I am not sure how difficult it is to move from SDET to Dev…At MS I believe the flexibility is there, but since I haven’t tried switching I can’t say…
    – It seems though your question revolves around leaving MS as an SDET and going to a company. The problem here is it will vary depending on the company. A good reputable company will understand that SDETs write a lot of code too and can work as Devs too. I would try to emphasize on your CV the Development work you have done. Once you have an actual interview with the company, this is your opportunity to shine and show your technical Development skills too. In general though if you are going to a smaller company that doesn’t really get the SDET role, most would love to have any kind of engineer that’s been at MS due to the experience.

    – As for your last question…I haven’t seen/heard of a lot of SDE’s going to SDET although this is definately an option and choice for these people and I am sure there are people who have gone that way. I know that a number of people have switched from SDET to SDE for the reasons you’ve mentioned above, including a few other reasons. But I think what it boils down to is – what are YOU more intersted in. Each one has its own set of challenges and interesting problems, so you have to try to evaluate which one you like more and do it. In addition, the more advanced you get in one of these roles, I think the hardware it will be to switch (due to specialization) but at the same time you become a subject matter expert so you will be more valuable 🙂

    Hope this helps.

  14. hi do you everp lan to switch from sdet and sde? and how easily would you be able to?

    also are sdet’s looked down upon at microsoft by anyone?

  15. I do not know if I plan to switch from SDET to SDE. At the moment I do not have any plans for this as I am very happy in my role, and there is a lot of development work that goes into test too. The reason why I am not ruling it out though is because I may wish to try a different role in the future to challenge myself.

    As for SDETs being looked down upon. Not at all – not at Microsoft. At least with the teams I work on, the developers are very thankful for having test teams as they save their butts on numerous occasions 🙂 Especially with something like the Windows Operating System which needs to be tested really well. There may be some stigma in the industry against SDETs because they could be considered “testers” which is incorrect – I like to think of it as SDEs in the test division.

  16. Hey Ali,
    Thanks for the info.. it really provides a lot of clarity with respect to SDET roles .

    What are some of the tasks a fresher can expect in the first couple of months as an SDET ?

  17. Hmm – well for me it was reading a hell of a lot of code 🙂 For me since I am working on Windows, I also had to learn a lot about the design of Windows, details of the NT kernel, and specifically how file system/storage stack works. This was the main thing.

    Besides that some steps I began to take is to understand the way the automation works, start fixing bugs, etc. Thats pretty much the best way to start…Once you gain a better understanding of the test code it will help immensely in understanding the product code, in addition to allowing you to write better tests and add new features to the automation software.

  18. Hi Ali,

    Don’t you ever felt that it would be kool if you could work on teams that implement a newer file system than to just test it through automation? Is n’t it a greater challenge to implement a file system then just test it?

    Thanks.

    Best Regards,
    Hitesh

  19. I think its rare you will find someone who can get hired right away and start implementing a file system. You gotta learn and start somewhere. Even given that the file system is very large and intricate and has dependencies on many components (e.g. cache management, volume management, filter manager, etc.) – I agree that implementing a new file system is much greater of a challenge than testing an existing one – but testing it actually makes you learn a lot more…you learn the limitations of the file system, and the bugs so it’d help you write a new/better one 😉

    Also, at least in WinSE, our work is not only limited to working on existing release – we frequently work and collaborate with the main windows developers with our feedback/ideas/suggestions.

  20. Hi,

    Thanks a lot for the response :).

    I would love to see a blog entry where you describe your day and how it goes in general. Keep blogging, it really helps people like me.

    Thanks.

    Best Regards,
    Hitesh

  21. If I know almost nothing about programming or any of what you mentioned, but am a very computer and math savvy guy (33 years old) who is currently an electrical engineer, how long do you think it would take to learn this stuff and make a career change? And where should I start? It sounds so interesting.

  22. Thats a very tough question 🙂 The good thing to know is that lots of people do career changes all the time. I also know people who graduated from something totally unrelated to CS but are working in it full time (I know of at least one colleague here for example who has a BA in Music for example).

    In the end though it really depends on what you want to do. There is the easy way – and the hard way to everything. If you want to just program you could just take a few courses and read a few books (and maybe limit yourself to C#/Java) – but I think this is the wrong approach to take.

    I think maybe going back to school and getting a CS degree would greatly help…but if you don’t want to go that route, I would at least recommend looking up courses, finding out what books they study, (kinda do your own shadowing of a CS curriculum). Another way where I learned a lot actually is working on open source projects. You get to work on a real product in a team environment with lots of talented people. A cool thing about this approach is that you get to include this experience on your CV.

    I also recommend reading a lot of blogs out there on the subject…They can certainly provide you with inside knowledge. For example, on my blog I recommend a few books to read on the SDET topic.

    Good luck in your future 🙂

  23. Great tips, but I have some what of an edge case question.

    I have been a black box tester for a while and have not had much luck with the coding aspects of an SDET inteview. Finding a position that touches that middle ground of not having much coding experience and having just enough has been quite daunting.

    Could you offer some indication what level of coder an SDET is expected to be at interview? Novice? Intermediate? What C# knowledge goes with those terms?

    Any answer would be appreciated!

  24. You article is quite informative. Although my query revolves around two different roles QA and SDET.

    Microsoft doesn’t hire people with QA background but what if you have convincing programming skills that you can exibit, can you make a switch from QA to SDET.

    Also are you working in redmond or Hyderabad, India

  25. I have been an SDET at Microsoft for over a year now, so this is my insight. If you have good coding skills, expect it to be a rough but good learning experience. You’ll want to do it for a little while, but only to make you a better programmer and better all around debugging person. Do the SDET thing for no more than 2 years. Then find something different, because if you’re a decent programmer you will be way more appreciated as an SDE.

    The plus side is, you could get a lot of neat projects thrown at you that you might not if you were an SDE. The bad part is that no one will give a crap about any coding you did because for the most part they care about the bugs you find. The other crappy part is that you might end up with a team / manager that is close minded as hell and wants to run a squad of monkeys.

    • I dont know, being on a squad of monkeys is kinda fun, we fling bug poo at each other all day and scream our loud monkey cries into the night. As far as working in the Land of Milk and Honey (MS) sounds to me like it has turned into a little India. I used to want to work there but now I think this monkey couldnt understand a word anyone says!

  26. Hi
    I am Test Engineer-SDET in MindTree for two years.Nice to hear about the role of SDET.I fully agree with your comments.I have one question “what is difference between QA and SDET?”

  27. […] While we can try to be clever and copy and paste similar job descriptions here, we feel these two blog posts accurately describe what this position is all about: http://blogs.msdn.com/b/jobsblog/archive/2004/05/27/143419.aspx and https://aliabdin.wordpress.com/2007/03/31/what-does-an-sdet-do/. […]

  28. I just like all your posts especially this one its amazing how u have explained the SDET’s role in Microsoft. Why have u stopped blogging?

    This surely makes it a candidate on my blog which has the best articles and posts across the web.

    Do mail me at aditya_kalra@ymail.com and let me know if it is fine i add one of these to my blog.

    My blog: http://go-gaga-over-testing.blogspot.com/

    Best Regards,
    Aditya Kalra

  29. Noticing the date of this post I realize how things have changed. SDETs no longer write code. Period. Since the day they introduced this role there have been so many automated tools out there that just needs to be used. I have been here for a 1 year almost and guess what, I haven’t written even a single line of code. It may be different in other groups but in my group I have been just using tools authored by some team I don’t know of and try to make it work. More time is spent in learning how this tools work and using them. You can spend time learning what exactly (code wise and more in depth) the tool does but in the end the only thing they care is you have caught some bugs. At the end of the day an SDETs job is putting all this automated tools in a script or a job and run it. If you catch a bug, just report it and wait until the Dev disagrees and asks you to repro it another 100 times each time asking you to place a break point at different positions. At the end of the day if they don’t think it is worth fixing it you have just wasted your time catching it. The general rule is if you can’t repro it then it is not a bug. Think hard before you make this choice it takes at least 2 to 3 years before you can change positions i.e. from SDET to SDE or PM.

  30. I must totally disagree with the last comment. While there are many automated tools/frameworks/etc. out there for us to use. At the end of the day, I still need to write new test code in order to test new features. Part of our job though is to also repro bugs that we found. The better SDETs I’ve seen even go a step further, and debug/investigate the product code to actually figure out the problem/bug. It’s not our job to just run a test and then report failures…that is usually a vendor’s job.

  31. Good Article

  32. Hi Ali

    What is the Starting salary of a fresher who joined as SDE/T in microsoft ?

  33. Hi Ali

    How to get updates regarding jobs opening in microsoft ?

  34. I just got an offer for a SDET II role with Microsoft, Redmond; and while it sounds cool to me that I’ll be working for Microsoft, it kind of breaks my heart to know that I’ll be working as a SDET. I have spent last 6-7 years of my career working for startups, developing products from ground up, and making the startups successful because of the product.
    It breaks my heard to know that I will not be making new, cool products as an SDET 😦 I am confused, I don’t know what to do. I don’t want this SDET job to be a “foot in the door” kind of thing, that’s not the right mentality. I want to do a job because I want to that job, not because I want to day dream and convince myself that one fine day I will get out of it and switch positions.

    • Don’t take it up. Be a developer. Being SDET is frustrating and people regard you as a 3rd rate citizen. You will get all the shit which devs wrote. You will be at the bottom of the food chain. Once you become an SDET, it will be really hard to go back to development in another company. Dont go from developing to test automation, you are demoting yourself in that case.

  35. If you have earned a BS in Computer Science, don’t take up the SDET role anywhere. Period.
    Please do justice to your degree, take up a Software Developer role. No compromises on that front.

    Various companies do a great job in marketing the SDET role as being at par with SDE role. Typically, college graduates are looking for a job and want to finish their job search as soon as possible. So a reputed company comes their way, interviews them for SDET role and offers them the position. Students take this up as it is good money and a reputed company and end of job search.
    Companies even pay the same salary to the SDETs and SDEs at the same level.
    However, it is my personal opinion that if a software engineer spends, say, 3 years in an SDET role, his coding skills severely diminish.
    That SDET has to work extra hard just to maintain his/her coding and design skills polished.
    Compare to an SDE who has spent 3 years in a Developer role, nothing can stop that engineer from bagging the next career defining job.

    SDETs are not at all better than Developers in terms of coding skills.
    Simply speaking, SDETs come at the bottom of the food chain. All the crap that Devs and PMs put in, SDETs have to deal with that.
    It becomes more kind of an administrative job in looking after the test pass, building some automation infrastructure module, doing sign-offs.
    Even worse, SDETs do not know the ins and outs of the product. If a bug comes in, it is the developer who ultimately fixes it, not the tester. Tester simply does the sign-off. Pretty lame, right?
    The SDE is the one who is closest to the product and understands the limitations of the software.
    Once you spend 3-4 years as an SDET, other companies do not interview you for any other role, but SDET. So even if you want to switch to an SDE role, it is tough.

    Some smart engineers who do join as SDETs change to Developer at the first opportunity given to them.
    I know at least 10 persons who joined as SDETs and then changed to a Developer role as soon as the opportunity came their way.

    I even know couple of people who were SDEs and then switched to SDET roles. I wonder what made them take this decision. Perhaps poor performance in the developer role, or maybe no career aspirations. Or maybe they like to do the crappy work and destroy their coding skills. Or perhaps, they like being called a “Tester”.

    I am going to put in a simple way: If a fresh college computer science graduate comes to me and says that he has 2 offers in hand. One from a reputed software firm offering SDET role at a salary of $105K. Another from a startup/reputed firm offering an SDE role offering a salary of $90K. I would tell that person that it is a no-brainer and take the SDE opportunity immediately. Don’t even think about letting that tester tag get attached to you. I would tell that person what crappy work/future lies ahead if he/she becomes an SDET.

    Lets say an SDET at Microsoft does good work and is good in coding. No matter how good that person is in coding and designing skills, he will be interviewed for an SET in Google, SDET in Amazon, SDET in Netflix and so on. Even the recruiters who first interact with the candidate, are not ready to let that candidate interview for an SDE role. Such is the curse of being an SDET.

    So take my advice, if you are an SDET, start thinking about what you want to become. And if you have slightest doubt in mind about your current role, start interviewing for SDE roles.
    Live with dignity and do some mainstream software development work. Doing the test work, you will be always at the fringes. It is hard to gain respect as a “Tester”.
    Give me one example of a software engineer who was an SDET and went on to become an Architect, Director, General Manager, or Fellow? None. Every single one of them have been SDEs in the past, not SDETs. I have seen some Test Architects but that sounds to me like a lame position.

    The interview bar is also lower. I know many test contractors, who have become full time SDETs. So even people without having a computer science degree can become SDETs. But I haven’t heard of a person who became an SDE and not having a college degree. There are always exceptions and I am talking about the 99.99%, not that exceptional 0.01%.
    Any recruiter who tells you that interview bar for an SDE position and an SDET position is the same is fooling you.
    I have heard many cases, in which recruiters are simply telling the candidate this – “Join as an SDET or don’t join at all.” If they themselves mention that bar is the same for both SDE and SDET, then why not interview once and ask the candidates whether they want a SDET role or an SDE role? It is all a big lie from the recruiters.

    Why this facade then? An SDET is ultimately a Tester, not part of the mainstream development. You are not doing justice to your degree. I know many SDETs who are not at all good in coding but surviving, somehow.
    Tell me honestly, do you like being called a “Tester”? I don’t. I prefer being called a Software Development Engineer.

    • Hi HeartBreak Kid, Thanks for your comment.
      Have you worked in Microsoft as an SDET?

      I am a fresh collega graduate and have the SDET offer from Microsoft and am puzzled whether to take it or not. Smaller companies that I have offers from have half the salary. and The culture and work experience at microsoft all sounds great. Just the role does not. Its a very hard choice.

      I am doing my research to find out if there’s much development carried out by SDETs or not at all.

      Thanks for your post.

      • Hi crime,
        A lot depends upon which group you are joining in Microsoft. A group like Bing is good to join as they are fast growing and you can get fast promotions. A group like Windows is old one and slow moving in terms of promotions.
        Coming fresh out of college, I know you might be tempted to take up the SDET role which is paying same as an SDE in Microsoft. But if the group is not good, you might end up spending most of your time on test passes, test case automation, test plans, and less time on actually designing something worthwhile.
        Apart from Microsoft, how many interviews have you given? What about Bay area? Have you tried there? Trust me, if you come to Seattle, there are few other options like Amazon and Expedia. That’s it. I have known so many people who have moved to Bay area from Seattle.
        If you have some time, try for software development jobs in companies in Bay area. If you don’t have much time left in graduation, join Microsoft but don’t let your coding skills diminish as SDET. Keep learning, and keep applying for development roles. Hard thing is, once you become an SDET and when SDET tag attaches itself to you, other companies (especially recruiters from other companies) will only interview you for SDET roles even if you tell them you want to interview for SDE role.

        See it is a tradeoff – more money after graduation but SDET title ( and possibly not good work designing and coding wise) OR less money but good work and Developer title, and possibly Java technology.
        Switching from SDET to Dev is possible, but really hard.
        Again, if you have some time, search dev jobs in Bay area, else join Microsoft, build a good platform and switch to dev later on. Simply be practical 🙂

  36. very good info about SDET.. i feel proud to be SDET…

  37. If you are a computer science graduate and if you are an SDET, it is not a good choice at all!

  38. Shame on recruiters who invite candidates for SDET interviews even though they very well know that candidate has been doing software development all his career.

  39. Hello
    Great article on SDET role. It looks to me as though it is a combination of a white box tester and automation test expert role. It that too simple?

  40. heyyy i have been offered engineer -II at walmart.com in testing(i.e SDET)
    so i want to know how is it?


Sorry, the comment form is closed at this time.

Blog at WordPress.com.
Entries and comments feeds.