Microsoft Garage Internship — 4 Months of HoloLens, Unity, Kinda-Startup, and Memes
Hi, I’m Vincent,
a CS student at the University of Toronto’s Scarborough Campus (UTSC). I was lucky enough to experience a 4 month coop term with Microsoft Vancouver in the Garage Internship as a Software Developer. I had a great time throughout the internship and felt that I’ve grown as developer because of the challenges.
As such, I’d like to share my experience, interview process, and thoughts on the overall internship.
*Update: The project info was released to the public, please see below for further info.*
Application and Interview Process
Around September/October 2017, a Microsoft campus recruiter visited the UTSC campus. I had my resume quickly reviewed by her and was later selected for an on-campus interview. The university also asked that I apply online and sent her a follow-up email with a brief intro about myself. The interview was pretty straight-forward, some questions on my resume then one technical question with a MS engineer.
About two weeks later, I received an email inviting me to an on-site interview in Vancouver. I was super excited, this was the first interview where I was flown on-site with per diem and everything.
To prepare for this interview, I spent around 3–4 hours a day on practicing HackerRank, ‘Cracking the Coding Interview” with house mates using a white board or a note book, and reading any materials on technical interviews I can get my hands. I also attended a few technical interview workshops held by my school’s CS club. Lastly, I spent sometime watching videos on Big-5 interviews, trying to get a hold of any techniques that might give me an edge.
Around mid-November, I flew to Vancouver and interviewed at the MS Granville office.
This was definitely the most rewarding interview I’ve had so far. There were 4 rounds, 45 minutes each, with a 15 minute break in between. I had fantastic interviewers; all very helpful, friendly, and crazy smart (one even gave an inspirational speech at the end). I felt pretty good after my first interview, had a chance to ask some questions, and felt I did reasonably well in all the rounds after. Once the interviews were done, I had a great dinner with the rest of the candidates and chatted about everyone’s background and interview experiences.
The Offer and Heading to Vancouver
So the actual waiting was trash.
Sitting in class and in the library, constantly refreshing the email was stressing me out. Luckily, the offer eventually came while I was rapidly smashing refresh one afternoon.
Once the Fall semester was over, I packed my things and flew to Vancouver. Even with the 4 hour flight delay, the whole time I was super excited.
Project Selection and the Early Weeks
The first few weeks of the internship was mostly ramp up. We had introductions about the program, seminars on various design and development strategies, Agile/SCRUM, MS Azure, and what-not.
The internship was structured so that teams of 6 (5 software developers and 1 designer) would work on a project sponsored by a team within Microsoft/third-party organization using some Microsoft technology (i.e., Azure, HoloLens, Minecraft, etc.,). ~10 projects were pitched to interns and we’d stack rank them to narrow down on final candidates. In the end there were 5 projects with 4 to be finalized. The interns even got to do a one week Hackathon on one of the top 5 contenders to give it a shot before picking it for 4 months. In the end I was lucky enough to get my first pick, a HoloLens project. AR has always been an interest of mine, and those promotional videos worked very well on me.
My team have been great from day one (honestly everyone at the internship was). These were some of the smartest engineers and designer I’ve gotten to work with. It was a bit rocky at start with ‘storm week’ (brainstorming period to get a rough idea of what we want to do for the project), but we soon got our bearings and started working well together.
Overtime, through lots of revisions, trial and error, StackOverFlow, and critiques, we had a pretty decent prototype to demo to sponsors and fellow interns. We received feedback frequently, both through scheduled presentations and when people walked by our work area. Bi-weekly bug bashes, where other teams would come and try to break our build also help unearth some bugs we didn’t consider. The build became more and more robust, with features being added daily.
It was looking real good for us.
The Tools, The People, and The Office
We built our solution using C# in Unity, exporting our build as a UWP game with HoloLens as the system to run it. We had Azure solutions in addition to a WebGL command injection browser ‘game’. The project was unexpected, building a Unity game in 3D was very different from working on ARCore and ARkit, but it was a great learning experience.
We used Visual Studio Team Services (VSTS) to host our remote repository, run our CI, and display our SCRUM boards. These are probably some of the most robust boards I’ve used, the tasks can have hours and priorities attached and be assigned to different members of the team. There’s a ‘burn-down’ calculated to determine how the team has progressed, based on the sum of task hours remain.
We had three coaches from different Microsoft departments who provided us both professional and technical guidance on the project. Additionally, we had support from our in-Microsoft sponsors and external clients to give us an idea of what would work well and how to solve high-level challenges.
While we worked on our projects, we had access to free drinks from Pepsi and Coca-Cola brands, a snack bar with cereal, instant noodles, and (before everyone swarms for them) rice krispys. Everyone used a 13-inch Surface Book (designers get a Surface Studio on top of that), had 2 monitors to work with, mechanically adjustable standing desks, and ergonomic chairs. The environment was great to work in, people in Microsoft are friendly and helpful, and the office is really beautiful and spacious.
The internship used a fast pace SCRUM model for software development. All but one of the developers had a special role to ensure all aspects of the project were well executed. These were the UX, QA, Code, and SCRUM champions. I took on Code. My job was to ensure code quality is maintained on our repo and tried to review every PR submitted.
We had daily stand-ups, sprint reviews at the end of the week in presentation+demo form, and sprint planning that followed the reviews. It got hectic sometimes, with little time to prepare for presentations, and the planning got tense during initial weeks.
Throughout the project, we had workshops (including a 4 hour presentation on public speaking) planned for us and bi-weekly happy hours to hangout and network. We were also free to invite any Microsoft employee (within reason) to a coffee chat to talk about their job and our project with some raffling tokens.
There’s also a laser cutter, arts and crafts material, and 3D printer in the office. Very nice for making memes.
In week 13 of the internship, the interns headed down to Redmond, Seattle to visit Microsoft’s HQ campus for 5 days.
During the trip, teams had a chance to present their projects to their sponsor’s US counter-parts, other teams interested in the project, and network with full-time Microsoft employees. There was free snacks and drinks in most buildings, meals with heavily subsidized costs, and a fairly robust shuttle system for summoning cars to travel between buildings and to downtown Bellevue.
We had plenty of events planned for us, including a dinner party where we got to meet and network with some former Garage Interns that now work in the HQ campus. There were also visits to various sections of the Microsoft campus that are typically off-limits or require prior reservations.
Some of the interns stayed for an additional 3 days (thanks to the long weekend that followed our trip) and toured downtown Seattle.
The overall trip was amazing and eye-opening. It really drew a lot of people (including myself) to want to work for Microsoft full-time.
The Last Few Weeks
After Redmond, there were about 3 weeks left in the internship. This was crunch time for the teams. Everyone had critical presentations and a time limit for development given the last two weeks were reserved for documentation and bug fixing.
What was kinda funny was that we found some of the best meeting rooms, games rooms, and restaurants, during the last weeks.
Once the last bit of scrambling was done, we had some farewell celebrations, walked away with a bunch of Microsoft Swag and concluded the internship.
Some Final Thoughts
Overall, Microsoft has provided me with an amazing internship. Everything I’ve used was something new, thus it was a very enriching learning experience.
There’s honestly not much negatives I can say, even if I cherry pick.
I’d strongly recommend everyone consider Microsoft for a future internship. It may be difficult to get noticed through the online application only, so I’d recommend contacting the MS recruiter responsible for your University/College (or reach out via LinkedIn if one could not be found) and try to connect with people through Hackathons/Campus events.
I hope this gave everyone a bit of insight into the Garage Internship and was somewhat interesting to read.
Thank you for reading!