<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Boxes and Arrows: Stories by Adam Polansky</title>
    <link>http://www.boxesandarrows.com/person/1036</link>
    <pubDate>Tue, 10 Jul 2007 07:25:42 GMT</pubDate>
    <description>Stories by Adam Polansky</description>
    <item>
      <title>Faceted Feature Analysis</title>
      <link>http://www.boxesandarrows.com/view/faceted-feature</link>
      <guid>http://www.boxesandarrows.com/view/faceted-feature</guid>
      <description>&lt;p&gt;Everyone has ideas.  Many of those ideas are held passionately.  Some are brilliant, some are unrealistic and some are down-right stupid.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;How can you make sense of ideas from multiple sources&amp;mdash;formal requirements, brainstorm sessions, contextual inquiry, and input from the boss&amp;rsquo;s wife?&lt;/li&gt;
    &lt;li&gt;How do you entertain all ideas and still weed out the good stuff from the garbage without hurting someone&amp;rsquo;s feelings&amp;mdash;especially when that someone signs your check?&lt;/li&gt;
    &lt;li&gt;How do you factor in real constraints and capabilities before these ideas become etched in stone?&lt;/li&gt;
    &lt;li&gt;How do you take in the different points of view that come from a programmers or business owners, not to mention the actual users of your product?&lt;/li&gt;
    &lt;li&gt;How do you do all these things and define project scope with some level of integrity that&amp;rsquo;s more than intuition or politics?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This article explains a process called &amp;ldquo;Faceted Feature Analysis.&amp;rdquo; It&amp;rsquo;s an exercise that I&amp;rsquo;ve been using for nearly 8 years on projects both large and small. The facets refer to &lt;strong&gt;three characterizing facets&lt;/strong&gt; in any project: business value, ease of implementation, and user value.&lt;/p&gt;
&lt;p&gt;Faceted Feature Analysis also uses &lt;strong&gt;three constraints&lt;/strong&gt; that govern every project: cost, time, and quality.&lt;/p&gt;
&lt;p&gt;By crossing the characterizing facets with constraints, you are combining the subjective needs of the project stakeholders with the objective constraints of the project in a way that ensures &lt;em&gt;all&lt;/em&gt; points of view are fairly considered.  It also ensures that a project requirement is not included or excluded simply because one person yelled louder than the others.&lt;/p&gt;
&lt;p&gt;The process involves six steps:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Rating the Feature List&lt;/li&gt;
    &lt;li&gt;Creating a Flexibility Matrix&lt;/li&gt;
    &lt;li&gt;Mapping&lt;/li&gt;
    &lt;li&gt;Scoring&lt;/li&gt;
    &lt;li&gt;Sorting&lt;/li&gt;
    &lt;li&gt;Fine-Tuning&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Step 1: Rating the Feature List&lt;/h3&gt;
