We’re actively hiring interns from the college campuses we visit. I wanted to use this as an opportunity to talk about what it is like to be an intern in Office.
You can read about the specifics of the intern program on the intern web site: http://www.microsoft.com/college/ip_overview.mspx. You can read about the job types available (SDE, SDET, PM) on the product groups as well as the structure of the internship (12 weeks min), and the benefits (endless fun). I’m going to focus on the part I like the most which is the work you get to do on Office.
First and foremost, as an intern you are considered a regular member of the team from the day you start. There is a lot of opportunity to learn and of course we don’t expect you to be proficient in your discipline at a commercial level when you show up. In fact the point of the summer is to offer you the opportunity to rapidly learn the skills necessary to write code, test products, or design features at a commercial scale for 400 million customers around the world. My goal for all the interns is to work on something that customers will see when Office12 ships. So whether you are an SDE, SDET, or PM we structure our projects so you have the opportunity to contribute to something broadly used.
I would emphasize “opportunity” because a big part of the internship is offering you the opportunity. Microsoft has always offered a place where if you have the skills and abilities your work has an opportunity to shine. What we ask for the opportunity is hard work, an open mind, and a commitment to the project. Being an intern in Office is not easy, and it certainly isn’t a summer vacation. In fact, some students are a bit surprised at the challenges at contributing software to such a broadly used product. It is a lot different than working on an assignment at school, that’s for sure. Some of the big differences:
Tools and techniques – building software (whether on a PC or on a server) for a broad set of customers requires a different set of tools and techniques. You are likely to be using tools such as Visual Studio and the .NET framework designed to work with large numbers of developers on big projects. So you will spend some time getting up to speed on C#, C++, etc. if you do not already know them—don’t worry you don’t need to know them. We also of course have a group internally that trains on these tools and offers courses in these and all sorts of other areas which you can tap into.
Security, Privacy, and Quality in general – perhaps the biggest difference between commercial software at scale and other projects is the need for all of the factors that customers expect under the umbrella of quality. This means you will spend a lot of time designing in, coding, or validating these needs of the product. You will spend way more time on this than you have spent previously on non-commercial products.
Performance – performance (speed, memory usage) are key to commercial code. All that stuff you learned in algorithms will matter a ton. You will need to consider your design in the context of a large system so you will not have the freedom to use a ton of resources on just your part of the world.
Iteration – The biggest difference I always think is that you will spend more time on one area than you would in a course. You will spend time iterating on the design, test plan, or code because getting it right is the goal.
Scale – Perhaps the biggest contrast to coursework is going to be the scale of working on software like Office. As described before, while in theory it is cool if you can make a few billion dollars with a group of 20 people, in practice this hasn’t proven to be the case. Microsoft, Yahoo, Google, and others are all very big companies. In fact we are at the point where most of us have a number of developers that pretty much feels the same—once you get past about 1500 or 2000 developers it is tough to tell the difference, which is why Microsoft feels the same to me now as it did when I started (the company was a total of 3,500). By the way, don’t get confused by the numbers you read about the size of a company overall. Microsoft in particular (among those) has a large global sales force which requires a lot of corporate infrastructure outside of “developers”. For what it is worth, the team that creates all of the Microsoft Office Professional code fits in building 36 (and some in Mountain View!) and the number of developers is in the mid 100’s.
Mentorship – and finally an important part of working in a commercial setting, and perhaps the biggest learning opportunity as an intern, is getting to work closely with an experienced member of the team. You will have daily contact with your “mentor” and you will frequently interact with your group manager. I would add that I will definitely be on the lookout for cool projects and might drop by your office for a quick demo when you’re not expecting it :-)
Leaving out all the details of the cool furnished apartments and stuff, your internship will start with an orientation that all interns receive—you learn about all the benefits, meet lots of other interns, and get the scoop on the summer event schedule (activities, parties, outings, etc.). Shortly after that you’ll head over to your office. Interns work in the same offices that full time employees do though generally, just like in college, you’ll share an office with another intern. You’ll get all your hardware and spend some time getting your @microsoft.com email address and the like.
Next up you will start to talk about your project and what the summer holds for you. Things will move pretty quickly since you only have two weeks. Your mentor has written up your project plan—the plan will outline resources, objectives, and explain the overall project to you. Of course this is just the start and your own view of things will contribute greatly to how the project plays out. You will probably spend the next day or two getting oriented around the code, tools, and finding the drinks and cafeteria.
You will work with your mentor pretty consistently. You’ll begin to get a handle on the project, but you’ll have a ton of questions and you will start learning right away. You’ll see the amazing stuff that goes into building a product like Office. You can head over to the labs where we have all the hardware that builds and tests Office if you want to get a real sense of things. If you are in program management you might spend some time in the usability labs or in focus groups/field studies.
Specifically for Office 2007 we are going to be at a super exciting time as a team because we’re heading into the final phases of the project. You will have an opportunity to be on the inside of a super important project. Because we’re winding up, in all likelihood you will be working on forward-looking projects helping us to define the next product. You might work on an area that we are going to release on the web or put in the first post-release service pack. Or you might actually get to work on the final phases of 2007. It all depends on the project and a little bit on your job. If you are an SDE or PM, there is a good chance you will work on future work, which is appropriate since many on the team will be doing the same. If you are an SDET you will want to join up with the full-time SDETs who are focused on the 2007 quality issues—performance, security, etc. In all cases, there is a ton of cool stuff we’ll be working on.
Since you are a full fledged member of the team you will also participate in all the team activities—events outside of work or team meetings and the other things that go on as we build Office. There will be a lot of neat stuff to see in action—how we release the products, how our OfficeOnline web site works, how customers are using the beta release, etc. Team meetings are all about keeping up to date on that sort of information.
Let’s fast forward to the end of the summer—your project is rocking, you did way more than you were supposed to, and in general had a great time. The final thing we ask of all interns is to present their work to the team and to the corporate VP of your group. This is the most fun for me since I try to go to as many of these as I can. You’ll find a very receptive and supportive audience. This is an important part of your experience because in the corporate environment you are often called upon to present your work and undergo a peer review ;-)
The work is challenging—there is no doubt about that. It is not a vacation since you are contributing real code to products customers will pay real money to use. The stakes are high so we will take the work seriously. In exchange you’ll have an experience that is pretty close to real world. We don’t try to dress it up and we don’t hide the hard parts. Sure there is the party at the Chairman’s house and more stuff planned and scheduled than you can imagine, but the work is real!
I should also mention the opportunity you have to learn about the rest of Microsoft and things like Microsoft Research (MSR). Throughout the summer there are open talks by leading researchers and guest speakers of all sorts invited by MSR. These are streamed to your desk or you can head over in person. In addition, each week there is a “tech talk” (where the name of this blog came from) from a product group VP who offers up a view from their product/area (and in my case, a bunch of cool free stuff if you know how to work the system!)
I hope to see you at the tech talk this summer!