By Eric Brechner
Because these columns were originally written for an internal Microsoft audience, I thought a short peek inside Microsoft and my role would be helpful.
In 2007, product development at Microsoft is divided into three business divisions, around 25 product lines, over 450 product units, and a multitude of feature teams. The divisions are platform products and services, Microsoft business, and entertainment and devices. The product lines within the divisions are organized around related and often integrated product suites, such as Office System and Visual Studio.
Each product line contains roughly 20 independent product units. The product units typically share source control, build, setup, work-item tracking, and project coordination, including value proposition, milestone scheduling, release management, and sustained engineering. Beyond these coordinating services, the product units have broad autonomy to make their own product, process, and people decisions.
A typical product unit has a product unit manager (PUM) and three engineering discipline managers: a group program manager (GPM), a development manager, and a test manager. Other engineering disciplines—such as user experience, content publishing (for content such as online help), and operations—might report into the product unit or be shared by the product line or division.
People reporting into the discipline managers work on individual features by forming virtual teams, called feature teams, made up of one or more representatives from each discipline. Some feature teams choose to use Agile methods, some follow a Lean model, some follow traditional software engineering models, and some mix and match.
How does Microsoft keep all this diversity and autonomy working effectively and efficiently toward a shared goal? That’s the role of the product line’s shared project coordination. For example, the product line value proposition sets and aligns what the key scenarios, quality metrics, and tenets will be for all product units and their feature teams.
To coordinate and facilitate sharing across the divisions and product lines, particularly around quality and efficiency, there is my parent group, Microsoft Trustworthy Computing and Engineering Excellence. In particular, I’m responsible for making the lives of more than 10,000 Microsoft developers around the world more enjoyable and productive as they construct valuable and delightful high-quality customer experiences. Needless to say, it’s a continuous work in progress.
My team brings the leadership of development together monthly to talk through issues and direct my team’s work. We research engineering methods used across the company and the industry as we look for new opportunities and areas to improve. We share tools, best practices, and career guidance through online portals; hold events and awards; consult with teams; and deliver technical training for all levels and roles within development. It’s a great job. I also get to write a monthly opinion column.