<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>J.D. Meier's Blog : Guidance Engineering</title><link>http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx</link><description>Tags: Guidance Engineering</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Writing Books on Time and on Budget</title><link>http://blogs.msdn.com/jmeier/archive/2009/02/06/writing-books-on-time-and-on-budget.aspx</link><pubDate>Fri, 06 Feb 2009 22:47:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9402771</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/9402771.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=9402771</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/WritingBooksonTimeandonBudget_A5E1/AppARch2.0_small_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="232" alt="AppARch2.0_small" src="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/WritingBooksonTimeandonBudget_A5E1/AppARch2.0_small_thumb.jpg" width="180" align="right" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;One of the questions I get asked is how did we execute our &lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/24/abstract-for-application-architecture-guide-2-0.aspx"&gt;patterns &amp;amp; practices Application Architecture Guide 2.0 project&lt;/a&gt;, &lt;em&gt;on time and on budget&lt;/em&gt;?&amp;#160; It was a six month project, during which we ....&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Created a language and model for application architecture.&amp;#160; (See &lt;a href="http://blogs.msdn.com/jmeier/archive/2008/12/31/grady-booch-on-the-microsoft-application-architecture-guide-2-0.aspx"&gt;Grady Booch on the Microsoft Application Architecture Guide 2.0&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;Wrote a 300+ page book, the &lt;a href="http://www.codeplex.com/AppArchGuide" target="_blank"&gt;patterns &amp;amp; practices Application Architecture Guide 2.0&lt;/a&gt; (affectionately referred to as the &lt;em&gt;Microsoft Playbook for Application Architecture&lt;/em&gt;) &lt;/li&gt;    &lt;li&gt;Created an &lt;a href="http://www.codeplex.com/AppArch" target="_blank"&gt;Application Architecture Knowledge Base (KB)&lt;/a&gt;, with step-by-step How Tos, videos, checklists, slides, and reusable figures. &lt;/li&gt;    &lt;li&gt;Created a series of &lt;a href="http://www.codeplex.com/AppArch/Wiki/View.aspx?title=Pocket%20Guides&amp;amp;referringTitle=Home" target="_blank"&gt;Pocket Guides for Application Architecture&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Created a &lt;a href="http://www.codeplex.com/AppArchGuide/Wiki/View.aspx?title=.NET%20Platform%20Overview%20V2&amp;amp;referringTitle=Home" target="_blank"&gt;map of the Microsoft application platform&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Created technology matrixes to organize and navigate technology decisions.&amp;#160; (See the &lt;a href="http://www.codeplex.com/AppArchGuide/Wiki/View.aspx?title=Cheat%20Sheet%20-%20Presentation%20Technology%20Matrix&amp;amp;referringTitle=Home" target="_blank"&gt;Presentation Technology Matrix&lt;/a&gt;, &lt;a href="http://www.codeplex.com/AppArchGuide/Wiki/View.aspx?title=Cheat%20Sheet%20-%20Data%20Access%20Technology%20Matrix&amp;amp;referringTitle=Home" target="_blank"&gt;Data Access Technology Matrix&lt;/a&gt;, &lt;a href="http://www.codeplex.com/AppArchGuide/Wiki/View.aspx?title=Cheat%20Sheet%20-%20Workflow%20Technology%20Matrix&amp;amp;referringTitle=Home" target="_blank"&gt;Workflow Technology Matrix&lt;/a&gt;, and &lt;a href="http://www.codeplex.com/AppArchGuide/Wiki/View.aspx?title=Cheat%20Sheet%20-%20Integration%20Technology%20Matrix&amp;amp;referringTitle=Home" target="_blank"&gt;Integration Technology Matrix&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;Created &lt;a href="http://www.codeplex.com/AppArchGuide/Wiki/View.aspx?title=Chapter%204%20-%20Designing%20Your%20Architecture&amp;amp;referringTitle=Home" target="_blank"&gt;a systematic approach for the architecture and design of applications&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Created &lt;a href="http://www.codeplex.com/AppArchGuide/Wiki/View.aspx?title=Pattern%20Catalog%20V2&amp;amp;referringTitle=Home" target="_blank"&gt;a patterns catalog for the patterns documented by the patterns &amp;amp; practices team&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Formed, stormed, normed, and created&amp;#160; a performing team. (See &lt;a href="http://en.wikipedia.org/wiki/Forming-storming-norming-performing" target="_blank"&gt;Wikipedia on Forming, Storming, Norming and Performing&lt;/a&gt;.) &lt;/li&gt;    &lt;li&gt;Coordinated among more than 70 internal and external reviewers, across key product groups and with our field, support, and experts.&amp;#160; (See the &lt;a href="http://www.codeplex.com/AppArchGuide" target="_blank"&gt;contributors and reviewers list&lt;/a&gt;.) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;2 Keys to Success&lt;/strong&gt;     &lt;br /&gt;We used two keys to success:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Fix time, Flex scope&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Agile Guidance Engineering&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Fix Time, Flex Scope&lt;/strong&gt;     &lt;br /&gt;One of the most successful patterns I've used for years now is to fix time, and flex scope.&amp;#160; The idea is to deliver incremental value and find a way to flow value along the way rather than wait for one big bang at the end.&amp;#160; This allows you to deliver the most timely and relevant value with a healthy worklife balance.&amp;#160; It helps reduce project risk along the way.&amp;#160; More importantly, it helps get your stakeholders on board, by showing them results versus just trust you to the end.&amp;#160; Scope is the best to flex because there's the least amount of precision or accuracy up front, and it enables you to respond to the market or stakeholder concerns more effectively.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Agile Guidance Engineering      &lt;br /&gt;&lt;/strong&gt;This is the secret sauce.&amp;#160; I call it &lt;a href="http://blogs.msdn.com/jmeier/archive/2008/07/22/agile-guidance.aspx" target="_blank"&gt;Agile Guidance Engineering&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/AgileGuidance_8C20/AgileGuidanceEngineering2_2.gif"&gt;&lt;img height="194" alt="AgileGuidanceEngineering2" src="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/AgileGuidance_8C20/AgileGuidanceEngineering2_thumb.gif" width="486" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In a nutshell, Agile Guidance Engineering is about building guidance using nuggets of specific types (how tos, guidelines, checklists ... etc.) and composing them into books.&amp;#160; The books themselves are actually an information model.&amp;#160; The information model is designed to both structure the content as well as structure the problem domain.&amp;#160; We vet the nuggets as we go for feedback, and we prioritize, tune, and improve them along the way.&lt;/p&gt;  &lt;p&gt;I've used Agile Guidance Engineering successfully to build the following Microsoft patterns &amp;amp; practices Blue Books:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.codeplex.com/AppArchGuide" target="_blank"&gt;Application Architecture Guide 2.0&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurityGuide" target="_blank"&gt;Improving Web Services Security&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb668991.aspx" target="_blank"&gt;Team Development with Visual Studio Team Foundation Server&lt;/a&gt; (&lt;a href="http://www.amazon.com/Development-Visual-Studio-Foundation-Server/dp/0735625719/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1233948348&amp;amp;sr=1-1" target="_blank"&gt;see Amazon for print version&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb924375.aspx" target="_blank"&gt;Performance Testing Guidance for Web Applications&lt;/a&gt; (&lt;a href="http://www.amazon.com/Performance-Testing-Guidance-Web-Applications/dp/0735625700/ref=sr_1_1?ie=UTF8&amp;amp;qid=1233948310&amp;amp;sr=1-1" target="_blank"&gt;see Amazon for print version&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998382.aspx" target="_blank"&gt;Security Engineering Explained&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998530.aspx" target="_blank"&gt;Improving .NET Application Performance and Scalability&lt;/a&gt; (&lt;a href="http://www.amazon.com/Improving-Application-Performance-Scalability-Practices/dp/0735618518/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1233948270&amp;amp;sr=1-1" target="_blank"&gt;see Amazon for print version&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms994921.aspx" target="_blank"&gt;Improving Web Application Security&lt;/a&gt; (&lt;a href="http://www.amazon.com/Improving-Web-Application-Security-Countermeasures/dp/0735618429/ref=sr_1_3?ie=UTF8&amp;amp;s=books&amp;amp;qid=1233948233&amp;amp;sr=1-3" target="_blank"&gt;see Amazon for print version&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa302415.aspx" target="_blank"&gt;Building Secure ASP.NET Applications&lt;/a&gt; (&lt;a href="http://www.amazon.com/Building-Microsoft-ASP-NET-Applications-Pro-Developer/dp/0735618909" target="_blank"&gt;see Amazon for print version&lt;/a&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;My Related Posts&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/07/22/agile-guidance.aspx"&gt;Agile Guidance Engineering&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2007/12/24/building-books-in-patterns-amp-practices.aspx"&gt;Building Books in patterns &amp;amp; practices&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/24/abstract-for-application-architecture-guide-2-0.aspx"&gt;Abstract for Application Architecture Guide 2.0&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2009/01/09/microsoft-application-architecture-guide-2-0-impact.aspx" target="_blank"&gt;Microsoft Application Architecture Guide 2.0 Impact&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9402771" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Agile/default.aspx">Agile</category></item><item><title>Agile Architecture Method Pocket Guide</title><link>http://blogs.msdn.com/jmeier/archive/2008/11/24/agile-architecture-method-pocket-guide.aspx</link><pubDate>Tue, 25 Nov 2008 02:54:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9139620</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/9139620.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=9139620</wfw:commentRss><description>&lt;div class="noprint" style="float: right; margin: 0px"&gt;&lt;img title="Agile Architecture Method Pocket Guide" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="199" alt="Agile Architecture Method Pocket Guide" src="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/AgileArchitectureMethodPocketGuide_DF93/Agile%20Architecture%20Method%20Pocket%20Guide_thumb.png" width="154" border="0" /&gt; &lt;/div&gt; We posted our &lt;a href="http://www.guidanceshare.com/wiki/Agile_Architecture_Method_Explained" target="_blank"&gt;Agile Architecture Method Pocket Guide&lt;/a&gt; to our &lt;a href="http://www.codeplex.com/AppArch" target="_blank"&gt;Application Architecture Guidance KB&lt;/a&gt;.&amp;#160; This is in response to customers who expressed interest in more modular guides as a supplement to our &lt;a href="http://www.codeplex.com/AppArchGuide" target="_blank"&gt;Application Architecture Guide 2.0&lt;/a&gt;.   &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Chapters At a Glance&lt;/strong&gt;     &lt;br /&gt;Here&amp;#8217;s the chapters at a glance: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Ch 01 - Agile Architecture Method &lt;/li&gt;    &lt;li&gt;Ch 02 - Step 1 - Identify Objectives &lt;/li&gt;    &lt;li&gt;Ch 03 - Step 2 - Identify Key Scenarios &lt;/li&gt;    &lt;li&gt;Ch 04 - Step 3 - Application Overview &lt;/li&gt;    &lt;li&gt;Ch 05 - Step 4 - Key Hot Spots &lt;/li&gt;    &lt;li&gt;Ch 06 - Step 5 - Candidate Solutions &lt;/li&gt;    &lt;li&gt;Ch 07 - Reviewing Your Architecture &lt;/li&gt;    &lt;li&gt;Ch 08 - Communicating Your Architecture &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Download&lt;/strong&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.guidanceshare.com/wiki/Agile_Architecture_Method_Explained" target="_blank"&gt;Download the Agile Architecture Method Pocket Guide&lt;/a&gt;. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;My Related Posts&lt;/strong&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/11/24/web-application-architecture-pocket-guide.aspx" target="_blank"&gt;Web Application Architecture Pocket Guide&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/11/24/mobile-application-architecture-pocket-guide.aspx"&gt;Mobile Application Architecture Pocket Guide&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/11/24/ria-architecture-pocket-guide.aspx"&gt;RIA Architecture Pocket Guide&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/11/24/rich-client-application-architecture-pocket-guide.aspx"&gt;Rich Client Application Architecture Pocket Guide&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/11/24/service-architecture-pocket-guide.aspx"&gt;Service Architecture Pocket Guide&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2008/11/24/application-architecture-diagrams-added-to-codeplex.aspx"&gt;Application Architecture Visios Now Available&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9139620" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Agile/default.aspx">Agile</category></item><item><title>Agile Guidance</title><link>http://blogs.msdn.com/jmeier/archive/2008/07/22/agile-guidance.aspx</link><pubDate>Tue, 22 Jul 2008 19:58:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8764421</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8764421.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8764421</wfw:commentRss><description>&lt;p&gt;When I ramp new folks on the team, I find it helpful to whiteboard how I build prescriptive guidance.&amp;#160; Here's a rough picture of the process:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/AgileGuidance_8C20/AgileGuidanceEngineering2_2.gif"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="194" alt="AgileGuidanceEngineering2" src="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/AgileGuidance_8C20/AgileGuidanceEngineering2_thumb.gif" width="486" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Examples     &lt;br /&gt;&lt;/strong&gt;I've used the same process for &lt;a href="http://msdn.microsoft.com/en-us/library/bb924375.aspx" target="_blank"&gt;Performance Testing Guidance&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/bb668991.aspx" target="_blank"&gt;Team Development with Visual Studio Team Foundation Server&lt;/a&gt;, and &lt;a href="http://www.msn.com/WCFSecurity" target="_blank"&gt;WCF Security&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Here's a brief explanation of what happens along the way:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Design     &lt;br /&gt;&lt;/strong&gt;The dominant focus here is identifying candidate problems, candidate solutions, and figuring out key risks, as well as testing paths to explore.&amp;#160; The best outcome is a set of scenarios we can execute against.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Research&lt;/strong&gt; - finding the right people, the right problems, and the right solutions. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Prototypes&lt;/strong&gt; - experiment and test areas of high risk to prove the path.&amp;#160; This can include innovating on how we build prescriptive guidance.&amp;#160; We also use these to test with customers and get feedback on the approach. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Question Lists&lt;/strong&gt; - building organized lists of one-liner user questions. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Task Lists&lt;/strong&gt; - building organized lists of one-liner user tasks. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Scenario Frames&lt;/strong&gt; - organizing scenarios into meaningful buckets.&amp;#160; See &lt;a href="http://blogs.msdn.com/jmeier/pages/scenario-frame-example.aspx"&gt;Scenario Frame Example&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Information Models&lt;/strong&gt; - framing out the problem space and creating useful ways to organize, share, and act on the information.&amp;#160; See &lt;a href="http://blogs.msdn.com/jmeier/archive/2008/06/04/web-services-security-frame.aspx"&gt;Web Services Security Frame&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Guidance Types&lt;/strong&gt;&amp;#160; - testing which guidance types to use (how tos, checklists, guidelines, patterns, ... etc.)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Execution&lt;/strong&gt;    &lt;br /&gt;The dominant focus here is product results.&amp;#160; It's scenario-driven.&amp;#160; Each week we pick scenarios to execute against.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Development&lt;/strong&gt; - building prescriptive guidance, including coding, testing, and writing. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Backlog&lt;/strong&gt; - our backlog is a prioritized set of scenarios and guidance modules. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Iterations&lt;/strong&gt; - picking sets of scenarios to focus development on and test against. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Refactoring&lt;/strong&gt; - tuning and pruning the guidance to improve effectiveness.&amp;#160; This includes breaking the content up and rewriting it.&amp;#160; For example, a common refactoring is factoring reference information from action.&amp;#160; We try to keep reference information in our Explained modules and action information in our How Tos. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Testing&lt;/strong&gt; -&amp;#160; step through the guidance against the scenario.&amp;#160; The first pass is about making sure it works.&amp;#160; It should be executable by a human.&amp;#160; Next, it's about reducing friction and making sure the guidance really hits the what, why and how.&amp;#160; We test the guidance against objectives and scenarios with acceptance criteria so we know when we're done. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Problem Repros&lt;/strong&gt; - creating step by step examples that reproduce a given problem. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Solution Repros&lt;/strong&gt; - creating step by step examples that reproduce a given solution.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Release&lt;/strong&gt;    &lt;br /&gt;We produce a Knowledge Base (KB) of guidance modules and a guide.&amp;#160; The guidance modules are modular and can be reused.&amp;#160;&amp;#160; The guide includes chapters in addition to the guidance modules.&amp;#160; Here's examples from our WCF Security Guide:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurity" target="_blank"&gt;KB Example (WCF Security KB)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/WCFSecurityGuide" target="_blank"&gt;Guide Example (WCF Security Guide)&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Agile Publishing     &lt;br /&gt;&lt;/strong&gt;We release our guidance modules along the way to test reactions, get feedback and reshape the approach as needed.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;CodePlex&lt;/strong&gt; - we publish our guidance modules to CodePlex so we can share early versions of the guidance and get customer feedback, as well as to test the structure of the guidance, and experiment with user experience. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Guidance Explorer&lt;/strong&gt; - we publish guidance modules to &lt;a href="http://www.codeplex.com/GuidanceExplorer" target="_blank"&gt;Guidance Explorer&lt;/a&gt; so users can do their own guidance mash ups and build their own personalized guides.&amp;#160; Our field also uses this to build customized sets of guidance for customers.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Stable Reference     &lt;br /&gt;&lt;/strong&gt;Once we've tested and vetted the guidance and have made it through a few rounds of customer feedback, we push the guidance to MSDN.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;MSDN&lt;/strong&gt; - this is the trusted site that users expect to see our prescriptive guidance in final form. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Visual Studio/ Visual Studio Team System&lt;/strong&gt; - once we're a part of the MSDN distribution, we can automatically take advantage of the VS/VSTS documentation integration.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;My Related Posts&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2007/12/24/building-books-in-patterns-amp-practices.aspx"&gt;Building Books in patterns &amp;amp; practices&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2006/11/21/test-driven-guidance.aspx"&gt;Test-Driven Guidance&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8764421" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Agile/default.aspx">Agile</category></item><item><title>Software Guidance Share</title><link>http://blogs.msdn.com/jmeier/archive/2008/07/12/software-guidance-share.aspx</link><pubDate>Sat, 12 Jul 2008 23:19:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8725022</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8725022.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8725022</wfw:commentRss><description>&lt;p&gt;I'm testing another version of the home page on &lt;a href="http://www.GuidanceShare.com" target="_blank"&gt;Software Guidance Share&lt;/a&gt;.&amp;nbsp; Software Guidance Share is a perpetual work in progress.&amp;nbsp; I think of it as my quick-and-dirty guidance KB for developers and solution architects.&amp;nbsp; I continuously &lt;a href="http://nostalgia.wikipedia.org/wiki/Refactoring" target="_blank"&gt;refactor&lt;/a&gt; information into reusable nuggets.&amp;nbsp; I also test ways to browse the guidance and find relationships among the nuggets.  &lt;p&gt;Here's a couple of example scenarios:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.guidanceshare.com/wiki/Web_Application_Performance_Design_Inspection_Questions" target="_blank"&gt;Perform a Performance Design Inspection&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.guidanceshare.com/wiki/Web_Application_Security_Design_Inspection_Questions" target="_blank"&gt;Perform a Security Design Inspection&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.guidanceshare.com/wiki/Performance_Design_Principles" target="_blank"&gt;Browse performance design principles&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.guidanceshare.com/wiki/Security_Design_Principles" target="_blank"&gt;Browse security design principles&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.guidanceshare.com/wiki/Category:Application_Scenarios" target="_blank"&gt;Browse ASP.NET application scenarios&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I haven't fleshed out some of the areas, but the Wiki gives me a lot of flexibility and it's easy to course-correct.&amp;nbsp; In other words, it's &lt;a href="http://blogs.msdn.com/jmeier/archive/2007/05/13/the-better-adapted-you-are-the-less-adaptable-you-tend-to-be.aspx"&gt;more adaptable than adapted&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8725022" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Software+Engineering/default.aspx">Software Engineering</category></item><item><title>Patterns and Practices for Visual Studio Team System</title><link>http://blogs.msdn.com/jmeier/archive/2008/02/29/patterns-and-practices-for-visual-studio-team-system.aspx</link><pubDate>Fri, 29 Feb 2008 23:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7959875</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/7959875.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=7959875</wfw:commentRss><description>&lt;P&gt;I thought it might be helpful to walk through a deliverable so you can see my current approach for building prescriptive guidance in patterns &amp;amp; practices. 
&lt;P&gt;&lt;STRONG&gt;Stage 1: Knowledge Base&lt;/STRONG&gt;&lt;BR&gt;We start by building the knowledge base: 
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/VSTSGuidance" target=_blank mce_href="http://www.codeplex.com/VSTSGuidance"&gt;VSTS Guidance KB (Knowledge Base)&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;In this stage, we do a lot of solution engineering.&amp;nbsp; This includes framing out the problem space using &lt;A href="http://blogs.msdn.com/jmeier/archive/2007/02/22/scenario-frames-for-guidance.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/02/22/scenario-frames-for-guidance.aspx"&gt;Scenario Frames&lt;/A&gt;.&amp;nbsp; After all, you can't fix a problem if you don't know what it is, and you don't know when you're done, if you don't know what good looks like.&amp;nbsp; It also includes creating repros for problems and solutions.&amp;nbsp; I think of this as &lt;A href="http://blogs.msdn.com/jmeier/archive/2006/11/21/test-driven-guidance.aspx)" mce_href="http://blogs.msdn.com/jmeier/archive/2006/11/21/test-driven-guidance.aspx)"&gt;Test-Driven Guidance.&lt;/A&gt;&amp;nbsp; 
&lt;P&gt;At this stage, we create what I call "guidance modules."&amp;nbsp;&amp;nbsp; These are focused nuggets.&amp;nbsp; At a high-level, we factor reference from action.&amp;nbsp; Our key types include guidelines, checklist, how-tos, and practices.&amp;nbsp; I think Weinberg's term, &lt;A href="http://64.233.167.104/search?q=cache:oJt-Ts2rQT4J:www.developerdotstar.com/mag/articles/PDF/DevDotStar_Weinberg_OnWriting.pdf+fieldstone+method&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=3&amp;amp;gl=us" target=_blank mce_href="http://64.233.167.104/search?q=cache:oJt-Ts2rQT4J:www.developerdotstar.com/mag/articles/PDF/DevDotStar_Weinberg_OnWriting.pdf+fieldstone+method&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=3&amp;amp;gl=us"&gt;the Fieldstone Method&lt;/A&gt;, applies to what we do.&amp;nbsp;&amp;nbsp; 
&lt;P&gt;We also publish our modules to &lt;A href="http://blogs.msdn.com/jmeier/archive/2007/12/12/new-release-guidance-explorer-is-now-on-msdn.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/12/12/new-release-guidance-explorer-is-now-on-msdn.aspx"&gt;Guidance Explorer&lt;/A&gt; at this point so you can build your own guide on the fly. 
&lt;P&gt;&lt;STRONG&gt;Stage 2: The Guide&lt;/STRONG&gt;&lt;BR&gt;At this stage, we build the guide.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/TFSGuide" target=_blank mce_href="http://www.codeplex.com/TFSGuide"&gt;Team Development with Visual Studio Team System (the Guide)&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The guide helps put the story together.&amp;nbsp; The guide is divided into roughly two parts.&amp;nbsp; The first part is a series of fast-paced chapters that paint the broad strokes and highlight key concepts.&amp;nbsp; The second part is the hard-core reference section.&amp;nbsp; This gives us a combination of top-down and bottom up. 
&lt;P&gt;We share the guide in &lt;A href="http://www.codeplex.com/TFSGuide" target=_blank mce_href="http://www.codeplex.com/TFSGuide"&gt;HTML&lt;/A&gt; and &lt;A href="http://www.codeplex.com/TFSGuide/Release/ProjectReleases.aspx?ReleaseId=6280" target=_blank mce_href="http://www.codeplex.com/TFSGuide/Release/ProjectReleases.aspx?ReleaseId=6280"&gt;PDF&lt;/A&gt;.&amp;nbsp; This ways it's easy to share URLs and play in the community, or download and read the guide offline. 
&lt;P&gt;&lt;STRONG&gt;Stage 3: MSDN&lt;/STRONG&gt;&lt;BR&gt;At this stage, we port the guidance to MSDN:&lt;BR&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb669046.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb669046.aspx"&gt;Visual Studio Team System Prescriptive Guidance (MSDN)&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Stage 4: Amazon&lt;BR&gt;&lt;/STRONG&gt;At this stage, we partner with Microsoft Press and we bake the printed book:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.amazon.com/Development-Visual-Studio-Foundation-Server/dp/0735625719" target=_blank mce_href="http://www.amazon.com/Development-Visual-Studio-Foundation-Server/dp/0735625719"&gt;Team Development with Visual Studio Team Foundation Server&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Team Guidance&lt;BR&gt;&lt;/STRONG&gt;One of the things you'll notice about the guides is the breadth of participation.&amp;nbsp; I'm a fan of integrating customer perspective, product perspective, field perspective, and expert perspective.&amp;nbsp; I think the best way is to involve key folks that represent those perspective.&amp;nbsp; Here's an example of the &lt;A href="http://msdn2.microsoft.com/en-us/library/bb668991.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb668991.aspx"&gt;contributors and reviewers for the TFS guide&lt;/A&gt;.&amp;nbsp;&amp;nbsp; For a more extreme example, see &lt;A href="http://msdn2.microsoft.com/en-us/library/ms994921.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms994921.aspx"&gt;the team behind our Threats and Countermeasures Security Guide&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Measuring Success&lt;BR&gt;&lt;/STRONG&gt;At the end of the day, I measure success of the guides based on how well they improve your effectiveness.&amp;nbsp; I think our best guides improve your confidence and competence.&amp;nbsp; As much as I'd like you to enjoy reading the guides, I assume you're reading the guides to get your job done.&amp;nbsp; That's why they are dense with insight and action. 
&lt;P&gt;&lt;STRONG&gt;Why Guides?&lt;/STRONG&gt;&lt;BR&gt;Not everybody is a fan of the guides.&amp;nbsp; Personally, I see them as a way to share expertise.&amp;nbsp; You don't get the benefit of working alongside all the product team members, the field, our various customers, subject matter experts, ... etc.&amp;nbsp; That's what the guide is for.&amp;nbsp; It's a way to consolidate and share the expertise.&amp;nbsp; While they won't solve your every problem, you don't have to start from scratch.&amp;nbsp; I think the best guides help you bootstrap your success and avoid reinventing wheels.&amp;nbsp; Why go it alone, when you can stand on the shoulders of giants and learn from what works? 
&lt;P&gt;&lt;STRONG&gt;Related Guides&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx"&gt;Performance Testing Web Applications&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms998382.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998382.aspx"&gt;Security Engineering Explained&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms998530.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998530.aspx"&gt;Improving .NET Application Performance and Scalability&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms994921.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms994921.aspx"&gt;Improving Web Application Security&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/aa302415.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/aa302415.aspx"&gt;Building Secure ASP.NET Applications&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Key tips -- if you want to become a security and performance expert, learn the principles, patterns and practices for security and performance from &lt;A href="http://msdn2.microsoft.com/en-us/library/ms998530.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998530.aspx"&gt;Improving .NET Application Performance and Scalability&lt;/A&gt; and &lt;A href="http://msdn2.microsoft.com/en-us/library/ms994921.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms994921.aspx"&gt;Improving Web Application Security&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;My Related Posts&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/2007/12/24/building-books-in-patterns-amp-practices.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/12/24/building-books-in-patterns-amp-practices.aspx"&gt;Building Books in patterns and practices&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/2006/11/21/test-driven-guidance.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2006/11/21/test-driven-guidance.aspx"&gt;Test-Driven Guidance&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/2007/12/21/codeplex-ge-and-msdn.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/12/21/codeplex-ge-and-msdn.aspx"&gt;CodePlex, GE, and MSDN&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/2007/01/07/from-guides-to-guidance-modules.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/01/07/from-guides-to-guidance-modules.aspx"&gt;From Guides to Guidance Modules&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/2006/10/07/How-To-Write-Prescriptive-Guidance-Modules.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2006/10/07/How-To-Write-Prescriptive-Guidance-Modules.aspx"&gt;How to Write Prescriptive Guidance Modules&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7959875" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category></item><item><title>Guidance Share Sweep</title><link>http://blogs.msdn.com/jmeier/archive/2008/01/02/guidance-share-sweep.aspx</link><pubDate>Wed, 02 Jan 2008 18:48:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6956141</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/6956141.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=6956141</wfw:commentRss><description>&lt;p&gt;One of the most important things I did while I was on vacation was sweeping &lt;a href="http://www.GuidanceShare.com" target="_blank"&gt;Guidance Share&lt;/a&gt;.&amp;nbsp; Guidance Share is where I consolidate my body of software engineering guidance and test user experiences.&amp;nbsp; I redesigned the home page for simpler browsing and findability.&amp;nbsp; It was more pain than pleasure for me, but if it helps the broader community, that's my payback.  &lt;p&gt;Here's a highlight of Guidance Share:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Browsable nuggets for software performance and security  &lt;li&gt;Durable, evolvable frames for security and performance (think of these as maps)  &lt;li&gt;How Tos, Guidelines, Checklists and more &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Guidance Share gives me a unique vantage point that I haven't been able to get any other way.&amp;nbsp; The act of building it and evolving it helps me make gain new insights.&amp;nbsp; It also forces me to find ways to be extremely efficient.&amp;nbsp; I then try to carry these lessons over to MSDN and to help shape patterns &amp;amp; practices information models.&amp;nbsp; I don't own the MSDN experience, but I can give input.&amp;nbsp; Guidance Share helps me solidify my recommendations with living proof.&amp;nbsp; It's also let's me quickly experiment with new user experiences.  &lt;p&gt;My biggest lesson learned is how difficult it is to integrate information and make it useful, even when you own it.&amp;nbsp; It's one thing to have a snapshot of information that's useful for a given point in time; it's another to create a stable backdrop with a firm foundation that can evolve over time.&amp;nbsp; The key is factoring volatile from stable information, and enabling them to play well together.&lt;/p&gt; &lt;p&gt;Note that Guidance Share is under construction and there are some obviously empty areas, but it's a work in progress.&amp;nbsp; It's a living knowledge base for software engineering that I periodically sweep to share the best that I've learned.&lt;/p&gt; &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6956141" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Software+Engineering/default.aspx">Software Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/My+Projects/default.aspx">My Projects</category></item><item><title>Building Books in patterns and practices</title><link>http://blogs.msdn.com/jmeier/archive/2007/12/24/building-books-in-patterns-amp-practices.aspx</link><pubDate>Tue, 25 Dec 2007 00:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6855343</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/6855343.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=6855343</wfw:commentRss><description>&lt;P mce_keep="true"&gt;Book building is art and science. I've built a few books over the years at patterns &amp;amp; practices. In this post, I'll share a behind the scenes look at what it takes to do so. I'll save the project management piece for another day, and focus on the core of book building.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Book Examples&lt;BR&gt;&lt;/STRONG&gt;Before we get into the details, here's a quick look at my past books: 
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb668991.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb668991.aspx"&gt;Team Development with Visual Studio Team Foundation Server&lt;/A&gt; (&lt;A href="http://www.amazon.com/Development-Visual-Studio-Foundation-Server/dp/0735625719/ref=sr_11_1?ie=UTF8&amp;amp;qid=1196464421&amp;amp;sr=11-1" target=_blank mce_href="http://www.amazon.com/Development-Visual-Studio-Foundation-Server/dp/0735625719/ref=sr_11_1?ie=UTF8&amp;amp;qid=1196464421&amp;amp;sr=11-1"&gt;Amazon&lt;/A&gt;, &lt;A href="http://msdn2.microsoft.com/en-us/library/bb668991.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb668991.aspx"&gt;HTML&lt;/A&gt;, &lt;A href="http://www.codeplex.com/TFSGuide/Release/ProjectReleases.aspx?ReleaseId=6280" target=_blank mce_href="http://www.codeplex.com/TFSGuide/Release/ProjectReleases.aspx?ReleaseId=6280"&gt;PDF&lt;/A&gt;)&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx"&gt;Performance Testing Guidance for Web Applications&lt;/A&gt; (&lt;A href="http://www.amazon.com/Performance-Testing-Guidance-Web-Applications/dp/0735625700/ref=sr_11_1?ie=UTF8&amp;amp;qid=1196463760&amp;amp;sr=11-1" target=_blank mce_href="http://www.amazon.com/Performance-Testing-Guidance-Web-Applications/dp/0735625700/ref=sr_11_1?ie=UTF8&amp;amp;qid=1196463760&amp;amp;sr=11-1"&gt;Amazon&lt;/A&gt;,&amp;nbsp;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb924375.aspx"&gt;HTML&lt;/A&gt;,&amp;nbsp;&lt;A href="http://www.codeplex.com/PerfTestingGuide/Release/ProjectReleases.aspx?ReleaseId=6690" target=_blank mce_href="http://www.codeplex.com/PerfTestingGuide/Release/ProjectReleases.aspx?ReleaseId=6690"&gt;PDF&lt;/A&gt;)&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms998382.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998382.aspx"&gt;patterns &amp;amp; practices Security Engineering Explained&lt;/A&gt; (&lt;A href="http://msdn2.microsoft.com/en-us/library/ms998382.aspx#" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998382.aspx#"&gt;HTML,&lt;/A&gt;&amp;nbsp;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=75039F39-B33A-4BBD-B041-CF25F7473A0B&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=75039F39-B33A-4BBD-B041-CF25F7473A0B&amp;amp;displaylang=en"&gt;PDF&lt;/A&gt;)&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms998530.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998530.aspx"&gt;Improving .NET Application Performance and Scalability&lt;/A&gt; (&lt;A href="http://www.amazon.com/Improving-Application-Performance-Scalability-Practices/dp/0735618518" target=_blank mce_href="http://www.amazon.com/Improving-Application-Performance-Scalability-Practices/dp/0735618518"&gt;Amazon&lt;/A&gt;,&amp;nbsp;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms998530.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998530.aspx"&gt;HTML&lt;/A&gt;,&amp;nbsp;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=8A2E454D-F30E-4E72-B531-75384A0F1C47&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=8A2E454D-F30E-4E72-B531-75384A0F1C47&amp;amp;displaylang=en"&gt;PDF&lt;/A&gt;)&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms994921.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms994921.aspx"&gt;Improving Web Application Security: Threats and Countermeasures&lt;/A&gt; (&lt;A href="http://www.amazon.com/Improving-Web-Application-Security-Countermeasures/dp/0735618429" target=_blank mce_href="http://www.amazon.com/Improving-Web-Application-Security-Countermeasures/dp/0735618429"&gt;Amazon&lt;/A&gt;, &lt;A href="http://msdn2.microsoft.com/en-us/library/ms994921.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms994921.aspx"&gt;HTML&lt;/A&gt;,&amp;nbsp;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E9C4BFAA-AF88-4AA5-88D4-0DEA898C31B9&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E9C4BFAA-AF88-4AA5-88D4-0DEA898C31B9&amp;amp;displaylang=en"&gt;PDF&lt;/A&gt;)&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/aa302415.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/aa302415.aspx"&gt;Building Secure ASP.NET Applications&lt;/A&gt; (&lt;A href="http://www.amazon.com/Development-Visual-Studio-Foundation-Server/dp/0735625719/ref=sr_11_1?ie=UTF8&amp;amp;qid=1196464421&amp;amp;sr=11-1" target=_blank mce_href="http://www.amazon.com/Development-Visual-Studio-Foundation-Server/dp/0735625719/ref=sr_11_1?ie=UTF8&amp;amp;qid=1196464421&amp;amp;sr=11-1"&gt;Amazon&lt;/A&gt;,&amp;nbsp;&lt;A href="http://msdn2.microsoft.com/en-us/library/aa302415.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/aa302415.aspx"&gt;HTML&lt;/A&gt;, &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=055ff772-97fe-41b8-a58c-bf9c6593f25e&amp;amp;DisplayLang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=055ff772-97fe-41b8-a58c-bf9c6593f25e&amp;amp;DisplayLang=en"&gt;PDF&lt;/A&gt;)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;If you're familiar with the books, particularly Improving Web Application Security and Improving .NET Application Performance and Scalability, you'll know that the books aren't like typical books. They're optimized to be executed rather than read. The expectation is you'll use them to improve your effectiveness on the job. That's why you can get the books in the bookstore, online or in Visual Studio ... in print, PDF or HTML. 
&lt;P&gt;&lt;STRONG&gt;Competitive Assessments&lt;BR&gt;&lt;/STRONG&gt;The books are targeted at real-world problems and real-world solutions.&amp;nbsp;&amp;nbsp; They've been used for competitive assessments:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/2006/04/02/security-innovation-security-engineering-study.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2006/04/02/security-innovation-security-engineering-study.aspx"&gt;Security Innovation Security Engineering Study&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/2006/04/02/566716.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2006/04/02/566716.aspx"&gt;Openhack 4 (EWeek Labs): Web Application Security&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/2006/04/02/566708.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2006/04/02/566708.aspx"&gt;@Stake Security Study: .NET 1.1 vs. WebSphere 5.0&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Book Approach&lt;/STRONG&gt;&lt;BR&gt;At a high-level, you can think of the approach in five main workstreams:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Researching and analysis.&lt;/LI&gt;
&lt;LI&gt;Designing.&lt;/LI&gt;
&lt;LI&gt;Building,&lt;/LI&gt;
&lt;LI&gt;Testing.&lt;/LI&gt;
&lt;LI&gt;Releasing.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;It's a "test-driven" approach, meaning we start with tests (questions and tasks) that our prescriptive guidance needs to pass.&amp;nbsp;The bulk of the work is building&amp;nbsp;"nuggets" that can be used standalone.&amp;nbsp; We then assemble an end-to-end guide.&amp;nbsp;&amp;nbsp; Throughout the process we verify with test cases, lab repros, internal and external reviews, both with subject matter experts and every day users.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Researching and Analysis &lt;BR&gt;&lt;/STRONG&gt;This workstream is about getting clarity on the problem space.&amp;nbsp; It includes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Identify the Key Resources in the Domain&lt;/STRONG&gt;.&amp;nbsp; This is about finding all the relevant blogs, sites, articles, code, slides ... etc. for a given domain or problem area.&amp;nbsp; Here's an example of our &lt;A href="http://www.codeplex.com/VSTSGuidance/Wiki/View.aspx?title=Team%20System%20Resource%20Index&amp;amp;referringTitle=Home" target=_blank mce_href="http://www.codeplex.com/VSTSGuidance/Wiki/View.aspx?title=Team%20System%20Resource%20Index&amp;amp;referringTitle=Home"&gt;Visual Studio Team System Resource List&lt;/A&gt;.&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Identify the Key People in the Domain&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; This includes enumerating internal folks (product support, field, product teams, experts) as well as external folks (partners, MVPs, customers, experts, ... etc.)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Identify the Key Categories in the Domain&lt;/STRONG&gt;.&amp;nbsp; Knowing the terms in the domain, speeds up our research efforts.&amp;nbsp; For example, if we know the names of the features for a product, we can quickly explore the product docs.&amp;nbsp; If we know how the community is tagging the information, we can quickly parse the broader "Web community KB."&amp;nbsp;&amp;nbsp; Reviewing key blogosphere is a fast way to figure out the &lt;A href="http://en.wikipedia.org/wiki/Folksonomy" target=_blank mce_href="http://en.wikipedia.org/wiki/Folksonomy"&gt;folksonomy&lt;/A&gt; that people use.&amp;nbsp; This helps us build information models for the space.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Identify the Key Questions, Tasks, and Scenarios&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; This is a process of making tickler lists of the questions that users ask, the tasks they perform and the key scenarios.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Identify Key Contributors&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; This includes finding folks that want to participate and actually create content.&amp;nbsp; A lot of folks raise their hands, but only a few deliver.&amp;nbsp; That's the nature of the beast.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Identify Key Reviewers&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; Finding reviewers is pretty easy since lots of folks want to steer.&amp;nbsp; The trick is finding the folks that inject insights and dramatically raise the quality of the guidance.&amp;nbsp; We cherish our key reviewers.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Identify Key Reference Examples&lt;/STRONG&gt;.&amp;nbsp; This is about gathering all the working examples we know of from support, field, and customers.&amp;nbsp; I like to be able to point to working instances of the guidance in practice.&amp;nbsp; I also like to reverse engineer success (success leaves clues.)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Build data points&lt;/STRONG&gt;.&amp;nbsp; If you're into information, these would rock your world.&amp;nbsp; These are dense collections of insights that we share among the team.&amp;nbsp; Sometimes we use a Wiki, but we always use Word docs to capture and share them, since they get are very dense and we track the sources of the information.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;For more information on researching, see my related posts: &lt;A href="http://blogs.msdn.com/jmeier/archive/2007/01/12/analyzing-a-problem-space.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/01/12/analyzing-a-problem-space.aspx"&gt;Analyzing a Problem Space&lt;/A&gt; and &lt;A href="http://blogs.msdn.com/jmeier/archive/2007/05/28/how-to-research-efficiently.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/05/28/how-to-research-efficiently.aspx"&gt;How To Research Efficiently&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Designing &lt;/STRONG&gt;&lt;BR&gt;This workstream is an iterative process of spiraling down on solutions.&amp;nbsp; It includes: 
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Create a scenario frame&lt;/STRONG&gt;.&amp;nbsp; This is where we frame out the guidance.&amp;nbsp; It includes organizing scenarios into key categories and sub-categories.&amp;nbsp; This is where the folksonomy and information models helps.&amp;nbsp; Here's examples of our &lt;A href="http://www.codeplex.com/VSTSGuidance/Wiki/View.aspx?title=Scenario%20Frames&amp;amp;referringTitle=Home" target=_blank mce_href="http://www.codeplex.com/VSTSGuidance/Wiki/View.aspx?title=Scenario%20Frames&amp;amp;referringTitle=Home"&gt;Visual Studio Scenario Frames&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Review the scenario frame&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; This is painful but rewarding.&amp;nbsp; We review the scenario frames with customers and experts, internally and externally.&amp;nbsp; It's a spiral down process.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Identify the priorities&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; Once we have scenario frames and we've spent the time reviewing, we're at a great vantage point to separate the forest from the trees.&amp;nbsp; One technique we use to prioritize is we ask product team members to think of the top 10 issues they'd like to make go away from their inbox ;)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Identify candidate nugget types and titles&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; This is where we figure out whether something should be a "How To" set of steps or an "Explained" articles, such as an explanation of how something works or it's intended usage patterns.&amp;nbsp; We hammer on the titles so that they both represent compelling information, they set the right expectations, and they are more findable on the Web.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Identify the objectives for each nugget.&lt;/STRONG&gt;&amp;nbsp; We identify the key "tests for success" in each nugget, by listing the specific tasks, questions or objectives you'll accomplish by using that particular nugget.&amp;nbsp; For an example, see the "Objectives" section in H&lt;A href="http://msdn2.microsoft.com/en-us/library/bb355989.aspx#" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb355989.aspx#"&gt;ow To Protect from Injection Attacks in ASP.NET&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Prototype the Table of Contents (TOC.)&lt;/STRONG&gt;&amp;nbsp; I do this on the whiteboard and paint the broad strokes first.&amp;nbsp; I factor the guide into two main parts: a fast path through the key strategies and concepts, and an actionable reference of nuggets (principles, patterns and practices.)&amp;nbsp; I also come up with a story I can tell in the hall.&amp;nbsp; For example, the story behind Improving Web Application Security was "how to build a hack proof app."&amp;nbsp; That set the stage and kept things on track when things got complex (as they always do.)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Create conceptual frameworks&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; This involves figuring out the most effective ways to look at and tackle the problem space.&amp;nbsp; For examples, see &lt;A href="http://msdn2.microsoft.com/en-us/library/ms998523.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998523.aspx"&gt;Performance Fast Track&lt;/A&gt; and &lt;A href="http://msdn2.microsoft.com/en-us/library/ms994812.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms994812.aspx"&gt;Security Fast Track&lt;/A&gt;.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;For more information, see my related posts: &lt;A href="http://blogs.msdn.com/jmeier/archive/2007/03/03/guidance-2-0.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/03/03/guidance-2-0.aspx"&gt;Guidance 2.0&lt;/A&gt;, &lt;A href="http://blogs.msdn.com/jmeier/archive/2007/10/15/why-scenario-driven-engineering.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/10/15/why-scenario-driven-engineering.aspx"&gt;Scenarios in Practice&lt;/A&gt;, &lt;A href="http://blogs.msdn.com/jmeier/archive/2007/02/22/scenario-frames-for-guidance.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/02/22/scenario-frames-for-guidance.aspx"&gt;Scenario Frames for Guidance&lt;/A&gt;, and &lt;A href="http://blogs.msdn.com/jmeier/archive/2007/03/18/driver-s-guide-vs-owner-s-manual.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/03/18/driver-s-guide-vs-owner-s-manual.aspx"&gt;Driver's Guide vs. Owner's Manual&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Building&lt;/STRONG&gt;&lt;BR&gt;This workstream is where we do the bulk of our solution engineering.&amp;nbsp; It includes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Prototype nuggets&lt;/STRONG&gt;.&amp;nbsp; This is where we frame out and create skeletal examples of&amp;nbsp;nuggets.&amp;nbsp; We incrementally render the final nugget by adding information and details as we learn, build, and test.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Create problem repros.&lt;/STRONG&gt;&amp;nbsp; Reproducing problems helps to both understand the problem space as well as make it easier to share the problems and get more eyes on them.&amp;nbsp; We also need to be able to test the solutions against the problems.&amp;nbsp; We typically capture problem repros in notepad.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Create solution repros&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; This is where we create the leanest, stripped down example of solving the problem.&amp;nbsp; We capture these as steps in notepad, including copy+pastable code or configuration steps as needed.&amp;nbsp; Each person on the team should be able to quickly run through the solution repro.&amp;nbsp; This helps us find the sticking spots and reduce the friction.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Create key figures&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; This is a painful process.&amp;nbsp; The goal is find the fastest way to convey the information visually.&amp;nbsp;&amp;nbsp; I think my favorite all time examples are our "cartoons" for showing our &lt;A href="http://msdn2.microsoft.com/en-us/library/aa302385.aspx#" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/aa302385.aspx#"&gt;security scenarios and solutions&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Write nuggets&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; This involves fleshing out the details.&amp;nbsp;&amp;nbsp; I try to keep the text as tight as possible throughout the process.&amp;nbsp; It's more work to make it dense, but it pays off where we spend the time.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Write chapters&lt;/STRONG&gt;.&amp;nbsp; This is similar to writing the nuggets but from a zoom level this is where it's about showing the forest.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Modify the TOC&lt;/STRONG&gt;.&amp;nbsp; This is a continuous process.&amp;nbsp; As we learn more about the space, it gets easier to organize the chapters and nuggets into parts and a story that we can stand behind.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Refactor nuggets and chapters&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; For an example TOC, see the &lt;A href="http://msdn2.microsoft.com/en-us/library/ms994921.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms994921.aspx"&gt;Landing Page for Improving Web Application Security&lt;/A&gt;.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Testing&lt;BR&gt;&lt;/STRONG&gt;This workstream is about verifying the solutions from both a technical and user experience perspective.&amp;nbsp; It includes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Test solutions in the lab&lt;/STRONG&gt;.&amp;nbsp; Since the bulk of our books are executable, it's fairly straightforward to test the solutions to make sure they work in the lab.&amp;nbsp; Scenario and scoping is important, so this is where our scenario frames and objectives for each nugget really help.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Test solutions in the field&lt;/STRONG&gt;.&amp;nbsp; This is where we try to find customers that share the problems we've solved and put our solutions into practice.&amp;nbsp;&amp;nbsp; Usually, this involves leveraging our field or product support that acts as a proxy for the customer.&amp;nbsp; We also have a few customers running alongside us that can help test in their scenarios.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Dog Fooding&lt;/STRONG&gt;.&amp;nbsp; One rule I have on our team is eating our own dog food so we have first hand experience with the usability of the guidance and can directly use it to solve problems.&amp;nbsp; See &lt;A href="http://en.wikipedia.org/wiki/Eating_one%27s_own_dog_food" target=_blank mce_href="http://en.wikipedia.org/wiki/Eating_one%27s_own_dog_food"&gt;Eating One's Own Dog Food&lt;/A&gt; on Wikipedia.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Review solutions&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; This includes reviews from internal and external stakeholders.&amp;nbsp; We do this incrementally.&amp;nbsp; First our immediate team has to approve, next our immediate key contributors and reviewers (the ones that have more bandwidth and commitment) and then more broadly (such as on CodePlex.)&amp;nbsp; For an example of the sets of reviewers, see the &lt;A href="http://msdn2.microsoft.com/en-us/library/ms998530.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998530.aspx"&gt;Landing Page for Improving .NET Application Performance and Scalability&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Improve solutions&lt;/STRONG&gt;.&amp;nbsp; Rather than just focus on finding issues or proving that something technically works, it's about raising the bar in terms of user experience, or finding a more effective technique or solution.&amp;nbsp; We use Timeboxing to help scope. See &lt;A href="http://blogs.msdn.com/jmeier/archive/2007/10/21/how-to-use-time-boxing-for-getting-results.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/10/21/how-to-use-time-boxing-for-getting-results.aspx"&gt;How To Use Time Boxing for Getting Results&lt;/A&gt;.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;For more information, see my related post: &lt;A href="http://blogs.msdn.com/jmeier/archive/2006/11/21/test-driven-guidance.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2006/11/21/test-driven-guidance.aspx"&gt;Test-Driven Guidance&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Release&lt;/STRONG&gt; &lt;BR&gt;This workstream is about making the guidance customer available.&amp;nbsp; It's incremental, iterative and we stabilize over time.&amp;nbsp; it includes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Create an online community KB&lt;/STRONG&gt;.&amp;nbsp; This is where we create an online site to share the nuggets.&amp;nbsp; For an example, see our &lt;A href="http://www.codeplex.com/VSTSGuidance" target=_blank mce_href="http://www.codeplex.com/VSTSGuidance"&gt;Visual Studio Team System Online Community KB&lt;/A&gt; on CodePlex.&amp;nbsp; By sharing the nuggets here, we can test and vet before baking into more durable form factors such as the PDF and print versions.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Create a PDF&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; We do this once we've stabilized enough that the PDF is a good example, of what the final book will be.&amp;nbsp; While details may change, the overall frame is durable and we use the PDF as a simple way to share the book before we're baked.&amp;nbsp; For an example PDF, see &lt;A href="http://www.codeplex.com/TFSGuide" target=_blank mce_href="http://www.codeplex.com/TFSGuide"&gt;patterns &amp;amp; practices Team Development with Visual Studio Team Foundation Server&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Create the book&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; This includes creating a fit and finish PDF, as well as creating print-quality graphics, and coordinating with our MS Press team to create the final print versions of the book, as well as getting the book on the shelf.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Port to MSDN&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; We port the guidance to a MSDN so that we get better reach and because customers expect it there.&amp;nbsp; In the ideal scenario, we host the PDF and HTML, as well as have a print version.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Keep in mind that it's a stabilization process over time of various form factors and channels.&amp;nbsp; We do our agile guidance on CodePlex, then stabilize and port to MSDN and a book when we're baked.&amp;nbsp; For more information, see my related post&amp;nbsp;&lt;A href="http://blogs.msdn.com/jmeier/archive/2007/12/21/codeplex-ge-and-msdn.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/12/21/codeplex-ge-and-msdn.aspx"&gt;CodePlex, GE and MSDN&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Key Concepts&lt;/STRONG&gt;&lt;BR&gt;I&amp;nbsp;walked through&amp;nbsp;the process first so that you&amp;nbsp;have a good idea of the end-to-end approach.&amp;nbsp; Here&amp;nbsp;I'll highlight some of the key concepts that underlie my approach:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Solution Engineering&lt;/STRONG&gt;.&amp;nbsp; This captures the heart of what we do.&amp;nbsp; Rather than "writing a book", we're really engineering solutions for problems.&amp;nbsp; That's why the team includes architects, testers, developers ... etc.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Question-Driven&lt;/STRONG&gt;.&amp;nbsp; I'm a fan of using questions to prioritize, drive the scope, and figure out when we're done.&amp;nbsp; I know we're done when we've addressed enough of the right questions.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Principles, Patterns, and Practices&lt;/STRONG&gt;.&amp;nbsp; The bulk of the book is a collection of principle-based recommendations.&amp;nbsp; Although we don't always formally write up patterns or name the patterns, each book contains pattern-based solutions.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Life Cycle Approach&lt;/STRONG&gt;.&amp;nbsp; I find using a life cycle makes the solution stronger.&amp;nbsp; If I just give you technical guidance, that only helps you so far.&amp;nbsp; If I give you a system for results, it changes the game.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Test-Driven.&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I'm a fan of using explicit test cases for content.&amp;nbsp; See &lt;A href="http://blogs.msdn.com/jmeier/archive/2006/11/21/test-driven-guidance.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2006/11/21/test-driven-guidance.aspx"&gt;Test-Driven Guidance&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Conceptual Frameworks&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; This is the backbone of the guides.&amp;nbsp;&amp;nbsp;This is where&amp;nbsp;innovation happens the most.&amp;nbsp; These are mental models, lenses&amp;nbsp;and perspectives, and systems for results.&amp;nbsp;&amp;nbsp;For an example, see &lt;A href="http://msdn2.microsoft.com/en-us/library/ms998523.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998523.aspx"&gt;Fast Track - A Guide for Getting Started and Applying the Guidance&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Scenario-Based Approach&lt;/STRONG&gt;.&amp;nbsp; You can't&amp;nbsp;do a design review&amp;nbsp;in a vacuum.&amp;nbsp; We use scenarios to evaluate against.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Scenario Frames&lt;/STRONG&gt;.&amp;nbsp; Scenario Frames are organized sets of usage scenarios.&amp;nbsp;&amp;nbsp; We use these to frame out the problem space.&amp;nbsp;&amp;nbsp; See &lt;A href="http://blogs.msdn.com/jmeier/archive/2007/02/22/scenario-frames-for-guidance.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/02/22/scenario-frames-for-guidance.aspx"&gt;Scenario Frames for Guidance&lt;/A&gt;.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Executable Content.&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp; Use the content to execute your tasks.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Action vs. Reference&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; One key to building executable content is factoring reference information from action.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Guidance Types&lt;/STRONG&gt;.&amp;nbsp; Another key to building executable content, is using specific guidance types.&amp;nbsp;&amp;nbsp;For "reference" information, we use "Explained"&amp;nbsp;nuggets.&amp;nbsp; For "action" information, we use "How Tos", "Checklists" ... etc.&amp;nbsp;&amp;nbsp; Our guidance nugget types include: App Scenarios, At a Glance, Checklist Items, Code Examples, Explained, Guidelines, How Tos, Inspection Questions, Patterns, Practices, Principles, Roadmaps, Techniques, and Test Cases.&amp;nbsp; You can browse these collections using &lt;A href="http://www.codeplex.com/GuidanceExplorer" target=_blank mce_href="http://www.codeplex.com/GuidanceExplorer"&gt;patterns &amp;amp; practices Guidance Explorer&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Context-Precision&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp; &amp;nbsp;This is a term I coined to get more specific about the scenario.&amp;nbsp; This improves both the modularity of our nuggets as well as the usability.&amp;nbsp; Rather than a single nugget spread over many contexts, we factor and use precision.&amp;nbsp; This avoid a spaghetti problem and helps reusability and maintainability.&amp;nbsp; See &lt;A href="http://blogs.msdn.com/jmeier/archive/2005/10/10/context-precision.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2005/10/10/context-precision.aspx"&gt;Context-Precision.&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Holistic Over Piecemeal&lt;/STRONG&gt;.&amp;nbsp; &amp;nbsp;The guides are meant to get you up and running.&amp;nbsp; The example I use is teaching you to drive.&amp;nbsp; I show you how to forward, reverse, steer, brake, shift to get you going and then drill into shifting or&amp;nbsp;braking as needed, rather than show you how to go forward today, then&amp;nbsp;how to reverse another day, and some day how to steer.&amp;nbsp; This means compressing and distilling knowledge that's been spread out over time and space.&amp;nbsp;&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;User Effectiveness Over User Sat&lt;/STRONG&gt;.&amp;nbsp; To do my job well, I focus on customer effectiveness over customer satisfaction.&amp;nbsp; Ideally, it's both, but there's a lot of &lt;A href="http://en.wikipedia.org/wiki/Fear%2C_uncertainty_and_doubt" target=_blank mce_href="http://en.wikipedia.org/wiki/Fear%2C_uncertainty_and_doubt"&gt;FUD&lt;/A&gt; in our industry and satisfaction is very subjective.&amp;nbsp; I find it more reliable to focus on measuring and testing customer effectiveness.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Criteria for Effectiveness&lt;/STRONG&gt;.&amp;nbsp; Part of what makes this successful is having criteria for the guidance which includes: Compliance with proven practice, complexity, quality, user competence and time to implement.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Incremental Adoption&lt;/STRONG&gt;.&amp;nbsp; Each guide is designed to be incrementally adopted.&amp;nbsp;&amp;nbsp;While the&amp;nbsp;sum is better than the parts, I can't ignore the reality that incremental adoption is more likely than monolithic adoption.&amp;nbsp; That's why the guides can be read end-to-end, or just grab the parts you need.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;What To Do, Why, and How&lt;/STRONG&gt;.&amp;nbsp; While this pattern directly applies to &lt;A href="http://blogs.msdn.com/jmeier/archive/2006/10/07/Writing-Guidelines.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2006/10/07/Writing-Guidelines.aspx"&gt;writing prescriptive guidelines&lt;/A&gt;, it really exemplifies the overall guide.&amp;nbsp; Rather than lose you in endless enumerations of options, you should be able to quickly figure out what to do, why, and how throughout the guide.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Entry Points&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp;&amp;nbsp; How does a user find the specific guidance they're looking for?&amp;nbsp; I tend to focus on "question-based" entry points and "task-based" entry points.&amp;nbsp; You're either asking a question or trying to figure out how to do something.&amp;nbsp; For an example of question-based entry points, see &lt;A href="http://msdn2.microsoft.com/en-us/library/bb668950.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/bb668950.aspx"&gt;VSTS Source Control Questions and Answers&lt;/A&gt;.&amp;nbsp; For an example of task-based entry points, see &lt;A href="http://msdn2.microsoft.com/en-us/library/ms998372.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998372.aspx"&gt;ASP.NET 2.0 Security Practices at a Glance&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Team Guidance&lt;/STRONG&gt;.&amp;nbsp;&amp;nbsp;&amp;nbsp;Few problems can withstand sustained thinking.&amp;nbsp; No problem can withstand sustained collective thinking.&amp;nbsp; To get an idea of the team-based approach, see the list of contributors and reviewers at the bottom of the &lt;A href="http://msdn2.microsoft.com/en-us/library/ms998530.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998530.aspx"&gt;Landing Page for Improving .NET Application Performance and Scalability&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Customer-Connected Engineering&lt;/STRONG&gt;.&amp;nbsp; &amp;nbsp;Simply put, this means involving customers throughout the process.&amp;nbsp; How would we know we have the right problems or the right solutions without involving the people it's for?&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Feedback&lt;BR&gt;&lt;/STRONG&gt;How do you build books? If you have thoughts, questions or feedback on my book building approach, feel free to share them here or drop me a mail.&amp;nbsp; While this approach has been proven effective over time, there's always room for improvement.&amp;nbsp; I'd like to hear what works for you.&amp;nbsp; If you're a fellow book builder, please share your approach.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;My Related Posts&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/2007/12/21/codeplex-ge-and-msdn.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/12/21/codeplex-ge-and-msdn.aspx"&gt;CodePlex, GE, and MSDN&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/2007/03/03/guidance-2-0.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/03/03/guidance-2-0.aspx"&gt;Guidance 2.0&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/2007/01/07/from-guides-to-guidance-modules.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/01/07/from-guides-to-guidance-modules.aspx"&gt;From Guide to Guidance Modules&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/2006/11/21/test-driven-guidance.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2006/11/21/test-driven-guidance.aspx"&gt;Test-Driven Guidance&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/2006/10/07/Writing-Guidelines.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2006/10/07/Writing-Guidelines.aspx"&gt;Writing Prescriptive Guidelines&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6855343" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category></item><item><title>CodePlex, GE, and MSDN</title><link>http://blogs.msdn.com/jmeier/archive/2007/12/21/codeplex-ge-and-msdn.aspx</link><pubDate>Fri, 21 Dec 2007 06:18:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6823638</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/6823638.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=6823638</wfw:commentRss><description>&lt;p&gt;One of the questions I get is how we build and publish our guides and what's the relationship of &lt;a href="http://www.codeplex.com" target="_blank"&gt;CodePlex&lt;/a&gt;, &lt;a href="http://www.codeplex.com/GuidanceExplorer" target="_blank"&gt;GE&lt;/a&gt; and &lt;a href="http://msdn.com" target="_blank"&gt;MSDN&lt;/a&gt;.&amp;nbsp; At a high-level, we build reusable guidance nuggets for customer questions and tasks.&amp;nbsp; We then build a larger guide to bring the nuggets together into a story. Together, this gives us both a knowledge base of nuggets and a series of guides.&amp;nbsp; We can incrementally deliver value, refactor as appropriate, and respond to changing needs.  &lt;p&gt;&lt;strong&gt;Bird's-Eye View of Agile Guidance Engineering&lt;/strong&gt;&lt;br&gt;You can think of our approach as progressive rendering of solutions (incrementally sharing and stabilizing.)  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/CodePlexGEandMSDN_10F6F/AgileGuidanceEngineering_2.gif"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="194" alt="AgileGuidanceEngineering" src="http://blogs.msdn.com/blogfiles/jmeier/WindowsLiveWriter/CodePlexGEandMSDN_10F6F/AgileGuidanceEngineering_thumb.gif" width="486" border="0"&gt;&lt;/a&gt;  &lt;p&gt;&lt;strong&gt;From CodePlex to MSDN&lt;br&gt;&lt;/strong&gt;As we build guidance modules, we publish them to GE and CodePlex.&amp;nbsp; GE lets you, the user, build more relevant views or tailor the nuggets to your own needs.&amp;nbsp; CodePlex gives us a place to experiment with views and get direct user feedback, while we vet the guidance.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Once we're stable, we do a focused, batch effort to port to MSDN.&amp;nbsp; MSDN gives us a bunch more channels and hooks including integration in Visual Studio / Visual Studio Team System. &lt;/p&gt; &lt;p&gt;There's much more to the story, so if there's interest, I'll share a behind the scenes look at how we build books.  &lt;p&gt;&lt;strong&gt;My Related Posts&lt;/strong&gt;  &lt;ul&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2006/11/21/test-driven-guidance.aspx"&gt;Test-Driven Guidance&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2007/01/07/from-guides-to-guidance-modules.aspx"&gt;From Guides to Guidance Modules&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2006/10/07/How-To-Write-Prescriptive-Guidance-Modules.aspx"&gt;How To Write Prescriptive Guidance Modules&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6823638" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category></item><item><title>Scenarios in Practice</title><link>http://blogs.msdn.com/jmeier/archive/2007/10/15/why-scenario-driven-engineering.aspx</link><pubDate>Mon, 15 Oct 2007 05:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5456490</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/5456490.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=5456490</wfw:commentRss><description>&lt;P&gt;&lt;A class="" href="http://blogs.msdn.com/jmeier/archive/2006/12/09/what-s-a-scenario.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2006/12/09/what-s-a-scenario.aspx"&gt;Scenarios&lt;/A&gt; are a practical way to organize and focus your product design, development and release.&amp;nbsp;&amp;nbsp; (We use scenario-driven engineering in patterns &amp;amp; practices)&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Key Benefits&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Business value&lt;/STRONG&gt;.&amp;nbsp; You can&amp;nbsp; use scenarios to evaluate business value.&amp;nbsp;&amp;nbsp; What pain does that scenario address? ...&amp;nbsp;What opportunity does it create? ... etc.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Chunking and prioritizing&lt;/STRONG&gt;.&amp;nbsp; You can use scenarios to chunk up and prioritize your product.&amp;nbsp; You can think of versioning in terms of releasing incremental value&amp;nbsp;or scenarios.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Effective design.&lt;/STRONG&gt;&amp;nbsp; Walking through a set of customers scenarios and "what ifs" will help you figure out your product's most effective design.&amp;nbsp; It's not a silver-bullet, but it does help make requirements more concrete, or at least put them in perspective.&amp;nbsp; It also opens the door to more precise questions about user experience or engineering challenges.. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Focal point for perspectives&lt;/STRONG&gt;.&amp;nbsp; You can use scenarios as a focal point for user experience, business and tech perspectives.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Requirements in context&lt;/STRONG&gt;.&amp;nbsp; You can use scenarios to put requirements in context.&amp;nbsp; A requirement makes a lot more sense when you see it in action.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Architectural trade-offs&lt;/STRONG&gt;.&amp;nbsp; You can use scenarios to evaluate and make architectural trade-offs.&amp;nbsp; You can't evaluate an architecture in a vacuum; you can evaluate against concrete scenarios.&amp;nbsp; There's several flavors of scenario-based evaluations you can leverage.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Customer value&lt;/STRONG&gt;.&amp;nbsp; Your customers can appreciate how well you did (or didn't) address their scenario.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Tests for success&lt;/STRONG&gt;.&amp;nbsp; You can use scenarios as tests for success.&amp;nbsp; By measuring customer effectiveness against specific scenarios, you have a way to focus your improvements.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Chunking Up a Project Using Scenarios&lt;/STRONG&gt;&lt;BR&gt;If you think of your product as helping a user accomplish a goal, it helps cut through the fog. You can think of your product in terms of a list of user goals, business goals and technical goals.&amp;nbsp; What's the minimum set of tasks your user needs to perform with your product?&amp;nbsp; That's your baseline release.&amp;nbsp; What's the incremental value from there?&amp;nbsp; That's how you start to shape your versions and releases.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;User Experience, Business and Technical Perspectives&lt;BR&gt;&lt;/STRONG&gt;Using scenarios is a good forcing function to bring together the user experience, business, and technical perspectives.&amp;nbsp; For the sake of example, let's say your scenario is "User views the product catalog."&amp;nbsp; From the user experience perspective, you're thinking in terms of "show me a relevant list" and "don't make me wait,"&amp;nbsp; From a business perspective, you're thinking in terms of "support a given number of orders per hour" and "lower the total cost of ownership."&amp;nbsp; From a technical standpoint, you're thinking in terms of "requests per second," "minimize resource utilization," ... etc.&amp;nbsp; Well, no wonder getting software right is tough!&amp;nbsp; Luckily, scenarios help you bring together and rationalize the perspectives against a common frame of reference.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Constraints Make More Sense In Context&lt;/STRONG&gt;&lt;BR&gt;Constraints are boundaries to operate within, or what the solution must or must not do.&amp;nbsp; In software,&amp;nbsp;I see a lot of generic constraints passed down as policies.&amp;nbsp; When policy meets scenario, you now have a way to evaluate the effectiveness of that constraint.&amp;nbsp; You can also measure whether that scenario is actually meeting the constraint.&amp;nbsp; You can perform scenario-based testing against a set of scenarios with specific constraints.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Walking the Scenarios&lt;BR&gt;&lt;/STRONG&gt;Have you ever been sold on a great set of features, only to fall flat when you try to actually do something useful?&amp;nbsp; Obviously, that's the extreme case, but it happens to me.&amp;nbsp; It happens less now because whenever I go to buy something, I walk my usage scenarios.&amp;nbsp; Doing a dry run against a scenario is very revealing.&amp;nbsp;&amp;nbsp; This approach works great on the engineering side too.&amp;nbsp; It's one thing to have generic technical requirements for security or performance.&amp;nbsp; It's another to evaluate a scenario and make appropriate and relevant trade-offs from a user, business and technical perspective.&amp;nbsp; Suddenly, generic technical requirements no longer seem as helpful, do they?&amp;nbsp; They still have their place, but when you're engineering your job is to make the right trade-offs.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Scenarios and Solutions&lt;/STRONG&gt;&lt;BR&gt;Given part of my job is to improve customer effectiveness on our platform, I regularly use scenarios as a backdrop for evaluation.&amp;nbsp; As I've gotten more effective, I noticed&amp;nbsp;shifting from&amp;nbsp;features and components to scenarios and solutions is&amp;nbsp;the key.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;More Information&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://www.sei.cmu.edu/architecture/scenario_paper/" target=_blank mce_href="http://www.sei.cmu.edu/architecture/scenario_paper/"&gt;SEI - Scenario-Based Analysis of Software Architecture&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=How%20To%3a%20Consolidate%20Various%20Types%20of%20Performance%20Requirements%20and%20Testing%20Objectives&amp;amp;referringTitle=Home" target=_blank mce_href="http://www.codeplex.com/PerfTesting/Wiki/View.aspx?title=How%20To%3a%20Consolidate%20Various%20Types%20of%20Performance%20Requirements%20and%20Testing%20Objectives&amp;amp;referringTitle=Home"&gt;How To: Consolidate Various Types of Performance Acceptance Criteria&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;My Related Posts&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/jmeier/archive/2006/12/09/what-s-a-scenario.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2006/12/09/what-s-a-scenario.aspx"&gt;What's a Scenario?&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/jmeier/pages/scenario-frame-example.aspx" mce_href="http://blogs.msdn.com/jmeier/pages/scenario-frame-example.aspx"&gt;Scenario Frame Example&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5456490" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Innovation/default.aspx">Innovation</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Project+Management/default.aspx">Project Management</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Software+Engineering/default.aspx">Software Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Effectiveness/default.aspx">Effectiveness</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Design/default.aspx">Design</category></item><item><title>How To Research Efficiently</title><link>http://blogs.msdn.com/jmeier/archive/2007/05/28/how-to-research-efficiently.aspx</link><pubDate>Mon, 28 May 2007 07:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2934906</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/2934906.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=2934906</wfw:commentRss><description>&lt;P&gt;Building guidance takes a lot of research.&amp;nbsp; Over the years, I've learned how to do this faster and easier.&amp;nbsp; One of the most important things I do is setup my folders (whether file system or Groove)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Initial Folders&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;/Project X
	/Drafts
	/Research
	/Reference
