<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/transform"?>
<!--<!DOCTYPE html PUBLIC "-//W3C/DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  <head>
    <title>Why Build Software When You Can Define It?</title>
    <base href="http://doriantaylor.com/" />
    <link rel="meta" type="application/rdf+xml" title="FOAF" href="person/dorian-taylor?type=application/rdf+xml"/>
    <link rel="alternate index" title="This Site" href="this-site"/>
    <link rel="alternate bookmark" title="Elsewhere" href="elsewhere"/>
    <meta name="description" content="Using a construction metaphor for knowledge work invokes a feeling of labour &#x2014; if you just work hard enough you'll eventually get the job done. But for software or other knowledge products, the job will never be done until it's sufficiently correct &#x2014; and that isn't a function of labour." />
  </head>
  <body>
    <p><span title="The Royal We">We</span> <!--<span title="that's programmers defined as those who know how to program, not necessarily those who consider programming their profession.">programmers</span>--> <span title="Contrast the epithet &quot;programmer&quot;, that denotes a specific career orientation.">who program computers</span> often invoke a <em>construction</em> metaphor when we refer to the process of writing code &#x2014; we say that we <em>build</em> software products. Or perhaps, if we subscribe to the more modern, iterative and so-called <q>agile</q> production models, we may use a <em>garden</em> analogy &#x2014; grooming and tilling the code, allowing the product to <em>emerge</em> and <em>bloom</em>.</p>
    <p>The thing I find the strangest about these metaphors is that they ignore what I consider to be one of the most fascinating and powerful aspects of software &#x2014; that it is made purely of <em>language</em>. By conjuring up notions of labour &#x2014; as these metaphors do &#x2014; it is easy to forget that the most important quality of a product made entirely of language is that it <em>says the right thing</em>. Correctness is something that the na&#xef;ve application of labour can scarcely achieve.</p>
    <p>My favourite substitute for the word <em>construction</em> is <strong>acquisition</strong>, which I borrowed from Barry Boehm's <a type="application/pdf" rel="external" href="http://www.computer.org/portal/cms_docs_computer/computer/homepage/misc/Boehm/r5061.pdf" title="A Spiral Model of Software Development and Enhancement &#x2014; Dr. Barry W. Boehm, 1988">Spiral Model</a> paper.</p>
    <p>The part I enjoy about the term is that it emphasizes the act of <em>getting</em> a thing without specifying the method of doing so, which I assert, at least for the software industry, is a necessary step in breaking free from the <em>construction</em> paradigm.</p>
  </body>
</html>