Today I was talking with an intern who was having a good, but not great, summer working on one of our teams. He felt that perhaps he would be more successful if he was involved with testing more than development. His question was "is this really possible"?
It is good question. Since Microsoft is growing and big, there are always going to be new opportunities than we have people for. The question is really whether Microsoft and any one person makes a good match. In talking with this one person and the kinds of experiences he was looking for, it seems like testing might be a better match so I definitely encouraged him to apply for a second summer with us but in testing. We'll see what his hiring manager and mentor working with recruiting all feel. In the end, we always have the bests interests of the candidate and Microsoft when we make these decisions--it only makes sense if there is a good match. As Mike Maples (a retired VP at Microsoft who is really responsible for so many great things in Office/applications and who had a huge impact on me) once said, "things always work out in the long run" and that has always meant a lot to me in my career.
I started at Microsoft in development as a software design engineer. I worked for several releases on our C++ products helping to create the Microsoft Foundation Classes. In hindsight, I should have seen that I probably was a better fit for program management (Chris Pratley's summary of program management is a good one for sure). I always seemed more adept at working on the customer, design and project issues than on writing the code--my code was always nice and orderly, but I probably couldn't write enough code fast enough to really be the very best at programming. Hmmm...I'm not sure I should be sharing that. Sigh.
So I moved to program management when I switched to the Office group. One thing that is great about Microsoft is that because we have such a broad "interface" with customers you can have opportunities to work on just about any aspects of the software world. If you look at the courses you can talk in comp sci in college (compilers, databases, AI, human factors, databases, operating systems, graphics, etc.), Microsoft has products used by tons of folks in all those areas--market leading products dedicated to leading edge technology. So making a switch is not only easy, but also something that you might expect to do after a few years in one area if you want.
Program management seemed like a more natural fit for me--working on designs, ironing out the details of features, considering alternatives, and also the externally facing aspects were great fun for me and really helped to contribute to Office as we grew the shared architecture of the product. For example, one of the early things I got to work on was creating a "high touch" advisory council of customers we could work with in an ongoing way while we made Office 2000. This was a unique creation at Microsoft and the first time we engaged customers in actually helping us to design features of the product through iterative and interactive design. If you're interested in stuff like this you might check out a research area from a professor at MIT named Eric von Hippel, who pioneered a field called "lead user research". There is a lot of similarity to what we developed in program management around the Office Advisory Council (which is something we continue to do, even with Office12).
That's a long way of saying that what I told this one intern--moving around is a normal part of developing your career at Microsoft. You have all the opportunties to "dive deep" and excel at one area (for example, folks who have worked on databases in Office have done so for many years because it is technically deep, always evolving, and super important for customers) or you can learn the ropes in one area/discipline and move to another.
Well so far so good--I seem to be writing a lot. If I'm off the mark or folks have other topics of interest, by all means let me know. thx. --steven