&lt;p&gt;Compile a feature list from whatever sources are available.  These typically include some sort of requirements documentation created by the business owner but can take in suggestions from a brainstorm session, ideas generated from contextual inquiry, competitive analysis, or other sources, formal or informal.  As with brainstorming, there are no &amp;ldquo;bad&amp;rdquo; ideas at this point.  This is important because, as you&amp;rsquo;ll see, the process is designed to weed out the impractical or ridiculous without any single person having to directly put it down.&lt;/p&gt;
&lt;p&gt;Once the list is compiled, create a spreadsheet with the list of features and three adjoining columns: &amp;ldquo;Business Value,&amp;rdquo; &amp;ldquo;Technical Ease of Implementation,&amp;rdquo; and &amp;ldquo;User Value.&amp;rdquo; Ratings from 1-5 are assigned to each feature (1 being low). However, only the people who own each domain provide the ratings for that column: the business owners rate the Business Value column, the tech team rates the Technical Ease, and the user experience folks rate the User Value.&lt;/p&gt;
&lt;p&gt;In this way, everybody is in a position to speak to their own area of expertise. Also, the rating of a particular feature isn&amp;rsquo;t as subject to the whims of the most charismatic or forceful person at the table, so you get a truer assessment of the general value of a feature.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img width="500" height="169" src="/files/banda/faceted-feature/facetedf_polansky_070707_1.gif" alt="Preliminary Ratings on a Feature List" /&gt;&lt;br /&gt;
Figure 1: Preliminary Ratings on a Feature List&lt;/p&gt;
&lt;h3&gt;Step 2: Creating a Flexibility Matrix&lt;/h3&gt;
&lt;p&gt;Flexibility matrices have been around for a while.  Historically it has been a project management tool used to gain consensus on the constraints that govern a project.  Every project is subject to three constraints: &lt;strong&gt;cost&lt;/strong&gt;, &lt;strong&gt;time&lt;/strong&gt;, and &lt;strong&gt;quality&lt;/strong&gt;.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img width="471" height="267" src="/files/banda/faceted-feature/facetedf_polansky_070807_2.gif" alt="Blank Flexibility Matrix" /&gt;&lt;br /&gt;
Figure 2: Blank Flexibility Matrix&lt;/p&gt;
&lt;p&gt;To create a flexibility matrix, the project team needs to agree on which of the three has the least amount of flexibility associated with it. For example, if there are certain features and functions that absolutely &lt;em&gt;must&lt;/em&gt; be developed, then &lt;strong&gt;quality&lt;/strong&gt; is the least flexible constraint. Use an &amp;ldquo;X&amp;rdquo; to note it on the matrix.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img width="470" height="265" src="/files/banda/faceted-feature/facetedf_polansky_070807_3.gif" alt="Developing Flexibility Matrix" /&gt;&lt;br /&gt;
Figure 3: Developing Flexibility Matrix&lt;/p&gt;
&lt;p&gt;That leaves &lt;strong&gt;cost&lt;/strong&gt; (the project has a finite budget of&amp;hellip;) and &lt;strong&gt;time&lt;/strong&gt; (the project must be completed by&amp;hellip;). The result is a matrix similar to Figure 4.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img width="467" height="257" src="/files/banda/faceted-feature/facetedf_polansky_070807_4.gif" alt="Completed Flexibility Matrix" /&gt;&lt;br /&gt;
Figure 4: Completed Flexibility Matrix&lt;/p&gt;
&lt;p&gt;This doesn&amp;rsquo;t mean that &lt;strong&gt;cost&lt;/strong&gt; is not important. It just means that later, if you had to decide whether or not to cut something from the project, the &lt;strong&gt;quality&lt;/strong&gt; or &lt;strong&gt;time&lt;/strong&gt; involved would be considered first.&lt;/p&gt;
&lt;p&gt;h3. Step 3: Mapping&lt;/p&gt;
&lt;p&gt;The project constraints map loosely to the value columns where:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Cost = Business Value&lt;/li&gt;
    &lt;li&gt;Time = Technical Ease&lt;/li&gt;
    &lt;li&gt;Quality = User Value&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By making this association you can add weight to the ratings in any column.  In this case &lt;strong&gt;quality&lt;/strong&gt; is the least flexible constraint so you multiply by 3 all of the ratings in the User Value column.  As &lt;strong&gt;time&lt;/strong&gt; is the next least flexible constraint, the ratings in the Technical Ease column are weighted by a factor of 2 and the ratings in the Business Value column are not weighted, because &lt;strong&gt;cost&lt;/strong&gt; is the most flexible of the three constraints.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img width="507" height="233" src="/files/banda/faceted-feature/facetedf_polansky_070707_5.gif" alt="Mapping Flexibility Matrix to Ratings" /&gt;&lt;br /&gt;
