What does it take to create a product
For any large system to produce quality output, multiple components need to come together with impeccable precision, each playing an integral and unique part in the whole sequence. The sequence itself has to be scripted in diligent details and a framework has to be in place within which individual creativity is explored and expressed. This is true whether it is a philharmonic rendering a Mozart masterpiece or a big name banner making a Bollywood blockbuster. Software creation is no different in that unless there are streamlined processes that define the steps along the way and roles and responsibilities are clearly outlined and quality gates are placed at appropriate points, the resultant product would not be worthy of large-scale adoption.

Meet the actors, the sets, the script and the action that come together to produce the quality software products that Microsoft has come to epitomize. Take a peek into our process philosophy. Say hello to the product planner, the program manager, the developer, the tester and the user experience designer. See how the Engineering Excellence team acts as the invisible force behind the scenes, defining roles, processes and more. And finally see how, through the Microsoft Learning team, it all culminates in empowering the most invaluable piece in the entire system-the customer.
Be the best to create the best
Amit Chatterjee
Amit Chatterjee is currently the MD of the Microsoft India Development Centre at Hyderabad. This opinion was shared by him as General Manager, Visual Studio Test (VSTT).
If you consider Windows to be the best operating system, then the people who work on it either need to be, or should aspire to be the world’s best engineers.

There is another dimension of Windows. We think of it as a technology spectrum. It’s a client operating system, a server operating system and it is a core operating system with a strong networking layer underneath. I was very passionate about building a team in India which could confidently say, “We know what it takes to build Windows”. This means that you have an engineering rigor and an understanding of what it takes to build an operating system. You have people who understand the technology specification on the client side, server side, networking and core operating system.

Product development is hard. There are many things to consider. I keep telling people that whatever we build in Microsoft will become instant legacy. When you are designing a product, don’t ever think that you are building a product that will last for a year or two. What you are building will be in use for a decade or more. Always think about what your product would be ten years down the road and keep those things in mind. It’s a hard job, building products.
Building a Deep Engineering Org
Amrish Kumar
Amrish Kumar shared his thoughts as the Director of Engineering Excellence at Microsoft IDC. Currently, he is the Director of Product Management, SQL Server in Redmond.
At Microsoft, Program Managers, Developers and Testers are considered to be the three pillars of a successfully engineered product and it has worked for us. In order to synchronize the three disciplines towards a common goal, many teams follow the notion of a Feature Crew. These are small, interdisciplinary teams whose members work together to design, code, test and deliver specific product features. Since they carry full responsibility for all aspects of a feature, the triad works as a team (as opposed to a collection of people from different disciplines). Features Crews typically work on private builds and are required to meet all the exit criteria for the feature before checking into the main product build – this drives quality upstream and avoids the need for lengthy stabilization periods late in the development cycle.

The Engineering Excellence group works in close partnership with product groups. Our mission is to enable Microsoft to realize its vision of developing world class engineers and software development teams, and to continuously and holistically improve the engineering ecosystem comprising people, processes and tools.
Strategizing to Win
Stuti Shukla
Stuti Shukla shares her views as Senior Group Product Manager, Mobile Developer at MSIDC. Currently, she heads the Developer and IT Pro marketing efforts as Director of Marketing, DPE, Microsoft India.
Product planning is quite an involved process at Microsoft. We look at what it takes for Microsoft to win in a given space. As a platform provider, at one level we have to get the developers excited, and at another, level we have to find the application at home. We work out an end-to-end strategy to say this is how we can win; we ask ourselves the question: how do we position ourselves in the market leveraging our technology assets, business franchises and market competencies? Then we ask the questions: what are the top customer experiences and value the product needs to deliver? How do we prioritize and execute on them?

There is no substitute for a well-conceived product supported by a diligently crafted market strategy. Sitting between engineering and marketing, the role of a planner is to define the vision, core product value proposition and the business model to enable success. A typical product planner is analytical, thoughtful, holistic and most of all, credible. We are all about doing our homework and presenting a plan that is well thought through. Given the highly competitive and dynamic nature of segments such as Mobility, the role of planning becomes even more critical. What product we build and take to market, and how we do it, is key to winning.
The Feature Trinity
Ranganathan Srikanth
Ranganathan Srikanth contributes his views here as the Senior Lead Program Manager, based out of Hyderabad at the Microsoft India Development Centre.
At a feature level within a product team, the triad of Program Management, Development and Test gets together and decides on the functionality and behavior of that feature. Each of these disciplines has a specific role to play. The program manager takes the first step by clarifying the abstract into something tangible through the aid of functional specification document. This sets the stage for development to begin. The development team then takes this specification and makes it a reality in code. The test team ensures that the code is actually written to deliver functionality as laid down in the specification and then puts the stamp of ship approval.

