<?xml version="1.0"?>
<?xml-stylesheet href="/transform" type="text/xsl"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:bibo="http://purl.org/ontology/bibo/" xmlns:bs="http://purl.org/ontology/bibo/status/" xmlns:ci="https://vocab.methodandstructure.com/content-inventory#" xmlns:dct="http://purl.org/dc/terms/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" lang="en" prefix="bibo: http://purl.org/ontology/bibo/ bs: http://purl.org/ontology/bibo/status/ ci: https://vocab.methodandstructure.com/content-inventory# dct: http://purl.org/dc/terms/ foaf: http://xmlns.com/foaf/0.1/ rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# xhv: http://www.w3.org/1999/xhtml/vocab# xsd: http://www.w3.org/2001/XMLSchema#" vocab="http://www.w3.org/1999/xhtml/vocab#" xml:lang="en">
  <head>
    <title property="dct:title">MOAR FEECHARZ.</title>
    <base href="https://doriantaylor.com/moar-feecharz"/>
    <link href="document-stats#EO6m0TAjo7PSTVP5PAt6zI" rev="ci:document"/>
    <link href="elsewhere" rel="alternate bookmark" title="Elsewhere"/>
    <link href="this-site" rel="alternate index" title="This Site"/>
    <link href="http://purl.org/ontology/bibo/status/published" rel="bibo:status"/>
    <link href="" rel="ci:canonical" title="MOAR FEECHARZ."/>
    <link href="lexicon/#EzqXIsriaILFcWjXdS7FbI" rel="dct:audience" title="Software Developer"/>
    <link href="person/dorian-taylor#me" rel="dct:creator" title="Dorian Taylor"/>
    <link href="person/dorian-taylor" rel="meta" title="Who I Am"/>
    <link about="./" href="3f36c30c-6096-454a-8a22-c062100ae41f" rel="alternate" type="application/atom+xml"/>
    <link about="./" href="f07f5044-01bc-472d-9079-9b07771b731c" rel="alternate" type="application/atom+xml"/>
    <link about="./" href="this-site" rel="alternate"/>
    <link about="./" href="elsewhere" rel="alternate"/>
    <link about="./" href="e341ca62-0387-4cea-b69a-cdabc7656871" rel="alternate" type="application/atom+xml"/>
    <link about="verso/" href="3f36c30c-6096-454a-8a22-c062100ae41f" rel="alternate" type="application/atom+xml"/>
    <link about="verso/" href="this-site" rel="alternate"/>
    <link about="verso/" href="elsewhere" rel="alternate"/>
    <meta content="moar-feecharz" datatype="xsd:token" property="ci:canonical-slug"/>
    <meta content="A conversation on Twitter this summer with a lead at an agency led to this screed about features as a metric for software projects." name="description" property="dct:abstract"/>
    <meta content="2009-09-24T00:59:39+00:00" datatype="xsd:dateTime" property="dct:created"/>
    <meta content="moar-feecharz" property="dct:identifier"/>
    <meta content="2009-09-24T00:54:15+00:00" datatype="xsd:dateTime" property="dct:issued"/>
    <meta content="2009-09-24T00:59:59+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2009-09-24T01:48:49+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2009-09-25T05:27:06+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2009-09-25T05:27:21+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2022-05-31T04:18:52+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2022-05-31T15:10:50+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta about="person/dorian-taylor#me" content="Dorian Taylor" name="author" property="foaf:name"/>
    <meta content="summary" name="twitter:card"/>
    <meta content="@doriantaylor" name="twitter:site"/>
    <meta content="MOAR FEECHARZ." name="twitter:title"/>
    <meta content="A conversation on Twitter this summer with a lead at an agency led to this screed about features as a metric for software projects." name="twitter:description"/>
    <object>
      <nav>
        <ul>
          <li>
            <a href="people-rather-than-features-are-the-largest-common-factor" rev="dct:references" typeof="bibo:Article">
              <span property="dct:title">People, Rather than Features, are the Largest Common Factor</span>
            </a>
          </li>
          <li>
            <a href="reluctant-management-consultant" rev="dct:references" typeof="bibo:Article">
              <span property="dct:title">Reluctant Management Consultant</span>
            </a>
          </li>
          <li>
            <a href="the-principle-of-one-degree" rev="dct:references" typeof="bibo:Article">
              <span property="dct:title">The Principle of One Degree</span>
            </a>
          </li>
          <li>
            <a href="document-stats#EO6m0TAjo7PSTVP5PAt6zI" rev="ci:document" typeof="qb:Observation">
              <span>urn:uuid:3ba9b44c-08e8-4ecf-8493-54fe4f02deb3</span>
            </a>
          </li>
        </ul>
      </nav>
    </object>
  </head>
  <body about="" id="EoJyIGB4NE9ZJ5W9du6HdI" typeof="bibo:Article">
    <aside role="note" id="E0M6G1QJ5Rg9ixVXJVwl1L">
      <p>This is adapted from an email I sent to someone regarding an <a href="http://www.smashingmagazine.com/2009/08/14/how-to-effectively-communicate-with-developers/" title="How To Effectively Communicate With Developers &#xAB; Smashing Magazine" rel="dct:references">article in Smashing Magazine</a> about communicating with developers, which somehow provoked my ire about the focus on features in software.</p>
    </aside>
    <p>It is here that I call into question the utility of the <em>feature</em> as the basic unit of progress and of value for a <a href="lexicon/knowledge-product" title="Knowledge Product" rel="dct:references">knowledge product</a>. My thesis is that features are a suboptimal control for piloting nearly any kind of project intended to produce an object or service in the 21st century. This is largely due to the fact that features only address peoples' <em>tasks</em> rather than their <em>goals</em>, and that modern manufactured goods are usually <a href="pk" title="Notes from Pecha Kucha" rel="dct:references">controlled by software</a>, ultimately making them knowledge products as well. As such, I'm going to be using software as the archetype for project management going forward.</p>
    <p><em>Businesspeople</em> love features because they're like a scoreboard for how they size up against their competitors in bullet point format. Businesspeople like money, and feature lists useful for determining how close they are to having a new thing to sell.</p>
    <p><a href="lexicon/programmer" title="Programmer" rel="dct:references"><em>Programmers</em></a> love features because they correspond directly to units of code. Programmers get off on success in technical mastery, so feature lists are a good way to know which problems are interesting and which are boring.</p>
    <p>What ends up happening at the outset of a project is that a <span class="parenthesis" title="manager, marketing person, designer, whomever">non-programmer</span> from <span class="parenthesis" title="or another organization entirely">some other part</span> of an organization comes to a lead programmer with a list of features, in some shape or other, which they thought would make a product that would sell well, and they ask the programmer how long it would take to implement them. The programmer typically replies with a figure that is unacceptable to the non-programmer. What inevitably follows is a ping-pong game of positional bargaining of features for chunks of time. When they finally agree on what is usually an unrecognizable result, the schedule is drawn up and everybody gets to work.</p>
    <aside role="note" id="EQ1q5gFkdhq-R8FPNKlDAK">
      <p>Incidentally, the <a href="http://www.codinghorror.com/blog/archives/000981.html" title="Coding Horror: Let's Play Planning Poker!" rel="dct:references">estimation formula</a> programmers tend to use is the sum of their initial estimate for each feature times about 2 or 3 plus an arbitrary amount of padding. Furthermore, they're really only guessing anyway.</p>
    </aside>
    <p>Before I rip into this scenario, I'd like to underscore that my <a href="http://www.apple.com/downloads/dashboard/" title="Apple - Downloads - Dashboard" rel="dct:references">Dashboard</a> dictionary says that a <em>feature</em> is a <q>distinctive attribute or aspect of something</q>. Further, I submit that they don't sell products, but only hazard inhibiting sales. My nose is a feature of my face. If my face didn't have a nose, I probably would have <span class="parenthesis" title="more than currently">significant trouble</span> finding dates. Likewise, a phone that didn't do <a href="http://en.wikipedia.org/wiki/SMS" title="SMS &#x2014; Wikipedia" rel="dct:references">text</a>, or a washing machine without a delicate cycle, or whatever, probably wouldn't sell too many units &#x2014; or if they did, they'd be part of some <span class="parenthesis" title="like freaks who obsess over people without noses!">obscure micro-niche</span>. Micro-niches are great, but only if that's what you're trying to target on purpose.</p>
    <p>When we talk about features in software, we're really talking about specific units of <em>behaviour</em>, which coalesce together to form an experience that a person interacts with over <em>time</em>. As such, people don't actually use individual features <em>per se</em> but more like a <strong>structure</strong> or <strong>sequence</strong> of them. Moreover, this person rarely cares about which exact features she's using and even less about how the businesspeople or programmers decided to classify them.</p>
    <p>So, when a suit comes to a programmer with a list of features, he's:</p>
    <ol>
      <li>Probably lifting most of them from somewhere else, and</li>
      <li>Has already mulled it over with his buddies and decided that combination of features will make them rich(er).</li>
    </ol>
    <p>Really what he's done is offer up a hodge-podge of ingredients, somersaulting over any notion that a real person would be better equipped to carry out her real-life goals on an ongoing basis with such a product. But the joke is on him, because the programmer gets to cherry-pick over the list and decide which would be interesting technical problems to solve, which he can coerce into something that's already made, and which would be untenable slogs. This is a meeting between viability and capability with zero thought toward desirability.</p>
    <p>And this isn't just desirability to buy the product, it's desirability to keep using it. It's important to understand that the customer is not always the same person as the user. Anything sold to enterprise is a good example of this. Toys and cat food are also good examples. While it's really tempting to target products toward the people actually buying them, it's important to remember that if <a href="http://www.kunstler.com/eyesore_200709.html" title="Eyesore of the Month by James Howard Kunstler" rel="dct:references">little Skippy</a> breaks his choo-choo the day after purchase or Muffin won't touch the Tuna Surprise, it will have a similar negative effect as the jacket with a zipper that snags your clothes, or the news site that hits you with an <a href="http://en.wikipedia.org/wiki/Interstitial_webpage" title="Interstitial webpage &#x2014; Wikipedia" rel="dct:references">interstitial ad</a> before letting you see the content, or whatever.</p>
    <p>This is more or less what <a href="http://en.wikipedia.org/wiki/User_experience_design" title="User experience design &#x2014; Wikipedia" rel="dct:references">user experience</a> professionals are supposed to do &#x2014; champion the users of a product, advocate its desirability and mediate between the business and technical interests. <a href="http://www.cooper.com/" title="cooper" rel="dct:references">Alan Cooper's</a> book <a href="book/the-inmates-are-running-the-asylum" title="The Inmates are Running the Asylum" rel="dct:references">The Inmates are Running the Asylum</a> is completely indispensable in discussing their value. In my opinion they're still a bit all over the place, and they usually don't have a lot of power. They're still sorting themselves out, here's just part of the menagerie:</p>
    <ul>
      <li><a href="http://en.wikipedia.org/wiki/Interaction_design" title="Interaction design &#x2014; Wikipedia" rel="dct:references">Interaction designers</a>, which are <span class="parenthesis" title="even among themselves">often confused</span> with <a href="http://en.wikipedia.org/wiki/User_interface_design" title="User interface design &#x2014; Wikipedia" rel="dct:references">interface designers</a>. The former figure out what goes on the screens, the latter actually make the screens.</li>
      <li><a href="http://en.wikipedia.org/wiki/Information_architecture" title="Information architecture &#x2014; Wikipedia" rel="dct:references">Information architects</a>, which in some ways are descended from librarians, who care deeply about things like organizing huge swaths of information into taxonomies, and data visualization.</li>
      <li><a href="http://www.alistapart.com/articles/thedisciplineofcontentstrategy/" title="A List Apart: Articles: The Discipline of Content Strategy" rel="dct:references">Content strategists</a>, who are descended from writers and editors, and who figure out what <span class="parenthesis" title="and should be">various things are</span> telling people at various times.</li>
      <li><a href="http://en.wikipedia.org/wiki/Usability_engineering" title="Usability engineering &#x2014; Wikipedia" rel="dct:references">Usability engineers</a>, who are chiefly forensic in function, and do all sorts of baroque things like <a href="http://en.wikipedia.org/wiki/Eye_tracking" title="Eye tracking &#x2014; Wikipedia" rel="dct:references">eye-tracking tests</a> <em>after</em> whatever has already been made.</li>
    </ul>
    <p>Recently, however, there's been some upheaval in that community, with this one pretty influential guy <a href="http://blog.jjg.net/" title="Jesse James Garrett: jjg.net" rel="dct:references">Jesse James Garrett</a> ragging everyone out in the field for <a href="http://www.boxesandarrows.com/view/ia-summit-09-plenary" title="IA Summit 09 - Plenary - Boxes and Arrows: The design behind the design" rel="dct:references">splitting hairs</a>, and how everyone doing it should just concentrate on one thing: <em>user experience</em>. I think it's a step in the right direction, but I think it goes a bit deeper. One more digression and then I'll wrap up.</p>
    <p>I wanted to touch on one more thing mentioned in <a href="http://www.smashingmagazine.com/2009/08/14/how-to-effectively-communicate-with-developers/" title="How To Effectively Communicate With Developers &#xAB; Smashing Magazine" rel="dct:references">that article</a>: <a href="http://en.wikipedia.org/wiki/Feature_creep" title="Feature creep &#x2014; Wikipedia" rel="dct:references">feature creep</a>. At some point along the line it becomes obvious that a certain feature is an absolute must-have or a reeeeaallllly nice-to-have. If you leave it out, you suffer a potentially huge opportunity cost. If you make it happen, it pushes the project back, and you know at least one programmer is going to have to pull at least one all-nighter. It's part of the reason why programmers <span class="parenthesis" title="the other part being they don't actually know how long anything is going to take">pad their estimates</span> so much. I think this has a lot to do with how software projects are financed and managed, and I could probably go on about for pages in a separate screed. One thing I can say with confidence is abstaining from implementing something you know would be valuable <span class="parenthesis" title="also I wouldn't ever take product development advice from 37 Signals">is a bad idea</span>.</p>
    <p>What I think is missing from the process is someone with authority over the desirability of a product. This isn't a product manager, or even a project manager, or even really a manager at all. This is an <a href="lexicon/architect" title="Architect" rel="dct:references">architect</a> &#x2014; someone who defines the product and fits it into the rest of the world. Someone who can communicate &#x2014; to any other stakeholder &#x2014; where every part belongs and why. The architect would do this by interpreting the goals of real people, to extrapolate the tasks needed to achieve those goals, then correspond those to features and implementations. Through this, everybody from the financiers to the programmers can understand and agree with what is and is not to be made, ultimately obviating <span class="parenthesis" title="and subsequent feature creep">feature negotiations</span>. This is the essence of what the eminent software management theorist <a href="http://en.wikipedia.org/wiki/Fred_Brooks" title="Fred Brooks &#x2014; Wikipedia" rel="dct:references">Frederick Brooks</a> calls <a href="lexicon/conceptual-integrity" rel="dct:references" title="Conceptual Integrity">conceptual integrity</a>.</p>
  </body>
</html>