Figure 5: Mapping Flexibility Matrix to Ratings&lt;/p&gt;
&lt;h3&gt;Step 4: Scoring&lt;/h3&gt;
&lt;p&gt;Simply add up the weighted ratings into the Total column.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img width="507" height="233" src="/files/banda/faceted-feature/facetedf_polansky_070707_6.gif" alt="Scored Ratings" /&gt;&lt;br /&gt;
Figure 6: Scored Ratings&lt;/p&gt;
&lt;h3&gt;Step 5: Sorting
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This is where the magic happens! Sort the features according to their scores. Invariably, those features with the highest aggregated values rise to the top and those with the lowest values sink to the bottom.&lt;/p&gt;
&lt;/h3&gt;
&lt;h3&gt;Step 6: Fine-Tuning&lt;/h3&gt;
&lt;p&gt;What about the stuff in the middle?  After you&amp;rsquo;ve sorted the list, you can usually find some natural cut-off point in the list where everything above the line constitutes a complete solution and everything below the line is either a feature for another day, a variation on a feature that made the cut, or something that might be best forgotten.&lt;/p&gt;
&lt;p&gt;The question now is whether or not that natural cut-off point aligns with the constraints.  In the case of &lt;strong&gt;quality&lt;/strong&gt; there&amp;rsquo;s no need for further analysis because you&amp;rsquo;ve effectively said &amp;ldquo;regardless of cost or time, we need to have the features we&amp;rsquo;ve identified here.&amp;rdquo;  In the case of &lt;strong&gt;cost&lt;/strong&gt; or &lt;strong&gt;time&lt;/strong&gt;, it is sometimes necessary to get estimates from the team on the hours needed for each feature.  That way you can associate cost or time with each feature to negotiate the cut-off point by &amp;ldquo;horse-trading&amp;rdquo; with items of similar value above and below the line.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img width="461" height="263" src="/files/banda/faceted-feature/facetedf_polansky_070807_7.gif" alt="Effort Estimate" /&gt;&lt;br /&gt;
Figure 7: Effort Estimate&lt;/p&gt;
&lt;p&gt;When the negotiating is done, you may discover one of three things: * You have defined the scope within the constraints * The constraints need to be revisited and the cut-off line needs to move * The constraints cannot be revisited and the project should not proceed (an extreme outcome)&lt;/p&gt;
&lt;h3&gt;The Benefits&lt;/h3&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b&gt;Increases objectivity.&lt;/b&gt; You are leveraging individual bias to generate unbiased feature rankings.  This occurs because participants are limited to rating features only from the perspective of their areas of expertise and using overriding, agreed-upon constraints, rather than personal influence, as the means of emphasis.&lt;/li&gt;
    &lt;br /&gt;
    &lt;li&gt;&lt;b&gt;Assists in project planning.&lt;/b&gt; Scope and estimates provide the basis for a traditional project Gantt chart or the backlog that will feed an Agile iteration plan&lt;/li&gt;
    &lt;br /&gt;
    &lt;li&gt;&lt;b&gt;Mitigates churn.&lt;/b&gt; This process greatly reduces the second-guessing during development that may occur when features have not been pre-qualified.  There are fewer surprises downstream.&lt;/li&gt;
    &lt;br /&gt;
    &lt;li&gt;&lt;b&gt;Minimizes politics.&lt;/b&gt; A feature rises or drops in the list on its own merit as it relates to the project constraints, not because anyone knocked it down or ram-rodded it to the top. (This can still happen but it&amp;rsquo;s harder to do without obviously and publicly disregarding the point of the exercise.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;A Few Thoughts By Way of Addenda&lt;/h3&gt;
&lt;p&gt;Understand that this process is not &lt;em&gt;the&lt;/em&gt; way but simply &lt;em&gt;a&lt;/em&gt; way to qualify a project&amp;rsquo;s scope.&lt;/p&gt;
&lt;p&gt;The process is true enough to make sense out of a lot of information but not airtight in its logic because, as I mentioned, the associations between the values and constraints are loose and there is still usually some negotiation involved in the fine tuning phase. This means it is still possible for someone with influence to trump the findings in a particular exercise, based on their own agendas.&lt;/p&gt;
&lt;p&gt;That said, by not being too prescriptive, the process allows for a great deal of flexibility. For instance, the checkout process on an e-commerce site is a feature on its own but it also has a number of sub-features like &amp;ldquo;review your purchase,&amp;rdquo; &amp;ldquo;enter shipping information,&amp;rdquo; or &amp;ldquo;confirm purchase.&amp;rdquo;  So, while the team agrees that you need a checkout function, by rating the sub-features individually you&amp;rsquo;ll weed out some things for later development.&lt;/p&gt;
&lt;p&gt;In your matrix, you can also include additional columns for more specific descriptions of proposed new features or columns for other metadata such as data source or legal mandate. Such additional information helps characterize the proposed features, making them easier to rate.&lt;/p&gt;
&lt;p&gt;In my experience, this process has proven itself over and over as easy to do, easy for everyone to understand. It doesn&amp;rsquo;t take long and it yields both material and intangible value. However you apply it, you have a way to take a granular look at a lot of information and determine earlier rather than later whether or not something &lt;em&gt;should&lt;/em&gt; be built, rather than if it &lt;em&gt;could&lt;/em&gt; be built.  That will save you and everyone else the downstream heartache that comes in the form of increased cost, increased time, and lack of quality. It also eases that boat ride because everyone participates in a way that brings their needs into the equation, making the outcome much more digestible and less likely to be challenged.&lt;/p&gt;
&lt;p&gt;After all, if you can help create great products on time and under budget you&amp;rsquo;ll be a hit at parties and that&amp;rsquo;s why we do this sort of work, isn&amp;rsquo;t it?&lt;/p&gt;</description>
      <pubDate>Tue, 10 Jul 2007 07:25:42 GMT</pubDate>
      <author>Adam Polansky</author>
      <category>Deliverables</category>
      <category>Methods</category>
    </item>
  </channel>
</rss>
