I came to Microsoft 8 years ago, happy but a little frightened about a salaried job, happy not to be travleing, and most of all, amazed that I got paid to beat on new technology and make it break, but my goal was to eventually be a developer here. I always loved building software for myself, and testing it would be a great way to get in the door, but eventually, I knew that I'd want to make the jump to development.

Yet here it is, 8 years later, and I'm a test manager. Why? Well, it wasn't an accident.

See, after about 2 years working with my Program Management and Development counterparts, I had an epiphany of sorts. I loved what I was doing; I mean I really loved my job. I was writing code, lots of it, as much as I wanted. My job was writing the code that tested the code we shipped. I got to be PM, Dev, and QA all in one over all the test code. Plus I got all the opportunities I could ask for in impacting the features we shipped. And as a Test Engineer, I'd written tons of specifications and dramatically impacted the shape of the features just by using the thing and giving my opinions, and by leaving the implementation details up to someone else, I was broadening my scope of influence. I'd even been asked to write shipping code a time or two because I was the last remaining expert on an existing code base.

So back to my epiphany. I realized that my job could be whatever I wanted it to be. If I took the narrow vision of a software test engineer or software design engineer in test's job and boxed myself into a job description, then perhaps I would have moved to development. But I realized that the job description is just a minimum bar; it's the stuff that has to get done to ship. But here is an employer that wants employees to go above and beyond. No, that's not quite right, Microsoft actively encourages them to do so; in fact, the entire compensation system is based upon you doing more than just 'your job'. I had the freedom to make my job more than just what was in the job description. You have great ideas, you have a strong vision and are willing to stick your neck out a bit (and not afraid to be wrong from time to time because your coworkers will let you know in no uncertain terms that you are wrong), the sky is really the limit.

So you're saying, Adam, that's great, but why is it that test can expand their job beyond their job scope, but dev and pm can't? Well, they can, but it's not as in sync with what they are already doing, so it's a tougher battle. For Dev, they have to get so technically deep in one area to code the features that they struggle stepping back to see the 'forest for all the trees' in most cases. When they can do this, typically the don't spend too long as a developer. They move to PM or to a Dev Lead. There's a well known saying at microsoft; if you want to know how a product works, ask a tester on the team. And it's mostly true. Dev generally know the feature the coded really well, but rarely step back and see how it integrates into the whole. And they are generally quite arrogant about it. Think I'm wrong? Check out this post by Jon Avner

PM, well, if you get PM to actually install the product, they could tell you how it was supposed to work when they wrote the spec. OK, so I am being a bit facetious; I have worked with some great PMs who were the first people to check a bug on the product when it came in. But largely, during the milestone while dev and test are coding, they have moved on beyond what's being coded and working on the next set of specs; using the product day to day and challenging the ideas they already put down on paper and got everyone to agree to is probably an akward step for them.

So, OK, Adam, I get that QA can have a broad impact, gets to write lots of code, and get's paid to poke holes in other peoples code! So why Microsoft?

Challenges abound. Just working at Microsoft is challenging; but working with some of the brightest people in the world every day is invigorating and fulfulling as much as it is challenging. For me in my current role, building and driving a QA organization and the entire product unit to stand for quality in every respect is both challenging and rewarding.

So I could work for lots of companies, but Microsoft is different. Here they encourage me to go above and beyond. While I've spent my entire career in developer tools, I have an impact on the quality of Office and Windows. I could move to games or portable devices, or tablet, or exchange or sql server and have a rewarding experience in any of those groups. The opportunities for moving between organizations to become reinvigorated by a product, well, I don't think there's anywhere in the world quite like Microsoft.

So here I am, 8 years later, doing my QA job, and still at Microsoft. And I wouldn't want it any other way.