&lt;/PRE&gt;&lt;STRONG&gt;Folder Over Time&lt;BR&gt;&lt;/STRONG&gt;Over time, this ends up looking more like &lt;PRE&gt;Project X
	/Builds
		/2007_05_26
		/2007_05_27
	/Drafts
	/Reference
		/Articles
		/Blogs
		/Bugs
		/CaseStudies
		/Docs
		/Slides
		/Source X
		/Source Y
		/Source Z
	/Research
		/Braindumps
		/DataPoints
		/QuestionsLists
		/Topic X
		/Topic Y
		/Topix Z
	/Tests
		/Tests X
		/Tests Y
		/Tests Z
	/Whiteboards
		/Topic X
		/Topic Y
		/Topic Z
&lt;/PRE&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;Key Points&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Factor reference from research&lt;/STRONG&gt;.&amp;nbsp; Reference is stuff I pull in from various sources, such as slides, blogs, articles ... etc.&amp;nbsp; Research holds the notes and docs I create.&amp;nbsp; This way I avoid mixing information I create with information that I reference.&amp;nbsp; Having a place to store my reference information helps me optimize when I'm hunting and gathering resources in batch mode.&amp;nbsp; I also find that it saves me time when I have to go back and figure out where information came from.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Factor stages of information&lt;/STRONG&gt;.&amp;nbsp; In my basic workflow, I move information from research to drafts to builds.&amp;nbsp; (where builds are guides)&amp;nbsp; Keeping them separate makes it very easy for me to know the current state of the information and it gives me a safe place to re-factor and make changes.&amp;nbsp; Research is effectively my sandbox to create documents and organize my notes as I see fit.&amp;nbsp; Drafts is where I have to make decision on what and how to share the information.&amp;nbsp; Builds is where I produce a shareable set of information.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Have a place for whiteboard captures&lt;/STRONG&gt;.&amp;nbsp; Whiteboards is where I dump pics from whiteboarding sessions.&amp;nbsp; I'm a fan of doing braindumps at the whiteboard and quickly dumping to a place to reference.&amp;nbsp; If it's just text, I write it down.&amp;nbsp; If it's visual, I take a pic and file it.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I use this approach whether I'm doing personal learning or building&amp;nbsp;1200+ page guides.&amp;nbsp; This approach helps me spend more time researching and less time figuring out where to put the&amp;nbsp;information.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;My Related Posts&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/jmeier/archive/2007/01/12/analyzing-a-problem-space.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/01/12/analyzing-a-problem-space.aspx"&gt;Analyzing a Problem Space&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/jmeier/archive/2006/11/21/test-driven-guidance.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2006/11/21/test-driven-guidance.aspx"&gt;Test-Driven Guidance&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2934906" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Effectiveness/default.aspx">Effectiveness</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Productivity/default.aspx">Productivity</category></item><item><title>Driver's Guide vs. Owner's Manual</title><link>http://blogs.msdn.com/jmeier/archive/2007/03/18/driver-s-guide-vs-owner-s-manual.aspx</link><pubDate>Sun, 18 Mar 2007 02:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1903139</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/1903139.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=1903139</wfw:commentRss><description>&lt;P&gt;One of the metaphors I use to explain the distinction between documentation and guidance is Driver's guide vs. Owner's Manual.&amp;nbsp; While I could go into the finer details, it's a good starting point.&amp;nbsp; From an owner's manual, I expect to see how things work and how they're intended to be used.&amp;nbsp; From a driver's guide, I expect "how to get the most out of it."&lt;/P&gt;
&lt;P&gt;I see the two bodies of information as very complimentary.&amp;nbsp; I also see them as distinct.&amp;nbsp; I wouldn't want to mix my driver's guide with my owner's manual.&amp;nbsp; However, I do want to be able to seamlessly go from one to the other, when I need to.&amp;nbsp; I also want my owner's manual written by the people that built it and I want my driver's guide written by the people who use it in action.&lt;/P&gt;
&lt;P&gt;In practice, I use my owner's manual when I care and tune my RV.&amp;nbsp; When I take a cross country trip, I use my driver's guide.&amp;nbsp; Knowing this distinction helps me choose the right tool (information set) for the job, as well as set my expectations about the type of information I'll find.&lt;/P&gt;
&lt;P&gt;I think finding the right metaphors is important because it&amp;nbsp;helps illustrate a distinction that's not always obvious or hard to explain.&amp;nbsp; I&amp;nbsp;don't think guidance is yet a pervasive part of our technical landscape, and yet I see it&amp;nbsp;as a key differentiator between success and failure.&amp;nbsp;&amp;nbsp;By pervasive, I mean I can use any product or technology and easily find the driver's guide.&amp;nbsp; I mostly see owner's manuals.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1903139" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category></item><item><title>Guidance 2.0</title><link>http://blogs.msdn.com/jmeier/archive/2007/03/03/guidance-2-0.aspx</link><pubDate>Sun, 04 Mar 2007 02:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1800019</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/1800019.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=1800019</wfw:commentRss><description>&lt;P&gt;Imagine what a Guidance 2.0 world might be like ...&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;browse &lt;A class="" href="http://en.wikipedia.org/wiki/Tag_cloud" mce_href="http://en.wikipedia.org/wiki/Tag_cloud"&gt;tag clouds&lt;/A&gt; of reusable "architecture nuggets"&lt;/LI&gt;
&lt;LI&gt;subscribe to "guidance feeds" that give you the latest practices and recommendations&lt;/LI&gt;
&lt;LI&gt;share your "guidance" playlists with friends (share your favorite collections of how tos, guidelines, checklists)&lt;/LI&gt;
&lt;LI&gt;build guidance &lt;A class="" href="http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)" mce_href="http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)"&gt;mashups&lt;/A&gt; from your favorite trusted sources of information&lt;/LI&gt;
&lt;LI&gt;rate the guidance and rate the raters (think Amazon or EBay)&lt;/LI&gt;
&lt;LI&gt;browse a federation of guidance &lt;A class="" href="http://en.wikipedia.org/wiki/Wiki" mce_href="http://en.wikipedia.org/wiki/Wiki"&gt;Wikis&lt;/A&gt; in your company and in the community&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I think next-gen guidance is about bringing together a lot of key concepts:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="" href="http://blogs.msdn.com/jmeier/archive/2005/10/10/context-precision.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2005/10/10/context-precision.aspx"&gt;context-precision&lt;/A&gt; (using context to organize information)&lt;/LI&gt;
&lt;LI&gt;personalization (create your own views, tailor it for your needs, ... etc.)&lt;/LI&gt;
&lt;LI&gt;community type ratings (expose the thinking and rate the raters for the guidance)&lt;/LI&gt;
&lt;LI&gt;guidance types (evolvable schemas for guidance types, such as how tos, guidelines, checklists, patterns ...)&lt;/LI&gt;
&lt;LI&gt;&lt;A class="" href="http://en.wikipedia.org/wiki/Folksonomy" mce_href="http://en.wikipedia.org/wiki/Folksonomy"&gt;Folksonomy&lt;/A&gt;&amp;nbsp;over taxonomy&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;A lot of today's guidance lives in blogs.&amp;nbsp; Part of the problem (and beauty) of blogs is that every end node is a blob of information.&amp;nbsp; What if there were RSS end nodes that&amp;nbsp;contained "collections" or "lists" of how tos, guidelines, patterns ... etc.?&amp;nbsp; From a very practical standpoint, I would love to subscribe to the latest MS (or any company) recommendations and view those in a type of my choice (patterns, guidelines, how tos ... etc.)&amp;nbsp; The mashupability&amp;nbsp;is endless.&lt;/P&gt;
&lt;P&gt;Those are the&amp;nbsp;ideas that drove&amp;nbsp;and shaped&amp;nbsp;&lt;A class="" href="http://www.codeplex.com/GuidanceExplorer" mce_href="http://www.CodePlex.com/GuidanceExplorer"&gt;Guidance Explorer&lt;/A&gt;.&amp;nbsp; Guidance Explorer was just one small step towards a world of more effective and efficient&amp;nbsp;guidance.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1800019" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Explorer/default.aspx">Guidance Explorer</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Social+Software/default.aspx">Social Software</category></item><item><title>Scenario Frames for Guidance</title><link>http://blogs.msdn.com/jmeier/archive/2007/02/22/scenario-frames-for-guidance.aspx</link><pubDate>Thu, 22 Feb 2007 10:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1740123</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/1740123.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=1740123</wfw:commentRss><description>&lt;P&gt;When I tackle a problem domain, I first frame out the space.&amp;nbsp; To do this, I list out scenarios and sub-scenarios.&amp;nbsp; I group the scenarios under categories.&amp;nbsp; Sometimes categories come first, sometimes scenarios do.&amp;nbsp; I call the result, a Scenario Frame.&lt;/P&gt;
&lt;P&gt;I use Scenario Frames to evaluate platform, tools, and guidance.&amp;nbsp;&amp;nbsp; I also use them for product design, innovation, competitive assessments, subject matter expert reviews, arch and design reviews, and as a way to build shared understanding of a problem space.&lt;/P&gt;
&lt;P&gt;Here's&amp;nbsp;a&amp;nbsp;&lt;A class="" href="http://blogs.msdn.com/jmeier/pages/scenario-frame-example.aspx" mce_href="http://blogs.msdn.com/jmeier/pages/scenario-frame-example.aspx"&gt;Scenario Frame Example&lt;/A&gt;&amp;nbsp;my team is creating to enumerate and evaluate Source Control scenarios in VSTS 2005:&lt;/P&gt;
&lt;P&gt;What's your favorite tool for framing out problem spaces?&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1740123" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Design/default.aspx">Design</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Frames/default.aspx">Frames</category></item><item><title>Context is Key</title><link>http://blogs.msdn.com/jmeier/archive/2007/01/12/context-is-key.aspx</link><pubDate>Fri, 12 Jan 2007 06:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1453777</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/1453777.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=1453777</wfw:commentRss><description>I was browsing &lt;A class="" href="http://blogs.msdn.com/RicoM" mce_href="http://blogs.msdn.com/RicoM"&gt;Rico's blog&lt;/A&gt; and I came across his post &lt;A class="" href="http://blogs.msdn.com/ricom/archive/2006/12/21/do-performance-analysis-in-context.aspx" mce_href="http://blogs.msdn.com/ricom/archive/2006/12/21/do-performance-analysis-in-context.aspx"&gt;Do Performance Analysis in Context&lt;/A&gt;.&amp;nbsp; I couldn't agree more.&amp;nbsp; When it comes to evaluation, context is key.&amp;nbsp; If you don't know the scenarios and context, you can't trust the merits of your data or solutions.&amp;nbsp; To spread the idea and importance at work, I've coined the term &lt;A class="" href="http://blogs.msdn.com/jmeier/archive/2005/10/10/context-precision.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2005/10/10/context-precision.aspx"&gt;Context-Precision&lt;/A&gt;.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1453777" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category></item><item><title>Analyzing a Problem Space</title><link>http://blogs.msdn.com/jmeier/archive/2007/01/12/analyzing-a-problem-space.aspx</link><pubDate>Fri, 12 Jan 2007 05:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1453486</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/1453486.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=1453486</wfw:commentRss><description>&lt;P&gt;How do you learn a problem space?&amp;nbsp; I've had to chunk up problem spaces to give advice for the last several years, so I've refined my approach over time.&amp;nbsp; In fact, When I find myself churning or don't have the best answers, I usually find that I've missed an important step.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Problem Domain Analysis&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;EM&gt;What are the best sources of information?&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;What are the key questions for this problem space?&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;What are the key buckets or categories in this problem space?&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;What are the possible answers for the key questions?&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;What are the empirical results to draw from?&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Who can be my sounding board?&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;What are the best answers for the key questions?&lt;/EM&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;1. &lt;EM&gt;What are the best sources of information?&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR&gt;Finding the best sources of information is key to saving time. I cast a wide net then quickly spiral down to find the critical, trusted sources of information in terms of people, blogs, sites, aliases, forums, ... etc.&amp;nbsp; Sources are effectively the key nodes in my knowledge network.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;2. What are the key questions for this problem space?&lt;/STRONG&gt;&lt;/EM&gt;&lt;BR&gt;Identifying the questions is potentially the most crucial step.&amp;nbsp; If I'm not getting the right answers, I'm not asking the right questions.&amp;nbsp; Questions also focus the mind, and no problem withstands sustained thinking (thinking is simply asking and answering questions).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;3. What are the key buckets or categories in this problem space?&lt;/EM&gt;&lt;BR&gt;&lt;/STRONG&gt;It's not long before questions start to fall into significant buckets or categories.&amp;nbsp; I think of these categories as a frame of reference for the problem space.&amp;nbsp; This is how we created our "Security Frame" for simplifying how we analyzed application security.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;4. &lt;EM&gt;What are the possible answers for the key questions?&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR&gt;When identifying the answers, the first step is simply identifying how it's been solved before.&amp;nbsp; I always like to know if this problem is new and if not, what are the ways it's been solved (the patterns).&amp;nbsp; If I think I have a novel problem, I usually haven't looked hard enough.&amp;nbsp; I ask myself who else would have this problem, and I don't limit myself to the software industry.&amp;nbsp; For example, I've found great insights for project management and for storyboarding software solutions by borrowing from the movie industry.&lt;/P&gt;
&lt;P&gt;One pitfall to avoid is that just because a solution worked in one case doesn't mean it's right for you.&amp;nbsp; The biggest differences are usually context.&amp;nbsp; I try to find the "why" and "when" behind the solution, so that I can understand what's relevant for me, as well as tailor it as necessary.&amp;nbsp; When I'm given blanket advice, I'm particularly curious what's beneath the blanket.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;5. &lt;/STRONG&gt;&lt;EM&gt;&lt;STRONG&gt;What are the empirical results to draw from?&lt;/STRONG&gt;&lt;BR&gt;&lt;/EM&gt;Nothing beats empirical results.&amp;nbsp; Specifically I mean reference examples.&amp;nbsp; Reference examples are short-cuts for success.&amp;nbsp; Success leaves clues.&amp;nbsp; I try to find the case studies and the people behind them.&amp;nbsp; This way I can model from their success and learn from their failure (failure is just another lesson in how not to do something).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;6. &lt;EM&gt;Who can be my sounding board?&lt;/EM&gt;&lt;/STRONG&gt;&lt;BR&gt;One assumption I make when solving a problem is that there's always somebody better than me for that problem.&amp;nbsp; So I then ask, well who is that and I seek them out.&amp;nbsp; It's a chance to learn from the best and force me to grow my network.&amp;nbsp; This is also how I build up a sounding board of experts.&amp;nbsp; A sounding board is simply a set of people I trust to have useful perspective on a problem, even if it's nothing more than improving my own questions.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;7. &lt;/STRONG&gt;&lt;EM&gt;&lt;STRONG&gt;What are the best answers for the key questions?&lt;/STRONG&gt;&lt;BR&gt;&lt;/EM&gt;The answers that I value the most are the principles.&amp;nbsp; These are my gems.&amp;nbsp; A prinicple is simply a fundamental law.&amp;nbsp; I'd rather know a single priniciple, then a bunch of rules.&amp;nbsp; By knowing a single principle, I can solve many variations of a problem.&lt;/P&gt;
&lt;P&gt;Now, while I've left some details out, I've hopefully highlighted enough for you here that you find something you can use in your own problem domain analysis.&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1453486" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Engineering/default.aspx">Guidance Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Effectiveness/default.aspx">Effectiveness</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Productivity/default.aspx">Productivity</category></item></channel></rss>