Morpho’s .NET development team are big advocates of Agile development practices, and their methodology of choice is the Microsoft Solutions Framework (or MSF). MSF is a proven framework for completing projects on time and on budget, regardless of scale.
Originally developed in 1994, MSF is the culmination of best practices derived from Microsoft’s internal product development efforts and external consulting projects. It is added to and improved upon by a project team at Microsoft that is continually evaluating its effectiveness in the face of technological change.
The problem isn’t the technology
MSF holds that while technology projects have some inherent complexity, more often than not breakdowns and problems in developing and deploying applications is a result of people and processes, not the technology itself. These problems can be many and varied, but generally fall into a couple categories:
- Lack of sufficient input from key stakeholders leading to an incomplete understanding of the project.
- Lack of clearly defined roles on the project team.
- Poorly developed specs that leave out critical pieces, elements that are unnecessary, or elements that are vague or misunderstood by project team members.
- Mix-ups and delays when transitioning from the development to deployment, when handing off to the people who will be using the software solution.
The 8 foundational principles of MSF
Underlying the models, tools and recommendations of MSF are 8 core principles that inform and guide decision making and processes. We’ll expand on these in later posts, but for now a brief explanation of each will suffice:
- Foster open communications – keep team members working in an informed and effective manner.
- Work toward a shared vision – make sure everyone is clear about the goals of the project, what defines a successful outcome, etc.
- Empower team members – a team of peers with the empowerment (and responsibilities) that implies.
- Establish clear accountability and shared responsibility – each member knows their role and is accountable for the quality of that role in the project.
- Focus on delivering business value – team decisions are based firmly in the world of the customer or ultimate user of the solution, with product management or user experience roles to speak on the stakeholder’s behalf.
- Stay agile, expect change – know that things will change as you progress through a project, and anticipate it. Iterative development cycles with regular feedback aids in this process.
- Invest in quality – testing is built into the project from the beginning, with each role accountable for quality and a dedicated resource ensuring overall project quality through each state of the project.
- Learn from all experiences – organizational learning is valued during projects, and key learnings are extracted for use in future projects. A project is not just work to be completed, but an opportunity to improve as a team.
The MSF Team Model
MSF breaks projects into teams of people (or roles), each of which brings a specific skillset to the table to ensure a complete and quality final product. Although a project can have any combination of these teams (or individuals overlapping multiple roles) depending on available resources, successful projects include each of these roles to make sure all of the important quality goals are being met. For example, even if the developers also have to be the testers, it’s important to emphasize and hold them accountable for both aspects of the project as both are vital to a successful outcome.
The MSF framework includes the following roles:
- Program Management to ensure the project is completed on time and within the allotted budget.
- Development to produce the code according to the stated specifications.
- Testing to monitor and catch any issues during each stage in the project.
- Release Management to ensure the project is deployed and handed off smoothly.
- User Experience to ensure the project is enjoyable and easy to use by stakeholders.
- Product Management to ensure the project is meeting the stated needs and business requirements of the stakeholders.
The MSF Process Model
MSF combines the common “waterfall” and “spiral” process methodologies into a single model, leveraging the strengths of each. A project simultaneously has iterative development and a larger set of milestones to indicate progress.
The iterative aspect of the Process Model is characterized by “phases“, a period of time with focused activity on one aspect of the project followed by feedback and the ability to make any necessary adjustments. Phases are undertaken to progress towards stated “milestones“, giving the team specific, concrete goals to accomplish. There can be any number of phases en route to the completion of a milestone, and the character and nature of activities within a phase will be different depending on the milestone you are working toward.
Similar to the 37Signals axiom to “build half a product, not a half-assed product”, the Process Model often focuses on highest priority features to get a solution deployed, then improving upon it and adding less important features during subsequent iterations. Knowing that the project will likely need modifications once you have real people interacting with it (echoing principle #6 to expect change) the Process Model builds flexibility and an anticipation for continuous improvement into the process.
The MSF Disciplines
In order to effectively execute on the People and Process Models, MSF focuses on the development and cultivation of three disciplines. These disciplines are each required in order for your team to operate at a high level. We will expand upon each of these disciplines in future posts, but for now a brief explanation is sufficient:
- Project Management – Many of the standard Project Management tools are used by the Program Management role in the Team Model. However, MSF is unique in that it emphasizes a collaborative process, recognizing that project management is best accomplished when all team members take collective responsibility for a project’s success.
- Risk Management – MSF recognizes and anticipates risk in projects, and uses risk-based decision making to manage risks inherent in projects. At the most basic level, MSF calls for an assessment of project risks, a ranking of the most critical or most likely risks, the creation of action plans to deal with those risks, and regular monitoring of those action plans and the risks identified throughout the project.
- Readiness Management – MSF focuses on the readiness of project teams, and the knowledge and skills necessary to successfully execute on projects. In short, it makes sure that all members of the team are able to effectively fulfill the roles they’re being called upon to commit to. Since empowerment and accountability are central to the MSF framework, it makes sense that team members need to have the knowledge necessary to accomplish the tasks within their role. Towards that end, Readiness Management includes regular and open communication, and emphasis on quality, and strong investments in education and training.
Flexible and proven
The foundational principles, models and disciplines of MSF ensure that projects have the necessary people, processes and areas of focus to complete projects in a reliable, cost-effective manner. By identifying the major roadblocks in most technology projects and developing solutions to address, MSF gives development teams a flexible, proven methodology for completing successful projects.