Yesterday's memories may sparkle and gleam, tomorrow is still but a dream.

This year just like every year, I am very involved in recruiting students from college campuses to work on our product development teams. I’ve been active in recruiting since I arrived on campus at Microsoft—I think I probably still hold some sort of record for the most interview lunches in a given recruiting season. Every year, since 1990 has always been unique—we’ve gone from “who is Microsoft” to “aren’t all the opportunities gone” to “there are younger cooler companies to work for”, “didn’t Microsoft miss the internet” to, well back to, “there are younger cooler companies to work for”. Students always ask “so why would I want to work for Microsoft now” given the “perception” or given what I read in the press (and blogs)?

There is no one answer to this question because how it is answered depends on you—what are you looking for, what types of technologies do you want to work on, what other places are you considering working or schools are you considering attending, or what type of work environment do you feel comfortable in. So this conversation always starts with me asking more questions, rather than diving into a canned pitch. There are, however, common themes that I think are worth reiterating that point out that, if you have the skills and desire, joining Microsoft now opens up unique opportunities to develop your own career and to impact the world on a scale that is really hard to imagine.

For me, there are really three qualities that I would highlight if I had a chance to speak with you on campus or if I had a chance to exchange mail with you while you were considering an offer. These are the “top line” characteristics of Microsoft and of a Microsoft career that I believe in most strongly and thought I would highlight:

  • Breadth of software you can work on
  • Connection to customers you can have
  • Always looking to improve and do better at what we do

Breadth of software you can work on

From the living room to the board room or from the research labs to the store shelves, Microsoft is working on the broadest range of software of any company. What this means for you as a developer (or tester or program manager) is that you have the opportunity to work on software in just about any commercial domain you can imagine, and at the same time doing so within a single company and in many cases in a single location. 

