<?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 : Design</title><link>http://blogs.msdn.com/jmeier/archive/tags/Design/default.aspx</link><description>Tags: Design</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Customer Connected Engineering</title><link>http://blogs.msdn.com/jmeier/archive/2009/05/19/customer-connected-engineering.aspx</link><pubDate>Tue, 19 May 2009 20:00:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9628635</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/9628635.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=9628635</wfw:commentRss><description>&lt;p&gt;I posted slides on &lt;a href="http://shapingsoftware.com/2009/05/19/customer-connected-engineering/" target="_blank"&gt;how we do Customer Connected Engineering at patterns &amp;amp; practices&lt;/a&gt; to &lt;a href="http://shapingsoftware.com/" target="_blank"&gt;Shaping Software&lt;/a&gt;.&amp;#160; Customers Connected Engineering (CCE) is how we engage customers throughout our product development. We formally engage customers during the planning, development, and release of our deliverables to help make sure our deliverables are customer-driven.&amp;#160; Customers supply the scenarios, help prioritize, and provide feedback helping reduce the gap between what we build and what customers actually need.&amp;#160; It's effectively a prosumer model where the producer pairs with the consumers to improve the results.&lt;/p&gt;  &lt;p&gt;Find out more about &lt;a href="http://shapingsoftware.com/2009/05/19/customer-connected-engineering/" target="_blank"&gt;Customer Connected Engineering&lt;/a&gt; including key activities and guiding principles.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9628635" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/patterns+and+practices/default.aspx">patterns and practices</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/Design/default.aspx">Design</category></item><item><title>Model-Driven Approaches</title><link>http://blogs.msdn.com/jmeier/archive/2008/08/01/model-driven-approaches.aspx</link><pubDate>Fri, 01 Aug 2008 19:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8800539</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8800539.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8800539</wfw:commentRss><description>&lt;P&gt;When people ask me my take on model-driven approaches, I think of two ends of the spectrum -- human and the machine. 
&lt;P&gt;&lt;STRONG&gt;Key Points&lt;/STRONG&gt;&amp;nbsp; 
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Model for humans&lt;/STRONG&gt;.&amp;nbsp; For humans, I find using a whiteboard (whiteboard modeling) works well -- it's universal. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Model for machines&lt;/STRONG&gt;.&amp;nbsp; For machines, I find speaking closer to the code is a good thing and design is rarely a clean model. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Model to learn&lt;/STRONG&gt;.&amp;nbsp; I've found modeling more useful when you throw it away -- it's a learning tool.&amp;nbsp; Model so you get it, then go to it.&amp;nbsp; I think the key is that the model is a map, not the actual territory.&amp;nbsp; The usefulness of a map is actually decoupling from the complexity and creating a simpler lens. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Model to share&lt;/STRONG&gt;.&amp;nbsp; I think the real value of models is when you create a way to share the problem or solution in a simplified way.&amp;nbsp; This helps for sharing a vision of the end in mind, as well as getting more sustained thinking around the problem.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Model-Driven Code&lt;BR&gt;&lt;/STRONG&gt;I've never experienced an effective modeling approach that turns visuals of systems into code, where the model doesn't get in the way.&amp;nbsp; At some point, the model stops being useful for humans or stops being useful to the machine.&amp;nbsp; As a result, I've never really been a fan of model-driven approaches that are coupled to code in practice, although they're always interesting in theory.&amp;nbsp;&amp;nbsp; While I'm open to the idea, I just haven't seen it.&amp;nbsp; Am I missing out?&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Effective Modeling for Shaping Software&lt;BR&gt;&lt;/STRONG&gt;While I'm not a fan of most visual modeling tools, there’s some very real modeling approaches I find to be effective (which is more about modeling for the humans to understand what matters.)&amp;nbsp; I find that light-weight, human-oriented models are particularly effective for shaping software around quality attributes.&amp;nbsp; For example:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Performance&lt;/STRONG&gt;.&amp;nbsp; For performance design, I've found Performance Modeling to be effective.&amp;nbsp; See &lt;A href="http://msdn.microsoft.com/en-us/library/ms998537.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms998537.aspx"&gt;patterns &amp;amp; practices Performance Modeling&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Security&lt;/STRONG&gt;.&amp;nbsp; For security design, I've found Threat Modeling to be effective.&amp;nbsp; See &lt;A href="http://msdn.microsoft.com/en-us/library/ms978516.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms978516.aspx"&gt;patterns &amp;amp; practices Threat Modeling&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Reliability&lt;/STRONG&gt;.&amp;nbsp; For reliability design, I've found Fault-tree modeling to be effective.&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/2005/12/01/what-makes-a-good-threat-model.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2005/12/01/what-makes-a-good-threat-model.aspx"&gt;What Makes a Good Threat Model&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/2007/02/02/how-i-explain-threat-modeling-to-customers.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/02/02/how-i-explain-threat-modeling-to-customers.aspx"&gt;How I Explain Threat Modeling to Customers&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8800539" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Design/default.aspx">Design</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Architecture/default.aspx">Architecture</category></item><item><title>Designing an Authentication and Authorization Strategy</title><link>http://blogs.msdn.com/jmeier/archive/2008/06/25/designing-an-authentication-and-authorization-strategy.aspx</link><pubDate>Wed, 25 Jun 2008 21:35:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8652728</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/8652728.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=8652728</wfw:commentRss><description>&lt;p&gt;What are the key steps to designing an effective authentication and authorization strategy?&amp;nbsp; The keys are knowing your user stores, role stores, and who need to access what or perform which operations.&amp;nbsp;&amp;nbsp; In this post, I share the approaches we've used in two of our patterns &amp;amp; practices guides.&amp;nbsp; These are the approaches we've used to help customers design successfully design their authentication and authorization approaches. &lt;p&gt;&lt;strong&gt;Designing an Authentication and Authorization Strategy - v1&lt;/strong&gt;&lt;br&gt;When we first wrote &lt;a href="http://msdn.microsoft.com/en-us/library/aa302415.aspx" target="_blank"&gt;Building Secure ASP.NET Applications&lt;/a&gt;, here's the meta-process we came up with for working through your authentication and authorization strategies:  &lt;ol&gt; &lt;li&gt;Identify resources &lt;/li&gt; &lt;li&gt;Choose an authorization strategy &lt;/li&gt; &lt;li&gt;Choose the identities used for resource access &lt;/li&gt; &lt;li&gt;Consider identity flow &lt;/li&gt; &lt;li&gt;Choose an authentication approach &lt;/li&gt; &lt;li&gt;Decide how to flow identity &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;For elaboration, see &lt;a href="http://msdn.microsoft.com/en-us/library/aa302383.aspx" target="_blank"&gt;Authentication and Authorization&lt;/a&gt;.  &lt;p&gt;&lt;strong&gt;Designing an Authentication and Authorization Strategy - v2&lt;/strong&gt; &lt;br&gt;When we recently wrote &lt;a href="http://www.codeplex.com/WCFSecurityGuide" target="_blank"&gt;Improving Web Application Security&lt;/a&gt;, we made some revisions:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Identify your user stores. &lt;/li&gt; &lt;li&gt;Identify your role stores.&lt;/li&gt; &lt;li&gt;Identify resources you need to access and operations you need to perform.&lt;/li&gt; &lt;li&gt;Identify which identities need to access the resources and perform the operations.&lt;/li&gt; &lt;li&gt;Choose your authentication and authorization strategies. &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Personally, I've found it really cuts to the chase if you start with your user stores and role stores, since they tend to be somewhat fixed.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Identities&lt;/strong&gt;&lt;br&gt;When you think through the identities, I've found it helpful to think in terms of who needs to access which resources or perform which actions.&amp;nbsp; Consider the following:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Original caller&lt;/li&gt; &lt;li&gt;Process identity&lt;/li&gt; &lt;li&gt;Service account&lt;/li&gt; &lt;li&gt;Custom identity&lt;/li&gt; &lt;li&gt;Role &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Resource Types&lt;br&gt;&lt;/strong&gt;When you think through the resource types, I find it helpful to think in terms of:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;System&lt;/li&gt; &lt;li&gt;Application&lt;/li&gt; &lt;li&gt;User &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Authorization Strategies&lt;/strong&gt;&lt;br&gt;When thinking through the authorization strategies, I find it helpful to consider:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Role-based&lt;/li&gt; &lt;li&gt;Resource-based&lt;/li&gt; &lt;li&gt;Operation-based &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Resource Access Patterns&lt;/strong&gt;&lt;br&gt;When thinking through the resource access patterns, I find it helpful to consider:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Trusted subsystem model &lt;/li&gt; &lt;li&gt;Impersonation/delegation model &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Designing authentication and authorization can be a gnarly topic.&amp;nbsp; I hope the scaffolding above helps you find a path that works for you. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8652728" 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/Design/default.aspx">Design</category></item><item><title>Four Stages of Market Maturity</title><link>http://blogs.msdn.com/jmeier/archive/2007/12/31/four-stages-of-market-maturity.aspx</link><pubDate>Tue, 01 Jan 2008 02:28:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6926183</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/6926183.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=6926183</wfw:commentRss><description>&lt;p&gt;You can tell the maturity of a market by the consumer patterns.&amp;nbsp; If you know the life cycle stages of a market you can better anticipate what level of "needs" your product needs to match to be successful.&amp;nbsp; (I always think of needs in stages like &lt;a href="http://en.wikipedia.org/wiki/Maslow's_hierarchy_of_needs" target="_blank"&gt;Maslow's hierarchy&lt;/a&gt;.)&lt;/p&gt; &lt;p&gt;&lt;strong&gt;The Four Stages of Market Maturity&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Stage 1. Survival&lt;/li&gt; &lt;li&gt;Stage 2. Quality&lt;/li&gt; &lt;li&gt;Stage 3. Convenience&lt;/li&gt; &lt;li&gt;Stage 4. Customization.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;From Survival to Customization&lt;br&gt;&lt;/strong&gt;In the Autumn Special Edition of "strategy+business" magazine,&amp;nbsp;&amp;nbsp;Alonso Martinez and Ronald Haddock describe how a country evolves from developing nation to industrialized nation:&lt;/p&gt; &lt;p&gt;&lt;em&gt;"As a country evolves from developing nation to indusrialized nation, the population's basic needs pass through four distinct stages.&amp;nbsp; In developing countries, most of hte population is preocupied with basic survival - obtaining adequate food, shelter, and clothing. (Much of sub-Saharan Africa is in the stage right now.)&amp;nbsp; As a middle class emerges, people seek greater quality in their food, housing, and clothing (This is currently happening, for example, in much of China and India.)&amp;nbsp; Once a transitioning market's population can afford relatively high quality, they begin to seek convenience; they buy time-saving appliances and processed foods, and they may move closer to work.&amp;nbsp; (This stage is emerging today in Eastern Europ and Latin America.)&amp;nbsp; Finally, as the market graduates into the realm of developed nations, the population wants customization; with needs for survival, quality, and convenience now met, people will spend a premium (as many do in North America, Japan, and western Europe) to satisfy individual tastes and desires."&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Key Take Aways&lt;/strong&gt;&lt;br&gt;I think to successfully anticipate global market needs, you need to understand where in the stack, various consumers are.&amp;nbsp;&amp;nbsp; I've noticed a lot more attention&amp;nbsp;on customization, particularly in social software and personal devices.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6926183" width="1" height="1"&gt;</description><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/Social+Software/default.aspx">Social Software</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Design/default.aspx">Design</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Business/default.aspx">Business</category></item><item><title>Kano, Satisfiers, and Dissatisfiers</title><link>http://blogs.msdn.com/jmeier/archive/2007/12/31/kano-satisfiers-and-disatisfiers.aspx</link><pubDate>Tue, 01 Jan 2008 01:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6925494</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/6925494.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=6925494</wfw:commentRss><description>&lt;p&gt;If you're looking for yet another way to help you prioritize your backlog or to help you shape your product's design, consider the &lt;a class="" href="http://en.wikipedia.org/wiki/Kano_model" target="_blank" mce_href="http://en.wikipedia.org/wiki/Kano_model"&gt;Kano model&lt;/a&gt;.&amp;nbsp;One concept in the Kano model is satisfiers and dissatisfiers.&amp;nbsp; You can think of satisfiers as features you might ask for.&amp;nbsp; You can think of a dissatisfier as an unmet need.&amp;nbsp; It's something you wouldn't necessarily ask for (latent need.)&amp;nbsp; You just expect it. It's absence is a dissatisfier. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Examples&lt;br&gt;&lt;/strong&gt;Here's a few examples:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;As a colleague put it, if you buy a new car, you might ask about features of the engine or luxuries, but you just expect it to have a speedometer.&amp;nbsp; If there's no speedometer, you'll be dissatisfied.  &lt;li&gt;Spelling more words correctly won't make your article great.&amp;nbsp; At the same time, consider the negative impact of spelling a bunch of words incorrectly (dissatisfiers)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Key Points&lt;br&gt;&lt;/strong&gt;Here's the keys:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;At some point, adding more satisfiers doesn't necessarily increase satisfaction.  &lt;li&gt;Addressing a dissatisfier doesn't necessarily increase your satisfaction.  &lt;li&gt;Not addressing a dissatisfier can exponentially decrease satisfaction.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Applied Use&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;You can imagine the impact on a product design.&amp;nbsp; You add a bunch of features (satisfiers), but ignore some dissatisfiers (performance, security, reliability, usability.)&amp;nbsp; That's a common pattern in failed product designs.  &lt;li&gt;You can think in terms of your job.&amp;nbsp; Do you deliver satisfiers or do you reduce dissatisfiers?&amp;nbsp; Some "dissatisfier"jobs are undervalued or unappreciated until disaster strikes, then their exponential value becomes obvious.  &lt;li&gt;You can think in terms of your life.&amp;nbsp; Do you add satisfiers or do you decrease dissatisfiers?&amp;nbsp; could reducing a few dissatisfiers exponentially improve your life?&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;My Relates Posts&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a class="" href="http://blogs.msdn.com/jmeier/archive/2007/02/04/personas-at-patterns-practices.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/02/04/personas-at-patterns-practices.aspx"&gt;Personas at patterns and practices&lt;/a&gt;  &lt;li&gt;&lt;a class="" href="http://blogs.msdn.com/jmeier/archive/2007/02/04/actors-personas-and-roles.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/02/04/actors-personas-and-roles.aspx"&gt;Actors, Personas, and Roles&lt;/a&gt;  &lt;li&gt;&lt;a class="" href="http://blogs.msdn.com/jmeier/archive/2007/02/09/task-analysis-grid-for-communicating-product-design.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2007/02/09/task-analysis-grid-for-communicating-product-design.aspx"&gt;Task-Analysis Grid for Communicating Product Design&lt;/a&gt;  &lt;li&gt;&lt;a class="" href="http://beta.blogs.msdn.com/jmeier/archive/2006/12/09/scenario-and-feature-matrixes.aspx" mce_href="http://beta.blogs.msdn.com/jmeier/archive/2006/12/09/scenario-and-feature-matrixes.aspx"&gt;Scenario and Features Matrix&lt;/a&gt;  &lt;li&gt;&lt;a class="" 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;li&gt;&lt;a class="" href="http://blogs.msdn.com/jmeier/archive/2006/12/03/scenario-evaluations-for-product-design-and-feedback.aspx" mce_href="http://blogs.msdn.com/jmeier/archive/2006/12/03/scenario-evaluations-for-product-design-and-feedback.aspx"&gt;Scenario Evaluations for Product Design and Feedback&lt;br&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6925494" width="1" height="1"&gt;</description><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/Design/default.aspx">Design</category></item><item><title>Human Shepherds and the Law of Relevancy</title><link>http://blogs.msdn.com/jmeier/archive/2007/11/10/human-shepherds-and-the-law-of-relevancy.aspx</link><pubDate>Sat, 10 Nov 2007 23:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6069265</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/6069265.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=6069265</wfw:commentRss><description>&lt;P&gt;Yesterday, &lt;A class="" href="http://blogs.msdn.com/edjez/" target=_blank mce_href="http://blogs.msdn.com/edjez/"&gt;Ed&lt;/A&gt; helped me word a "law" that I use for important decisions and that I see show up quite a bit in a number of places.&amp;nbsp; It's the law of human relevancy.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The Law of Relevancy&lt;/STRONG&gt;&lt;BR&gt;No matter how relevant the information is, it's more relevant with the help of the right people.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The Human Shepherd&lt;/STRONG&gt;&lt;BR&gt;All this law really means is that no matter how well you organize and display information, at some point, there's a glass ceiling on how much easier you can make it for somebody to find what they need.&amp;nbsp; There's always a place for the human shepherd.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Usage / Examples&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The obvious example is the Web 2.0 movement -- where people are the shepherds of the read/write Web.&amp;nbsp; There's lots of needles in the world wide haystack and I'm glad there's people, voices, blogs there to help.&lt;/LI&gt;
&lt;LI&gt;I like the pattern on the Web where sites have a&amp;nbsp;live chat to use a human to help you match their info to your needs, in real time.&lt;/LI&gt;
&lt;LI&gt;I like how Second Life provides the ability to "invoke a human" over just self-help and forums. (I proposed some models for "human help" in Visual Studio and as a general platform&amp;nbsp;some time back I need to revisit)&lt;/LI&gt;
&lt;LI&gt;There's lots of implications&amp;nbsp;for an Enterprise 2.0 world, but I'll save that for another day.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;A Story&lt;/STRONG&gt;&lt;BR&gt;In an early version of Practices Checker (a tool meant to verify your solutions against &lt;A class="" href="http://msdn2.microsoft.com/en-us/practices/default.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/practices/default.aspx"&gt;patterns &amp;amp; practices&lt;/A&gt; recommendations), we tried to figure out relevant guidance based on the type of project (Web, winForm ...), what technologies (ADO.NET, ASMX ...) you were using, ... etc.&amp;nbsp; We did this automatically and generated what I considered more harm than help (it missed things that were important and created a lot of noise.)&amp;nbsp; I applied the law of relevancy and argued that we'd be better off figuring out how to leverage the user's own relevancy engine and pattern-matching ability over auto-magic guesswork.&amp;nbsp; We then created a tool to help smart people, rather than a "smart" tool that gets in the way.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6069265" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Innovation/default.aspx">Innovation</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/Design/default.aspx">Design</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>Roles and Goals</title><link>http://blogs.msdn.com/jmeier/archive/2007/03/13/roles-and-goals.aspx</link><pubDate>Tue, 13 Mar 2007 05:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1869338</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/1869338.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=1869338</wfw:commentRss><description>&lt;P&gt;The next time I need to get a set of requirements, I'm simply going to start with roles&amp;nbsp;with goals.&lt;/P&gt;
&lt;P&gt;I made the mistake of asking for a set of scenarios.&amp;nbsp; What I ended up with is a list of user tasks.&amp;nbsp; Tasks aren't the same as goals.&amp;nbsp; Flying a kite is not the same as having a goal to discover electricity.&amp;nbsp; One is what you're doing, the other is what you want to accomplish.&lt;/P&gt;
&lt;P&gt;Since I didn't have the benefit of direct customer interaction for this case,&amp;nbsp;I'm using&amp;nbsp;that as a challenge.&amp;nbsp; What is the most precise, reliable way to get&amp;nbsp;the&amp;nbsp;information&amp;nbsp;need?&amp;nbsp; Roles with goals.&amp;nbsp; I realized, iterating on a list of roles with goals, would get me closer, faster.&amp;nbsp; I can always drill into the stories or scenarios from the goals.&amp;nbsp; The reverse doesn't seem to be true.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1869338" width="1" height="1"&gt;</description><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/Design/default.aspx">Design</category></item><item><title>Requirements Perspectives</title><link>http://blogs.msdn.com/jmeier/archive/2007/03/09/requirements-frame.aspx</link><pubDate>Sat, 10 Mar 2007 02:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1848231</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/1848231.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=1848231</wfw:commentRss><description>&lt;P&gt;Here's a simple&amp;nbsp;set of perspectives&amp;nbsp;I use for rationalizing requirements:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;User&lt;/LI&gt;
&lt;LI&gt;Business&lt;/LI&gt;
&lt;LI&gt;Expert / Technical&lt;/LI&gt;
&lt;LI&gt;Industry/Standards&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Believe it or not, simply identifying these perspective helps a lot.&amp;nbsp; You'd be surprised how many debates happen simply because nobody explicitly identified the source or perspective of the requirement.&amp;nbsp; You'd also be surprised how quickly this helps you make more deliberate decisions and understand what you trade.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;How does this help?&amp;nbsp; Your business goals might be a n orders per hour.&amp;nbsp; Meanwhile, your user wants sub-second response time.&amp;nbsp; Well, that's what your users want, but what will they tolerate?&amp;nbsp; Can your business afford the resources for an idealistic experience?&amp;nbsp; Design is always about trade-offs.&lt;/P&gt;
&lt;P&gt;In practice, I generally see industry/standards trump business trump expert/technical, trump user.&amp;nbsp; Unfortunately, a lot of software has unconsciously catered to the expert/tech/business at the expense of it's users -- making a lousy experience.&amp;nbsp; On the flip side, some software has catered to users at the expense of the business or industry goals.&amp;nbsp;&amp;nbsp; See the dilema?&amp;nbsp; &lt;/P&gt;
&lt;P&gt;You can make a difference.&amp;nbsp; If you build software, know the perspectives, know the goals, and know the scenarios.&amp;nbsp; In some contexts, some tech/expert reccomendations simply do not make sense.&amp;nbsp; Know what you're optimizing.&amp;nbsp; In some scenarios, industry/standards reign,&amp;nbsp;while in others user experience is king.&amp;nbsp; Make sure you have the right representation at the table.&amp;nbsp; Don't ask your patient to prescribe the medicine, or your doctor to rate the taste.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1848231" 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/Software+Engineering/default.aspx">Software Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Design/default.aspx">Design</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>Task-Analysis Grid for Communicating Product Design</title><link>http://blogs.msdn.com/jmeier/archive/2007/02/09/task-analysis-grid-for-communicating-product-design.aspx</link><pubDate>Fri, 09 Feb 2007 23:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1636896</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/1636896.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=1636896</wfw:commentRss><description>&lt;P&gt;How do you communicate design decisions? … &lt;A class="" href="http://blogs.msdn.com/srinathv/" mce_href="http://blogs.msdn.com/srinathv/"&gt;Srinath&lt;/A&gt; sent me a helpful link on the &lt;A class="" href="http://toddwarfel.com/?p=16" mce_href="http://toddwarfel.com/?p=16"&gt;Task-Analysis Grid&lt;/A&gt;.&amp;nbsp;&amp;nbsp; A Task Analysis Grid is effectively columns of scenarios along with sub-tasks to complete the task. &lt;/P&gt;
&lt;P&gt;Here's the key points:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The columns are organized by Before, After, and Future&lt;/LI&gt;
&lt;LI&gt;The sub-tasks are prioritized and color coded.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;In practice, I think the Task-Analysis Grid is useful for communicating user experiences and high-level product design.&amp;nbsp; For driving engineering and project management, I use Scenario Grids.&amp;nbsp; Scenario Grids are useful for figuring out baseline releases, incremental releases, dependencies, as well as doing scenario-based evaluations and competitive assessments.&amp;nbsp; I'll post more on building Scenario Grids another day.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1636896" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Innovation/default.aspx">Innovation</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/Design/default.aspx">Design</category></item><item><title>Actors, Personas, and Roles</title><link>http://blogs.msdn.com/jmeier/archive/2007/02/04/actors-personas-and-roles.aspx</link><pubDate>Mon, 05 Feb 2007 00:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1600039</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/1600039.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=1600039</wfw:commentRss><description>&lt;P&gt;In user modeling, I usually come across actors, personas, and roles (user roles).&amp;nbsp; I thought it would be helpful to distinguish these so that I can use the right tool for the job, or at least understand their relationships, strengths and weaknesses.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary&lt;BR&gt;&lt;/STRONG&gt;Actor&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Defined - someone or something that "acts" on or with&amp;nbsp;the system.&lt;/LI&gt;
&lt;LI&gt;Sample- customer, fulfillment, credit approval.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Roles&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Defined - a set of needs, behaviors, and expectations.&lt;/LI&gt;
&lt;LI&gt;Use - develop an initial task model.&lt;/LI&gt;
&lt;LI&gt;Keys - three Cs of context, characteristics, and criteria (i.e. overall responsibilities, patterns of interaction, and design objectives)&lt;/LI&gt;
&lt;LI&gt;Sample - regular buyer, incidental buyer, casual browser.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Personas&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Defined - fictitious characters that represent user types. &lt;/LI&gt;
&lt;LI&gt;Use - create familiar faces to help inspire and focus project teams.&lt;/LI&gt;
&lt;LI&gt;Sample - The Enterprise Architect is Art, and is a Programming/Platforms Expert who influences the technology direction, defines technology standards, and oversees (from a technology perspective, not a managerial perspective), the design of several applications in his business unit. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Analysis &lt;/STRONG&gt;&lt;BR&gt;Personas&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Pros - They can encourage empathy among technology-focused designers and developers.&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;Cons - They can encourage projection and overly concrete thinking.&amp;nbsp; They may not be truly representative.&amp;nbsp; It can be tricky for the engineer or designer to figure out what matters and what doesn't.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Roles&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Pros - they abstract the user roles efficiently and make them easy to work with.&lt;/LI&gt;
&lt;LI&gt;Cons - they can be abstract to the point where you lose empathy.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;They All Have Their Place&lt;/STRONG&gt;&lt;BR&gt;At the end of the day, actors, roles and personas have their place.&amp;nbsp; I like the example from forUse&lt;EM&gt;: The Electronic Newsletter of Usage-Centered Design&lt;BR&gt;&lt;/EM&gt;#15, August 2001: &lt;A href="http://www.foruse.com/newsletter/foruse15.htm" mce_href="http://www.foruse.com/newsletter/foruse15.htm"&gt;http://www.foruse.com/newsletter/foruse15.htm&lt;/A&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;"For a simplified example, a business-to-business e-commerce application might be modeled with three actors: Customer, Fulfillment, and Credit Approval. The Customer might be differentiated into several roles: Regular Buying Role, Incidental Buying Role, and Casual Browsing Role. The latter might be described as: not necessarily in the industry and buying may not be sole or primary responsibility (CONTEXT), typically intermittent and unpredictable use, often merely for information regarding varied lines and products, driven by curiosity as much as need (CHARACTERISTICS); may need enticements to become customer, linkage to others from same account, access to retail sources and pricing (CRITERIA)."&lt;/EM&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;What to Do&lt;/STRONG&gt;&lt;BR&gt;In practice, I've found the following guidance helpful: &lt;EM&gt;Create your full range of user roles, then create the personas for selected roles.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;References&lt;/STRONG&gt;&lt;BR&gt;I've found the following references helpful on this topic&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;forUse: The Electronic Newsletter of Usage-Centered Design #15, August 2001: &lt;A href="http://www.foruse.com/newsletter/foruse15.htm" mce_href="http://www.foruse.com/newsletter/foruse15.htm"&gt;http://www.foruse.com/newsletter/foruse15.htm&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Use Case Fundamentals, by Alistair Cockburn: &lt;A href="http://members.aol.com/acockburn/papers/AltIntro.htm" mce_href="http://members.aol.com/acockburn/papers/AltIntro.htm"&gt;http://members.aol.com/acockburn/papers/AltIntro.htm&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Personas in Wikipedia: &lt;A href="http://en.wikipedia.org/wiki/Personas" mce_href="http://en.wikipedia.org/wiki/Personas"&gt;http://en.wikipedia.org/wiki/Personas&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Personas: Moving Beyond Role-Based Requirements Engineering, by Granville Miller and Laurie Williams: &lt;BR&gt;&lt;A href="http://agile.csc.ncsu.edu/SEMaterials/Personas.pdf"&gt;http://agile.csc.ncsu.edu/SEMaterials/Personas.pdf&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1600039" width="1" height="1"&gt;</description><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/Design/default.aspx">Design</category></item><item><title>Personas at patterns and practices</title><link>http://blogs.msdn.com/jmeier/archive/2007/02/04/personas-at-patterns-practices.aspx</link><pubDate>Sun, 04 Feb 2007 23:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1599495</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/1599495.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=1599495</wfw:commentRss><description>&lt;P&gt;At &lt;A class="" href="http://msdn.com/Practices" mce_href="http://msdn.com/Practices"&gt;patterns &amp;amp; practices&lt;/A&gt;, we introduced personas a few years back to help design user experience for our deliverables.&amp;nbsp; Personas helped with a few things:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Understanding demographics.&lt;/LI&gt;
&lt;LI&gt;Building empathy by putting a face behind the user role.&lt;/LI&gt;
&lt;LI&gt;Building a common set of customer examples we can all talk about in meetings. (...Is this for "Art", "Bert","Mort" or "Elvis"?)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I think of a persona as a specific (yet generalized) instance of a role to "personify" and represent what users that play that role, might be like.&amp;nbsp; While we originally argued over the details of the personas, a great by-product was that we focused on the distinctions across our various customer sets.&amp;nbsp; This helped reduce ambiguity during product design.&amp;nbsp; It also helped us make calls on where to put our resources and effort.&lt;/P&gt;
&lt;P&gt;One important lesson we learned was that personas weren't as reusable across groups as they originally seemed they might be.&amp;nbsp; In other words, we couldn't just grab a set of personas from another group, and call them our own.&amp;nbsp; Instead, it meant time and effort to build a set that had specific meaning for our group in the context of what we build.&amp;nbsp; While our naming overlapped with other groups, we had our own set of reference examples.&lt;/P&gt;
&lt;P&gt;Here's the core personas we originally used:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;ART (ARCHITECT / PLATFORMS AND PROGRAMMING EXPERT)&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;BERT (DEV LEAD / CORE COMPONENT DEVELOPER)&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;MORT (DEVELOPER)&lt;/EM&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Here's additional personas we used:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;ELVIS - THE PRAGMATIC PROGRAMMER&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;ISAAC - BUSINESS APPLICATION DEVELOPER&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;SIMON - SYSTEM IMPLEMENTER&lt;/EM&gt;&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;For sharing the persona information, we used a simple template&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;Persona&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Background&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Environment&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Job Description&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Attributes&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;User Experience goals&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Information Sources&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;What does it mean to create a patterns &amp;amp; practices deliverable for this persona?&lt;/EM&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;While that was a practical set of info for quick sharing, the research behind the personas included:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;Overview&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Household and Leisure Activities&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;A Day in the Life&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Work Activities&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Communication and Collaboration&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Skills, Knowledge, and Abilities&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Goals, Fears and Aspirations&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Primary Roles&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Secondary Roles&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Fears&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Career Aspirations&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Computer Skills, Knowledge and Abilities&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Technology Attitudes and User Experience Values&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Tools&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Issues&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;International Considerations&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Opportunities&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Market Influence&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Demographic Attributes&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;References&lt;/EM&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Since our earlier days, I think we've shifted from persona-based&amp;nbsp;design to more customer-connected engineering.&amp;nbsp; We have a lot more direct customer involvement throughout the engineering.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1599495" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/patterns+and+practices/default.aspx">patterns and practices</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/Design/default.aspx">Design</category></item><item><title>Avoiding Do Overs - Testing Your Key Engineering Decisions</title><link>http://blogs.msdn.com/jmeier/archive/2007/02/04/avoiding-do-overs-testing-your-key-engineering-decisions.aspx</link><pubDate>Sun, 04 Feb 2007 04:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1593361</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/1593361.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=1593361</wfw:commentRss><description>&lt;P&gt;I noticed &lt;A class="" href="http://blogs.msdn.com/RicoM" mce_href="http://blogs.msdn.com/RicoM"&gt;Rico&lt;/A&gt; has a &lt;A class="" href="http://blogs.msdn.com/ricom/archive/2007/02/02/performance-problems-survey.aspx" mce_href="http://blogs.msdn.com/ricom/archive/2007/02/02/performance-problems-survey.aspx"&gt;Performance Problems Survey&lt;/A&gt;.&amp;nbsp; From what I've seen, the most important&amp;nbsp;problem is failure to test and explore key engineering decisions.&amp;nbsp; By key engineering decisions, I mean the decisions that have cascading engineering impact.&amp;nbsp; By testing, I mean, doing quick end-to-end tests with minimal code that gives you insight into the costs and glass ceilings of different strategies.&lt;/P&gt;
&lt;P&gt;When I was working our developer labs, I would work with around 50 or so customers in a week.&amp;nbsp; I had to quickly find the potential capability killers. To do so, I had to find the decisions that could easily result in expensive do-overs.&amp;nbsp; If I took care of the big rocks, the little rocks fell into place.&lt;/P&gt;
&lt;P&gt;Here's the categories that I found to be the most useful for finding key engineering decisions:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Authentication&lt;/LI&gt;
&lt;LI&gt;Authorization&lt;/LI&gt;
&lt;LI&gt;Auditing and Logging&lt;/LI&gt;
&lt;LI&gt;Caching&lt;/LI&gt;
&lt;LI&gt;Configuration&lt;/LI&gt;
&lt;LI&gt;Data Access&lt;/LI&gt;
&lt;LI&gt;Debugging&lt;/LI&gt;
&lt;LI&gt;Exception Management&lt;/LI&gt;
&lt;LI&gt;Input and Data Validation&lt;/LI&gt;
&lt;LI&gt;Instrumentation&lt;/LI&gt;
&lt;LI&gt;Monitoring&lt;/LI&gt;
&lt;LI&gt;State Management&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;As you can see, there's a lot of intersection among quality attributes, such as security, performance, and reliability.&amp;nbsp; One of my favorite, and often over-looked capabilities is supportability (configurable levels of logging, instrumentation of key scenarios, ... etc.)&amp;nbsp; This intersection is important.&amp;nbsp; If you only look at a strategy from one perspective, such as performance, you might&amp;nbsp;miss&amp;nbsp;your security requirements.&amp;nbsp; On the other hand, sometimes security requirements will constrain your performance options, so this will help you narrow down your set of potential strategies.&amp;nbsp; In fact, my challenge was&amp;nbsp;usually to help customers build scalable and secure applications.&lt;/P&gt;
&lt;P&gt;By using this set, I could quickly find the most important end-to-end tests.&amp;nbsp; For example, data access was a great category because I could quickly test strategies for paging records, which could make or break the application.&amp;nbsp; I could also test the scalability impact of flowing the caller to the database or using a trusted service account to make the calls.&lt;/P&gt;
&lt;P&gt;To contrast this approach of end to end design tests versus typical prototyping, it wasn't about making a feature work or showing&amp;nbsp;user experiences.&amp;nbsp; These architectural proofs/spikes were for evaluating alternative strategies and litmus testing capabilities to avoid or limit&amp;nbsp;downstream surprises and do-overs.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1593361" 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/Software+Engineering/default.aspx">Software Engineering</category><category domain="http://blogs.msdn.com/jmeier/archive/tags/Design/default.aspx">Design</category></item><item><title>Idioms and Paradigms</title><link>http://blogs.msdn.com/jmeier/archive/2007/01/06/idioms-and-paradigms.aspx</link><pubDate>Sat, 06 Jan 2007 08:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1420753</guid><dc:creator>J.D. Meier</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jmeier/comments/1420753.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jmeier/commentrss.aspx?PostID=1420753</wfw:commentRss><description>&lt;P&gt;John Socha-Leialoha wrote up a nice bit of insight on how &lt;A class="" href="http://www.socha.com/blogs/john/2007/01/users-are-idiomatic.html" mce_href="http://www.socha.com/blogs/john/2007/01/users-are-idiomatic.html"&gt;Users are Idiomatic&lt;/A&gt;.&amp;nbsp; John writes:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;EM&gt;"First, different users will have different definitions of "intuitive." ... Second, and this isn't conveyed directly by the definition of idiomatic, users actually expect inconsistent behavior."&lt;/EM&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;In my experience, I've found this to be true (user experience walkthroughs with customers are very revealing and insightful).&lt;/P&gt;
&lt;P&gt;I first got introduced to idiomatic design for user experience several years back.&amp;nbsp; One of my colleagues challenged me to improve my user interface design by trading what might seem like intuitive paradigms for more useful idioms.&amp;nbsp; He used the example of a car.&amp;nbsp; He said the placement of the gas/break pedals was not intuitive, but idiomatic.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;He argued that what's important is that the pedals are placed where they are efficient and effective, not necessarily intuitive.&amp;nbsp; His point was that I should make design decisions by thinking through user effectiveness/efficiency in the long term vs. just thinking of up front discoverability of intuitive models.&amp;nbsp; He added that sometimes intuitive placement makes sense, as long as you're not trading overall user experience.&lt;/P&gt;
&lt;P&gt;User experience in software is challenging so I enjoy distinctions like this that make me think of the solution from different angles.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1420753" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jmeier/archive/tags/Design/default.aspx">Design</category></item></channel></rss>