Electrical Engineering and Computer Science

Dan Gaier '98

Over nine years ago, I graduated magna cum laude from the University of Toledo with a Bachelors degree in Computer Science and Engineering. I was fortunate enough to accept a job offer for a Software Engineer (or less formally, a developer) position from Microsoft directly out of college. Shortly after starting the job, I was asked by UT's Dr. Mansoor Alam to write my "success story" to be posted on the EECS department website. Time has quickly passed by since college graduation and starting my career, and over the years I've gained a significant amount of experience. Once again I've been invited by Dr. Alam to update my story and share with you new experiences and thoughts since my original paper.

The success story paper I wrote many years ago touched on a number of factors that contributed to my interest in the computer science field, and ultimately how I ended up working for Microsoft after college graduation.  I illustrated how my early explorations in a variety of programming languages, starting with BASIC and moving to 6502 and 8086 assembly, led to the pursuit of a CSE degree at UT.  I described how my education and experience gained at UT prepared me with a wide range of expertise and skills necessary to compete in the competitive software industry.  I discussed a variety of work experiences; some reinforced my ambition to work in a career field that challenged my brain instead of being physically demanding. And others provided work experience in the software engineering field.  The paper then explained my experience of interviewing at Microsoft, including a phone screen and a grueling nine hour interview with two separate teams within the company.  I wrote my story after only six weeks on the job, and so I've learned a great deal since then.  In this update to my story, I'd like to describe what I've worked on at Microsoft, talk about what I've learned, and hopefully along the way provide some insight on what it's like to be a developer working for Microsoft.

At Microsoft, I spent nearly a year and a half working on the Broadband and Internet TV Services team.  During that time, I primarily worked on the User Interface software for a cable TV set-top box, the DCT 5000, which was still under development itself.  Much of the time, I worked with a prototype of the set-top box that had the IC boards, power supply and other electrical components in plain view bolted to a piece wood.  It sort of resembled a senior design project!  The software was written on Windows CE, a trimmed down version of Microsoft Windows OS for embedded systems, and a special version of Internet Explorer 4 for that OS.  I worked on a variety of features, ranging from the overall core TV Shell to specific functionality like the Electronic Program Guide.  Overall, this was a great initial team fit for me because of my interest and background in both digital electronics and software engineering.  It gave me the opportunity to learn the ropes at Microsoft, and also a chance to learn COM/ActiveX, Win32 and GDI, DirectX, and some web programming basics such as JavaScript, HTML and CSS.

Before long a reorganization of the team was in the works, including a location change from Washington State to California, and so I decided to move to a new team instead of a new state. I went through the internal interview process to search for a new team. This consists of first going thru "informational interviews" with prospective teams to learn more about the team and the open position. If both parties like what they see, then a formal interview is conducted where four to five interviewers on the team give a "hire" or "no hire" recommendation based on your interview performance, team fit, and a variety of other factors. The majority of the interview time is spent solving problems by coding solutions on a whiteboard. Problems vary widely, but can range from writing a function that takes a time of day and returns the angle between the clock hands, to modeling data structures for a parking garage, to domain specific problems pertinent to the team that's conducting the interview. Interviewers typically hold candidates to a very high standard.

My personal interest in investing and finance led me to interview with and accept a position with the MSN MoneyCentral team, which turns out is where I've been since. The team has undergone many changes over the last 8 years, including a couple name changes and ownership of other product areas, but ultimately the team's main focus has been financial software, including the Microsoft Money line of products sold in stores, and the MSN Money website under the MSN.com portal. During my tenure, I've had the opportunity to work on a variety of products and projects, including several varieties of investment portfolio management software, investment charting and screening tools, a publishing platform structure for custom editorial content, and user and quote data web services. Today, software I have written can be found in many products, including the aforementioned Microsoft Money and MSN Money products, the Stock Tab on Windows Live Messenger, and also data web services that power tools such as the Vista Sidebar Stock Gadget and live.com.

The first half of my time spent at Microsoft, I've served in an individual contributor role where I focused mostly on designing and coding new projects and features. This includes participating in feature team meetings, where representatives from a variety of disciplines meet frequently to turn an idea into a feature specification. As a developer, my responsibilities include fielding ideas and deciding if and how it can be translated to software. This usually comprises of working with the feature team to reach very specific details about how the feature should work, determining which technologies would be best suited for the implementation, providing time cost estimates for the work, and then doing the actual design and implementation of the idea. Developers normally see the project through from start to finish. After the new feature is coded, developers work with one or more test team members to rigorously functionally test and stress the new components looking for flaws or performance problems. If this is a feature on the web, then developers often advise on deployment to "production", which is the term used to describe the set of Internet facing servers. The act of shipping a product to the web is known as "Release To World", or RTW. The act of shipping a product that will be sold on store shelves is known as "Release To Manufacturing", or RTM. It's a great feeling when something you've worked very hard on is finally ready and available for customers to use!.

Another career path for a developer is serving in a management role, where overseeing and mentoring other developers on the team is a large part of the responsibilities. This role requires not only top-notch technical skills, but also the ability to lead others, handle project scheduling, and resource management which includes interviewing and making solid hires for the team. There are many levels of management, but the two primary roles are Development Lead and Development Manager. A Development Manager supervises the Development Leads. I'm currently a Development Lead, and at one time had five developers reporting to me. It's a challenging yet rewarding role to guide others in their own career path, while at the same time seeking to enhance your own skills.

Microsoft employs a variety of software development methodologies. Most of my time has been spent using the waterfall development model, where the team goes through several well defined phases including requirements gathering, design, implementation, testing/stabilization, integration, and ship/maintenance. More recently however, many teams, including mine, have moved to more agile development methods such as scrum. The scrum development model can offer some advantages, especially in terms of allowing teams to be more adaptive to changing requirements. My team is still learning how to tweak the variables to make efficient use of the scrum model, and so far it has proven to work pretty well for our web-based products.

Most recently, I've shifted my focus to a new technology called Silverlight, which is still under development. Microsoft's Silverlight technology will essentially allow developers to use Microsoft standard .NET languages and development tools to develop cross-browser and cross-platform rich internet applications for the web. It's truly an exciting time for web development because a technology like this will drastically change the face of the web. I'm very much looking forward to building the next generation of MSN Money investing and personal finance tools using Silverlight.

The last nine years have been challenging and exciting for me, and unfortunately I'm unable to truly capture everything in this short summary. I hope you've enjoyed this overview of my experiences after UT graduation, and learned a little something about my career at Microsoft. And for all you CSE students out there, I anticipate I'll be seeing some of you soon as you move into your own successful careers as the next generation of developers and engineers.

Kevin Rak

Dan Gaier, '98

Senior Staff Software Engineer at TeamDynamix

(Previously) Lead Senior Software Development Engineer at Microsoft

 

Last Updated: 6/27/22