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 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 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 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 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
| 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
| 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 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
| 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
| 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
| 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 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.
