During April 2007 I attended a week long workshop with the Patterns and Practices (P&P) team at Microsoft’s Corporate Headquarters in Redmond. The primary goals of the engagement were:
· Better understand the P&P offerings and future direction
· Ascertain the best approach to building and reusing application frameworks across an Enterprise.
· Develop a more coherent UI strategy, considering the multiple recent offerings in this space
· Learn from the experience of the P&P team, particularly with respect to Governance and Process
In addition to meeting the P&P team, sessions with key representatives from other groups were delivered, including:
· Windows CardSpace with Richard Turner
· WPF & SilverLight with Ian Ellison Taylor
· CCF with Ming Chao
· Project Acropolis with David Hill
During the course of the visit we discussed the origins of the P&P team, their Vision and Mission, their product offerings and how everything they engineer is ultimately customer driven.
We also discussed the problems they aim to address through the guidance they deliver and how this guidance can be delivered in many forms, from whitepapers to complete code packages and software factories. Primarily, they are targeting the common issues that face all development functions, for example:
· Application Development takes too long
· Mistakes are repeated and lessons relearned
· Knowledge sharing is hard
· Developers spend time on repetitive tasks
· Best practices are not captured
· There’s a lack of reuse and inconsistent approach
We also discussed how P&P specifically aim to address these issues by filling the ‘content gap’ in Microsoft’s offerings. That is, the space between the Microsoft Platform, Products and Technologies and a functionally rich, fully integrated and tested solution.
Vision and Strategy
“The world’s best guided development experience, delivered to teams building apps on the Microsoft application platform” is P&P’s vision statement. They also have a Charter: “The Microsoft source of guided development experiences for teams building app on the Microsoft Platform”.
Their strategy for delivering these is as follows:
· Guided experiences spanning software engineering practices, development of applications and project execution patterns
· Optimize for discoverability, evaluation and integration into the Visual Studio development environment
· Make guidance customisable and extensible by the development teams
· Create vibrant community of integrated guided experience developers
The delivery itself takes one of four forms:
Guides consist of written guidance, either online or printed, covering topics that include patterns, application architecture, integration, performance, and security.
Application Blocks are actual deliverables that streamline development and currently include Caching, Cryptography, Data Access, Exception Handling, Logging, Policy Injection, Security, and Validation.
Process includes two Visual Studio Team System templates: MSF for Agile Software Development and MSF for CMMI Process Improvement. These process templates includes set of software development processes, practices, template documents, and associated queries, reports and project portal settings.
Software Factories are installable packages that extend Visual Studio Team System with a custom process for a specific type of deliverable supported by a set of integrated software assets.
Applications and Frameworks
During the visit we hosted an open discussion with Edward Jezierski and Wojtek Kozaczynski on the best approach to building frameworks within the enterprise. The key questions to address were:
· How can an Enterprise make the most of their assets through reuse?
· Is a one-size fits all framework the best approach to take?
In order to achieve reuse across the group it is clear that teams need to collaborate in order to identify opportunities for reuse. Further to this it also critical that a common vocabulary exists across the group.
The P&P approach to developing shared assets is to choose the most mature offering that entirely or most closely satisfies a given requirement, and to then incentivise one of the teams to deliver the full functionality required.
However, Ed And Wojtek both felt strongly that it is a mistake to start a greenfield ‘Framework’ project with the aim of satisfying all present and future requirements. It is best that these items evolve and follow an ‘Enable not Constrain’ ideology with regard to developers.