When you look across the products Microsoft is working on and the opportunity to do leading edge development on such a broad range of technologies, you have an unparalleled set of career prospects. I think this is especially important because as an undergraduate in computer science you don’t get exposed to all the possible things you could work on and as your career progresses you develop new interests and having the chance to dive right in and work on those is a big benefit of Microsoft. As an undergraduate (or master's degree right after undergraduate) there is a very good chance that you took classes in compilers, operating systems, databases, and maybe something like artificial intelligence, graphics, or networking. You’ll notice nowhere in there are spreadsheets or word processors! So if you would have asked me when I was in college if I thought I’d end up working on those technologies I would have thought you were crazy—after all I got an A in operating systems and in languages so I thought for sure that was my calling. In fact, that is what I was hired into Microsoft to work on (the convergence of databases and object-oriented languages). But it was only though working on the tools and frameworks that I was even exposed to folks working on Office that I became interested in it. The opportunity to work in an environment with so much going on is itself an eye-opening experience. And you don’t need to go far as there are brown bag discussions at lunch, invited speakers, and of course networking (the human type).

A lot of times people look at the new areas of Microsoft and get a bit “cynical” and talk about how we’re not #1 in this or our products are behind in that. I suppose this is one of those damned if you do, damned if you don’t—if we happened to be #1 in everything we do I think there would probably be another type of criticism. But all this really shows is our long term view of all of the software we embark on developing. We don’t give up easily and we dream big about what we want to accomplish. That means sometimes in the short term we get a bit ahead of ourselves or frankly expectations in the marketplace. But that does not deter us. A great example (outside of Office, which is a well documented example of sticking with things over time) of this are our mobile phone products—we’ve been working on this for quite some time and have probably had our fair share of fits and starts. Most recently we announced Windows Mobile 5.0 software and a slew of new devices that support the software. Our mobile phone offerings have become the leading smart phone operating system and created a platform for applications in the mobile space. I just happened to buy a new i-mate JasJar device and it is really just the most amazing amount of functionality in one small case ever imagined, and of course we know we’re not done and there are more things to make better and improve and we will keep at it. And check out the K-JAM about to come out as well! (not to mention the Treo running Windows Mobile as well, one I am most looking forward to!) 

It should come as no surprise but many of the people who work on Windows Mobile and our SmartPhones started out at Microsoft in places like Windows, Office, developer tools, etc. The opportunity to jump from one type of technology to a wildly different one (like from developer tools to working on Office!) is a key benefit of the environment at Microsoft. 

Connection to customers you can have

Everybody has customers so how could having customers be a unique attribute of Microsoft’s? For me, the fact that we have hundreds of millions of customers around the world (and slightly more hundreds of millions of people that use our software) is the most amazing thing. The idea that the products you work on are a key part of the work (or school or home) lives of so many people is the biggest employee benefit you can imagine, and it is also a responsibility we take very seriously.

Customers come in all sorts of shapes and sizes and the marketing folks refer to this as customer segments. You can have customers that are individuals buying one product at a time, small business owners, medium businesses, global corporations, or you can think of customers and end-users, developers, IT professionals, or business decision makers/owners. Microsoft is in a unique position where our products cross all of these segments and customer types—from the very start of the company, the goal has been to make software available to the broadest set of customers possible at low prices. Microsoft also has software in every business model (retail, OEM, volume license, advertising, subscription). Most companies target one segment--the IT Pro or the individual consumer, or one type of business model like advertising. 

To build our software we connect to customers through a variety of means—whether that is directly through 1:1 or 1:many forums, through our worldwide sales and support organization, through techniques like usability studies, or through systematic research. One of the biggest innovations in connecting with customers has to do with removing a negative experience or “crashes”. This is something that has plagued software since the days of Grace Hopper and the description of bugs, but is certainly something that Microsoft has contributed a fair share to. We developed a feature for Office, now used by all Microsoft products, that reports back crashes (anonymously, privately, and via an opt-in mechanism) and allows them to address software problems systematically and based on real-world customer experience. This has had an amazing impact on the customer experience in terms of improving quality – we know this because we measure (anonymously, privately, and via an opt-in mechanism) the “uptime” of our products. We know that we have dramatically improved the quality of our products as a result of this technology. [At this point I will no doubt be /.’ed – please don’t bother] It is worth noting, that this technique and feature was originally developed essentially “off the books” by a couple of folks on the Office team – so those of you wanting to know if there if officially sanctioned exploration allowed at Microsoft the answer is “you bet” and this is a great example of that.

And while many think that products like Office and Windows are all about "clients" or "servers" it is also worth noting that we have a very rich online service as part of these products as well. The Office server, Microsoft OfficeOnline, is where we connect with customers by providing assistance materials, templates, clipart, training information, and a whole set of tools for IT professionals and developers. The site is developed and run from within our product team and gets over 50 million unique users per month--that would make it a top web property on its own (I believe that is just half the unique users for a popular search engine). This connection to customers allows us to adapt the product in real time--providing content and information in tune to the geography, time of year, or specific problems people might be having.    

But overall what I believe distinguishes Microsoft from other companies is the unique combination of “broad usage” and “broad purchasing” of our products. This combination allows us to have a very strong connection to both our users and to our purchasers of our software. It is important to distinguish between these because they offer very different dynamics and when you considering “can I put this feature in” or “will this feature fit in the schedule” you really have to ask “who is paying the bills” – because when you know who is paying the bills you know the high order bit for deciding if your feature can make it in the product. The tighter the connection between who is paying you and who is using your product the more aligned your own decision making can be. On the other hand, if the people that pay the bills have a way different agenda than the people using your software then you will have challenges reconciling what to do and how to please your users relative to pleasing your customers. For example, while many of our Office customers represent the IT departments of large corporations (sometimes resistant to change, and very structured in their view of software) the cool thing is that all the IT professionals are also end-users. So when I go to meet with a IT manager at a big company, while the conversation is often about “cost of ownership” or something like that, it quickly turns to the IT manager’s own usage of Excel or Outlook and wanting to see those improvements. So while Office is a product often sold into an IT Pro segment, the fact that it is actively used by both the IT Pros and everyone else makes it possible for us to stay very focused on meeting the needs of customers and not get too confused by “who pays the bills”. There are a lot of new companies out there that are trying new “business models” where there is a growing separation between who pays and who uses the software—putting those at odds is going to make it hard to “do the right thing” over time, I believe, so consider the money trail and how is really paying for the software you write.

For me, nothing beats being able to talk to anyone who has a PC about the software you work on and getting their feedback first hand. When I am asked about why I work on Office after 10 years, the answer to me is obvious – I can talk to anyone who uses our product and have a very exciting conversation about what we can do better what sort of things they would like to be able to do with Office and how software can make their business work or school work better, faster, easier. The new user experience in Office “12” is a great example of how we are able to focus on the broad end-users of our software and do something that is truly innovative and at the same time in just a few clicks I can show someone the things that they will be able to do with Office that they just weren’t able to do before. That is a special experience for sure!

We have two recent examples from Office "12" development that are worth mentioning that are connections to customers that go above and beyond the very broad digital connection through our Watson bug reporting or OfficeOnline web site and are more than the common feedback through casual interactions. Over the summer we had our "high touch" beta customers come for a week of in-depth discussions about Office "12" and then just a few weeks ago we had a similar set of discussions with our MVPs (Most Valued Professionals). The two audiences could not be more different as the first represents IT Professionals and the second represents the power users and developers. But both forums allowed the development team to have in-depth discussions with customers in a very high-bandwidth forum. There are few places where as a developer, tester, or program manager you get the chance to work with amazing groups like these and also have the experience of a direct customer connection. It was really quite amazing to see the reaction folks had to Office "12". You can read a few blogs about the MVP summit if you'd like.

Always looking to improve and do better at what we do

From the very first experiences I have had at Microsoft through the experience today writing this post, Microsoft continues to demonstrate that we are a group of people committed to always doing better, always improving, and always learning. We’re not shy about this—in fact when you read books about Microsoft’s early years what you can read about is not just the success but all the “failures” along the way. For me, Microsoft reminds me of a professor I had in college who once did the course evaluations just after the mid-term exam—his theory was that he wanted to make the class better not just in the future, but right now. If you’re prepared to look critically at your own work, take feedback, and act on that feedback then Microsoft is an environment where you will thrive.

Recently a topic that has gotten much attention is “developer efficiency”. In fact if you were reading some recent stories about Microsoft you would think that this problem just sprung up on us and that it is something new. I was speaking with a group of developers who raised this issue (they don’t work for me—they just pinged me and we got together last week to talk) and it was interesting to them to hear that the issue of developer productivity has been something that Microsoft has seen as both a challenge and opportunity from the very start of the company—keep in mind that the company’s first products were programming languages. In fact, when I was working for BillG as his technical assistant one of the biggest projects I worked on in 1993 was “developer efficiency” as there was a strong feeling we need to do better. In fact, the development of tools like Visual Basic, Visual C++, and Access all raised the bar for developer productivity dramatically. At the same time, the scope and scale of applications continues to increase even faster. 

This all nets out to the notion that computer science just isn’t where we want or need it to be in terms of the “bottlenecks”. The field is only 25-30 years old so we have a lot more learning to do. Think about how behind most highway construction or home remodels are and that is something that has at least a thousand years of experience. Software engineering challenges are not unique to Microsoft, but it probably has unique a impact on Microsoft because of the scale of usage and the unique usage of our software. Take any product and use it in 600,000,000 configurations and you are likely to have some unique engineering challenges. Much of what Microsoft does simply isn’t done anywhere else in the world. So we are always learning along the way. But keep in mind, anything that is used differently by 100M people is likely to have a “slower velocity” of change than something that is used by 100K people or something that has a very narrow usage pattern or “user interface”. If it seems to you that even “internet time” products are sitting in beta for a long time or that the release cycle for those is looking more like years than it used to, then you are right. As the scale increases for any product you have to take that into account.

I mentioned that the notion of looking at what elements of a project went well and where improvements could be made was an important aspect of Microsoft I learned as soon as I visited. In fact, the summer I joined was definitely buzzing with a memo that was widely distributed about the challenges faced in the development of a couple of key projects (Word 1.0, Access 1.0, etc.) This memo was “classic” Microsoft – here you had products that were released and got good (not great) reviews and yet internally if you were to read the memo you would have thought that the projects were unmitigated disasters. This is just Microsoft’s culture of looking critically at the project. Out of this work came a whole new era of focus on up front planning and specifications. Now I know many of you will jump to the conclusion that we must not have learned very much if we keep making mistakes, but keep in mind that as fast as our process improves the scope and scale increases to outpace the ability of software engineering to keep up. If you think about it, we could probably go back and re-build Windows 1.0 or Word 2.0 knowing what we know now and do so without all the schedule and quality challenges, but unfortunately our customers are not asking for Windows 1.0 or Word 2.0 anymore but rather much more sophisticated software. Just like the fact that even after building one highway project, the second one still seems to have schedule and budget problems (since the Romans!)

If you are interested in the techniques we have used internally to look back at projects to work to improve them, then take a look at this note from HBS Press, Learning from Projects: Note on Conducting a Postmortem Analysis from 1999. The professor looked at some of the techniques we used at developing project post-mortems. I’m a co-author but that was just because of the access to the information I offered. It is worth noting that Professor Thomke thought that the notion of a post-mortem was something that was unique enough at Microsoft that he chose to write about it—this is a professor that has a PhD in operations research from MIT, was a McKinsey consultant, and has done research on dozens of companies around the world (including excellent manufacturing companies like BMW). 

As leaders in the field, these are our problems to address and it turns out this is an area where we have active research, new tools, and internally we are always trying to improve our development process. Many of you probably took courses in compilers and languages in college or graduate school and these might be areas you want to work on at Microsoft. 

I know in reading this you might think “yikes” but I would say that you should listen to what Bill Gates says this week as he visits college campuses—there is so much opportunity for software to improve and to continue to change the world. That’s what we’re all about.



Finally, I would say to a candidate considering working at Microsoft that Microsoft is about software—we think of software as the heart and soul of so many aspects of life and work and such a powerful tool. The ability for software to transform the way we live and work is as big as any invention ever, yet here we are right at the very beginning of the curve. When I think about that I am reminded of Carl Sagan using a calendar to describe the history of the earth and what a tiny sliver of time recorded history is—software is the same way, we have gone through a tiny sliver of invention and innovation. There is so much more to do and so many exciting things yet to come.