These three disciplines work as a team from concept to ship, serving as the gate-keepers of the product all along the way. This team structure perfected here at Microsoft, ensure that what we end up shipping, meets the needs of the customer.
Right PM brings Non-code Solutions
Very often, rewriting code is perceived as the right response to software problems. Recently, we found that one of our customers was experiencing some problems in our software. Quite naturally, more than a few people jumped to the conclusion that we need to rewrite the code and release a fix to unblock the customer.

This is where a Program Manager is handed an acid test. We need to calm down and focus their attention on exploring other alternatives besides code-fixing. Issues such as these have to be managed. We were so high on energy that the natural inclination was to go back and say “Yes! I have the code-fix ready!” and then get sucked into a vortex. Quick-fixes come at cost. They could potentially destabilize other portions of the code base and could open up new issues with unintended consequences. One of the skills a good Program Manager brings to the team is managing the customer while providing the importance, context and prioritization to the development team, and most importantly, to do this without channeling the angst from the customer. Only then can the team’s decisions be effective.

As for the customer issue mentioned above, we were able to resolve the problem by making some changes to the deployment environment. This achieved a broader solution than even fixing our code would have.
10% Code, 90% Inspiration
Kulo Rajasekaran
Following article has been contributed by Kulo Rajasekaran. Kulo works as the Principal Development Manager, Dynamics CRM.
At the end of the day, what matters is the code. Good code is pristine, robust, readable and simple. It evolves with the product. Writing such code is sheer pleasure, but it takes great discipline to deliver good code.

Requirements: It all starts with a business need, a set of scenarios and a set of delivered requirements.

Architecture: A good architecture lays the foundation for a strong product. A little foresight helps make choices that balance requirements, anticipate future needs and adhere to basic principles of software development. This is very important because a very good spec is at best 60-70% complete.

Design: A well thought out design evokes the same feeling as strolling through a well-planned layout of a building. It is nicely spaced, abstracted, highly functional, secure, and aesthetic. One of the hardest things to achieve is simplicity in your algorithms.

Performance: Any operation taking more than 3 seconds is perceived to be slow by users. Developers need to make choices early, on how their code will behave when hundreds of thousands of users start pounding on their system.

World Readiness: One of the unique advantages is Microsoft is that we get to build products that are made available in dozens of languages. This takes a lot of work from many teams across the globe to get it right.

Testing/Bug Fixing: A good developer doesn’t just write code and throw it over the wall. In fact, she figures out how it should be tested before writing any code! She diligently tests her code and fixes any issues before delivering.

Code Reviews: Good code reviews help in establishing quality. Issues caught by a good review are much cheaper to fix than if found later on by QA or customers.

Writing code is a key, but small aspect of software development. There is so much fascinating work happening in a developer’s world – we have barely scratched the surface.
Automated Testing
Anitha Bagyam
Following are the views of Anitha Bagyam in her role as Senior Test Manager, Windows Core System Development. Currently, she is the Principal Test Manager at MSIDC, Hyderabad.
The challenge has been to move from a culture of “We have to get a feature in” to “We have to get a feature in the right way.” There is a world of difference between the two approaches.

We experienced the importance of involving testing early in the product development lifecycle while working on IPV6 complaint code for DHCP. We had to fight back feature creep. We couldn’t have done this effectively if the testing team had not been involved during the design stage. We ensured that every piece of the product was tested using automated testing tools. We were careful that every feature was scriptable so that advanced users such as system administrators could always test the features programmatically before using them in real-life situations.

The culture of testing has been in intense focus ever since Windows moved to a daily build development model. Even now for Windows 7, we have daily builds right from the WinMain (the root code base for Windows) level to the hundreds of sub-system levels.
It is all about user Experience!
Amit Chowdhury
Amit Chowdhury shares his thoughts below. Currently, he is the Senior UX Lead, working to improve usability and user experience of key products.
We now live in an experience economy and Microsoft today is a great place in India for a User Experience Designer to work and give the world what it wants – great designs.

