MSF for Agile Software Development Visual Studio 2005 Team System logo

Mindsets


MSF is much more than a set of activities that you follow. It seeks to create a culture that fosters successful projects. A mindset is a collection of values that determine how we as individuals will interpret and respond to situations. Mindsets should be on every team member’s mind from project beginning to project end when making decisions, prioritizing work, representing their constituency, and interacting with team members and other stakeholders. There are nine mindsets in MSF.

Principles and Mind Sets

Focus on Business Value - The first mindset sets the focus of each team member. Each software system is built for a particular reason such as to solve a business problem. There are a lot of dynamics that come into play when constructing software systems, especially larger ones. Some of these dynamics may consume great amounts of energy. Ultimately, a software development project is judged by its addition of business value. This business value should always be your focus. Keep your sites firmly focused on achieving this end.


Advocate for Your Constituency - There are many stakeholders in a software development project. Each of these stakeholders has some interest in the project. For example, the customers of the project want a system that they can successfully use. There are also nonhuman interests such as the system itself. The system might be in use for thirty years. It may also be in use for thirty minutes. When systems are intended to serve for longer periods of time, they must be built to last. Each of these interested parties (human and nonhuman) is an advocacy and should be represented by someone on the project. It is important to understand whose interests you represent on the project. Keep in mind that the advocacy model is a set of constraints. Therefore, a certain amount of compromise is often necessary to achieve an optimal solution. We will examine this in more detail later in this chapter.


Take Pride in Workmanship - Taking pride in contributing to a solution is an important part of creating a quality product. Motivation and a sense of responsibility result from this pride. Since software development is a craft, quality systems are a product of the people who build them. Given a nurturing environment with trust and personal safety, good, motivated, skilled people will build quality products. Creating pride of workmanship is both an individual and organizational responsibility. Techniques that help maintain this sense of ownership include bottom-up estimating, giving projects code names to clearly identify the project, and clearly identifying the team. All of the MSF roles are responsible for building the best quality product.


Deliver on your Commitments - Most tasks on a software development project have dependencies. This means that there are times when we cannot complete our work without the help of one of our teammates. Being agile means proactively attacking the work on which others are dependent, delivering it at the earliest possible moment. Be proactive in keeping those dependent on your work informed of its progress. This will unblock and empower your teammates. Be reliable and dependable to earn and keep your team’s trust.


Look at the Big Picture - It is easy to become myopic when working on a single area of the system. However, it is not just about how a given role contributes to delivering a single piece of the solution but also how that piece fits into a broader solution. Looking at the big picture also means being more focused on execution and what is being delivered at the end of the project and less focused on the process of getting there. That doesn’t mean process is bad or unimportant, just that it should be used to accomplish the end goal and not just for the sake of using process. Clearly understand why you are doing something. Be accountable for the successful integration of your work into the broader solution. Focus on what is needed to deliver solutions and don’t be caught up in lower level details of how to deliver the solution. Practice active communication and frequently communicate with other team members both inside and outside of the iteration planning, issue, and retrospective meetings.


Foster a Team of Peers - The “team of peers” mindset places equal value on each advocacy and each role. Unrestricted communication between the roles and project transparency are the keys to fostering a team of peers. Additionally, this mindset places emphasis on an environment of mutual respect and personal safety. An environment of respect is necessary for any team to operate at peak efficiency. The result is increased team accountability, effective communication, and teamwork. To be successful with the team of peers, all roles must have ownership of the product’s quality, must act as customer advocates, and must understand the business problem they are trying to solve.


Practice Good Citizenship - The citizenship mindset focuses on stewardship of corporate, project, and computing resources. Citizenship manifests itself in many ways from conducting the project in an efficient manner to optimizing system resources such as web services. Techniques that support citizenship include reassigning bugs with all of the information necessary for someone else to hit the ground running and providing good estimates of the amount of work that a development or test task will take. Reuse of existing resources is encouraged wherever possible.


Learn Continuously - Willingness to learn includes a commitment to ongoing self improvement through the gathering and sharing of knowledge. It allows team members to benefit from the lessons learned by making mistakes, as well as to repeat success by implementing proven practices of others. Teams that commit time in the schedule for learning, reviews, and retrospectives create an environment of ongoing improvement and continuing success. In addition, one of the ways Microsoft is successful in creating a culture that is willing to learn is by adding learning and knowledge sharing as part of individual review goals.


Internalize Qualities of Service - A quality of service mindset looks at the solution and develops plans based on every aspect of customer experience. The idea is that qualities of service such as performance and security should not be considered late in the project but throughout it. When ignored, these qualities of service are ultimately customer dissatisfiers and are usually implicit assumptions about how the solution will behave. With this mindset, we look at the big picture and turn implicit assumptions into explicit quality of service requirements.

© 2005, 2006 Microsoft Corporation. All rights reserved.

Version 4.0.1