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!

IBM Egypt Interview

September 14, 2006 at 4:25 pm | Posted in Computers, Egypt, IBM, Software development | 5 Comments

I haven’t posted in a while as I have been a bit busy doing some chores in Canada. I am now in Ottawa (just arrived yesterday) as I need to do some things here. It’s a very interesting place, and I think I like it more than Montreal. It is difficult to stay in Montreal without knowing French.

Anyway, this posting is to reference a blog post that Mohamed Meshref, an Egyptian software engineer who is now at Microsoft, wrote regarding his experience with the IBM Egypt Interview process. He writes about it in the following posts (warning: He is highly critical of the IBM Interview):

IBM Interview Part A
IBM Interview Part B

Anyway, in response to this, I have some comments I wish to make:

1) I think it is okay for a Software company to require a person to be able to communicate effectively in English. Especially one that deals and works with customers who expect this. Microsoft USA can get away with this, because it is generally well known that the engineers they hire are highly qualified, regardless of their English speaking capabilities. Also, yes, it is great that Microsoft offers English courses for people who are not so good at speaking the language, and I would recommend any/all company offer the same. The thing is though is that some customers, when seeing very poor quality English from an Engineer, they may think the quality of their work is also shoddy. I used to work for a smaller company where they hired a candidate who seemed to know English (well enough to pass the interview with the owner of the company who was British), but then when I communicated with him (in English)  regarding a lot of things he was just unable to comprehend what I was saying. I believe having some standardized English test is fine. I also believe Meshref got bored from the test, which I can understand, but I wonder if he has seen the TOEFL exam, as it is pretty much the same difficulty/complexity. If you know English well, it will be a piece of cake. If you don’t, it will be difficult. Also Meshref writes the following:

I wont believe that a customer from US will come here to Egypt to have some sort of software developed to him inside IBM Egypt!!),

This is far from true. Most of my dealings at IBM Egypt were with various IBM labs that were located in the US. Plus, I know of many projects at IBM Egypt where the customers are US companies (and yes, IBM Egypt also deals with local customers, but this is the Business Consulting Services (BCS) side mainly, while this exam is for the TDC (Technology Development Center) which is basically an IBM lab).

2) For his comments regarding the technical exam. Well, the Microsoft Interview pretty much does the same. On the phone interviews I got asked questions regarding C++/Java which anyone who opens a book and reads will know how to do. I’ve also been asked to do “pretty famous” questions such as writing an atoi implementation. So I do not think it is a negative thing to ask for this. And keep in mind, one of the requirements for IBM Egypt is to have a Bachelors in Computer Science to even reach this stage, so its a safe bet, that you wont get any secondary school students applying. I do agree though that they could perhaps do a few technical person-to-person interviews (like Microsoft does), but keep in mind, IBM Egypt has different recruiting goals than Microsoft. Microsoft HQ wants to hire the best of the best, they want to keep “average” people out. I do not believe IBM Egypt has a similar goal. IBM Egypt wants to hire people who are just capable of doing the work. They do not have to be exceptional programmers. They just need to be good enough, and I believe their technical exam is based on this.

3) Regarding the Object Oriented Exam. Keep in mind, IBM purchased Rational which is pretty entrenched in UML stuff. I don’t like UML (I could write a whole post about why, so I wont get into it here). But I agree with Meshref on this point.

4) Regarding the general IT exam. I think this section is also fine, to try to weed out people who just took a certificate to program for a living vs. people who are interested in computers/technology. If you don’t know what XML in this day and age, then I question whether you should be working at IBM Egypt. Anyway, I once got sent a pre-screen worksheet by Google where they asked such questions as “What are contextual ads?” They are just general filtering questions.

I do not think this is the worst type of Interview as Meshref claims. You have to keep in mind their recruiting goals. I wonder what other interviews Meshref has done in Egypt that he would consider better than this. I have seen other companies that hire based on a person to person interview that does not even delve into technical issues. Also, once the exam is done, its just a filter or pre-screen. In Egypt, just as anywhere else, when you have graduates from University there are good, qualified people, and there are people who are not so good. IBM Egypt does the exam to try to get the best ones. Once you are done with the exam it is not over though, there is still an interview with the hiring manager, who has your scores. In one interview, I basically got asked different design patterns questions. At this point in time, I had no clue what design patterns were 😛 but I was able to figure out some of them on my own, but in general I do not think I did well on that. I had another interview with another manager where I basically just got asked a lot of general HR questions regarding my previous experience and what I have accomplished.

Regarding some of the other comments:

  • Yes, there is a dress code unfortunately. Pretty much shirt and pants, and tie. We don’t necessarily have to wear the tie, but we must bring it in case of meetings with customers or upper management. It is not something I really thought about a lot and it didn’t really bother me. But I can imagine it would bother and irritate other Engineers.
  • The timing is a bit inaccurate, its from 8.30 AM to 4.30 PM and on Thursdays until 3.30 PM. Unfortunately, they are a bit fussy about being punctual, which is a bit ridiculous. I believe the best policy is to just get your work done on time. If you need to stay late you should, if you are done and want to go home early that should be fine.
  • Regarding the salaries. I believe IBM Egypt has a competitive salary compared to other places in Egypt. Certainly not the best, and also not the worst. I’ve seen a lot worse, and I am sure there are a lot better. Working though is not usually about the salary. I was offered more than double my salary at IBM to remain working in my previous company and I refused (for various reasons). For an entry-level, fresh out of college position, I believe the salary that Meshref wrote is good for Egypt.

IBM Egypt is certainly not a perfect place, and there things that can be done better. But I believe what they have currently is working for them, so they will not feel a need to change. Anyway, just thought I’d write my opinion on the matter.

Joel Spolsky Article and Job Board

September 8, 2006 at 2:44 am | Posted in Computers, Software development | Comments Off on Joel Spolsky Article and Job Board

Joel Sposlky is one of my favorite writers in the world Software Development/Management. His articles are very insightful, relevant and to the point.

Recently he started a niche job board that aims to cut the problems of places such as Monster and other online web boards. There is a policy of publishing the company names, so you always know what you are applying to. Also, the fact that it is targetting people who read Joel Spolsky, I believe, will give recruiters higher-caliber candidates.

Anyway, in honor his new job board, Joel has written a couple of new articles which I enjoyed and I thought I would share with you.

The first is Finding Great Developers and the other one is Field Guide to Developers. Enjoy, and if you want tell me what you think.

Blog at WordPress.com.
Entries and comments feeds.