Share via


What does the D in SDE stand for?

When I was in college and heard about some of Microsoft positions (PMs, SDETs, SDEs) I thought immediately that I liked writing code and solving problems, so I wanted to be a Software Development Engineer (SDE). But what do SDEs do?

What does the D in SDE stand for?

D is for Development

Ok, let’s get it out of the way. Yes, the one task an SDE does that no one else does is “they write product code”. An SDEs main task is to write code that is secure, maintainable, readable and that does what it is supposed to do. The program written should also have good performance and also be “world ready”. An SDE without good coding skills is like a carpenter without tools.

D is for Design

Contrary to popular opinion, a developer does not spend every day of his/her life coding in a closed room (Although some SDEs would actually enjoy that). An extremely important part of the developers life actually happens in front of a whiteboard, where he/she is drawing boxes and arrows. In my opinion, this is probably the most enjoyable task, and one that should be given enough time. Having a good design makes all the difference when the time comes to actually write the code.

 

The design phase is the spiritual creation of the code. The code has not been written, but with a good design – writing the code should be pretty straight forward. And if you are designing an API, you should pay particular attention at your customer. How does your customer like to write code?

 

D is also for Debugging

In my experience, I spent about a fourth of my time, looking for bugs and eliminating them. In the end, that’s what SDETs get paid for, to find bugs in my code. Fixing those bugs increases the quality of our products. When debugging, I should be able to fix bugs that other people wrote. I might have inherited some code, or need to help someone else with their bug count. That’s OK – it just means that an SDE should also learn to read code and understand it.

 

D is for Discussion and Communication

When I was in college I took an English class that was necessary for all engineers to graduate. I remember someone saying something like this to me: “I don’t see why we need to take this class. All I want to do is write some code”. If my friend is reading this blog post, he will know by now the importance of both verbal and written communication. The development of large software projects is an art of communication. That’s one of the reasons, you can’t just add more and more developers to a project to complete it faster. As the number of developers increases, the need for communication and the time that communication takes increases as well.

 

There are many ways of discussion and communication mechanisms. Probably the most common in my personal life is e-mail and face-to-face communication. There are other methods of communication that are very valuable as well. During the past year, we have used an internal wiki to share information in our group. That has been tremendously helpful.

 

Before I move on to the next “D”, I just want to point out that our friends the PMs (Program Managers) are communication masters. A good PM is like the oil that keeps a machine running smoothly. I hope my PM friends like the comparison J.

 

D is for Documentation

If I die today, who will take care of my code? Who will finish the piece of art I have been dreaming about during the last 6 o 10 months? That is the question I ask myself to force myself to document my ideas and my code. Software is very dynamic, and the actual person writing a piece of code can change just as easily. Even if there are no changes in the ownership of code, your piece of software is surely interacting with many components that you did not write. Good documentation can make all the difference.

 

So a good developer makes sure the ideas are not only in his/her head, but written down in paper – well maybe not paper, but a file somewhere. Make sure that file is easily found.

 

F is for Fun

Ok, F != D. But Fun in Spanish is “Diversion”. Anyway, as you do your job, remember to have fun and enjoy what you do. Do something that will serve many and you will see your efforts will bring you much happiness.

 

-Luis E. Cabrera

*This is my personal take on development. I am sure others might have different experiences -- but they probably are all having fun anyway.