Today, a consumer would not buy a mobile phone that is not easy to use or attractive enough to flaunt. This is true for all fields, be it a complex server product for enterprises or a Web2.0 application for college students.
Leap of Excellence
Harini Raghavan
Following article has been contributed by Harini Raghavan. Harini works as the Senior Software Development Engineer in Test in Microsoft.
Microsoft hires the best candidates in terms of raw smarts and Computer Science fundamentals. Unlike training programs at many other software companies, our focus is not about programming, but on the organization, processes and tools required to create software that is used globally by millions of people. This is what we emphasize in the Learning Engineering Acceleration Program (LEAP) for college hires. During training, the employees also get perspectives from various experts in the product groups of different topics. LEAP was the first of its kind in all of Microsoft. Our goal is to provide all the support needed for someone fresh from college to go from having strong CS fundamentals to becoming a world-class, professional Software Engineer.
Sharing Knowledge
William Adams
Following article has been contributed by William Adams in his role as Director, Engineer Excellence. Currently, Williams works as Principal Software Development Engineer in Microsoft.
We had no documentation and we had to show the team the techniques and methodologies for following processes. So we decided to start with the culture of getting behind the best software engineering practices. We introduced the team to the right tools.

My goal is to eliminate my job in its present sense. Ideally, knowledge transfer should happen naturally and not essentially in a training set up. I want to drive everyone to share knowledge. To start with, we have product groups committing 20 percent of their time for coaching and mentoring. This is outside of classroom training. In the next couple of years, this involvement is bound to go up. Over time I expect only sparse structural training sessions to take place.

Building a product is only halfway there. A product team needs their customers to build skills and knowledge required to adopt their products effectively. That’s where we come in – the Microsoft Learning Team. We take product teams the remainder of the way by ensuring that their customers are trained well on their product.
Jump {ahead} with Microsoft Learning
JPS Kohli
Following article has been contributed by JPS Kohli in his role as Group Manager, Microsoft Learning. Currently, he works as Group Content Publishing Manager in Microsoft.
At Microsoft, we believe that our job is not complete just by releasing cutting-edge solutions that help customers realize their true potential. The Microsoft Learning team goes that extra mile to make sure that our customers are empowered with the necessary knowledge and skills that will help in effortless adoption of our products. It is this endeavor that helps us develop highly effective and innovative learning solutions and certification products.

Each members of the team knows what it takes to build high quality, customer-focused learning content and release it to market in as short a time as possible. We engage deeply with our end customers, Certified Training partners, Microsoft product groups and the Microsoft Certified Trainer (MCT) community to incorporate their experiences and expectations, while delivering world-class learning products.
Take Pride in being a Trainer
Dipti Raheja
Dipti Raheja has been associated with Microsoft Learning for a long time. Currently she works in Microsoft as the Learning Product Planner for Microsoft Learning.
My dream is to evolve and build the Microsoft Certified Trainer (MCT) community. This community is passionate, technically sound and highly motivated to train people. I want to make the community, especially in this part of the world (APAC region), feel proud of what they can do and contribute. I want to spread awareness on the benefits of being an MCT and want to ensure that more and more people come into the MCT fold. Today, in India, nobody likes to call themselves a trainer. Everyone wants to be called a developer. My belief is that a trainer helps create brilliant developers – thereby having a wider impact on technology adoption and development. This is immense satisfaction and pride in being a trainer and the benefits are huge too, but the awareness is lacking in India. So, my long-term plan is to make people aware of this. Then, they can decide whether they want to be trainers or developers.
Behind the Scenes
This is a journal which captures opinions and insights from eminent Microsoft employees on how to excel in the world of software development, how to produce world-class software and what skills are essential to succeed in specific roles.
MSDN Resources
Student and Faculty Center
The Microsoft Academic Program and Faculty programs.
Channel 9
Watch videos and connect with your peers – it's all about the conversation.
CodePlex
Microsoft's open source project hosting Web site.
MSDN Magazine
Read in-depth articles on the products and technologies you're using today.
Virtual Labs
Guided labs let you try developer tools with no installation required.
Training
Get the skills to succeed as a developer