<?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">The Programmer in Fallow: Augmenting Productivity Through Selective Idleness</title>
    <base href="https://doriantaylor.com/the-programmer-in-fallow-augmenting-productivity-through-selective-idleness"/>
    <link href="document-stats#ET562tmdzTUJi5t-QJWTPI" 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="The Programmer in Fallow: Augmenting Productivity Through Selective Idleness"/>
    <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="the-programmer-in-fallow-augmenting-productivity-through-selective-idleness" datatype="xsd:token" property="ci:canonical-slug"/>
    <meta content="This note is a cursory, non-scientific inquiry into the application of the concept of crop-rotation, an ancient agricultural technique for preserving the fertility of land, into the implementation phase of a software project. No research as of yet has been performed to ascertain if this adaptation has been attempted in similar environments. This note is one of an upcoming series on software project management." name="description" property="dct:abstract"/>
    <meta content="2008-10-23T08:29:17+00:00" datatype="xsd:dateTime" property="dct:created"/>
    <meta content="the-programmer-in-fallow-augmenting-productivity-through-selective-idleness" property="dct:identifier"/>
    <meta content="2008-10-23T08:45:58+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2008-10-23T09:04:51+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2008-10-23T09:06:58+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2008-10-23T09:07:35+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2008-10-24T17:54:11+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2008-10-29T17:13:32+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2009-03-04T00:43:00+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 content="developer" property="dct:subject"/>
    <meta content="development" property="dct:subject"/>
    <meta content="fallow" property="dct:subject"/>
    <meta content="fallow pattern" property="dct:subject"/>
    <meta content="programmer" property="dct:subject"/>
    <meta content="programming" property="dct:subject"/>
    <meta content="project management" property="dct:subject"/>
    <meta content="software" property="dct:subject"/>
    <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="The Programmer in Fallow: Augmenting Productivity Through Selective Idleness" name="twitter:title"/>
    <meta content="This note is a cursory, non-scientific inquiry into the application of the concept of crop-rotation, an ancient agricultural technique for preserving the fertility of land, into the implementation phase of a software project. No research as of yet has been performed to ascertain if this adaptation has been attempted in similar environments. This note is one of an upcoming series on software project management." name="twitter:description"/>
    <object>
      <nav>
        <ul>
          <li>
            <a href="maintenance-work-is-important-too" rev="dct:references" typeof="bibo:Article">
              <span property="dct:title">Maintenance Work is Important Too</span>
            </a>
          </li>
          <li>
            <a href="the-programmer-in-fallow-an-implementation" rev="dct:references" typeof="bibo:Article">
              <span property="dct:title">The Programmer in Fallow: An Implementation</span>
            </a>
          </li>
          <li>
            <a href="the-programmer-in-fallow-in-contrast-with-incumbent-solutions" rev="dct:references" typeof="bibo:Article">
              <span property="dct:title">The Programmer in Fallow: In Contrast with Incumbent Solutions</span>
            </a>
          </li>
          <li>
            <a href="document-stats#ET562tmdzTUJi5t-QJWTPI" rev="ci:document" typeof="qb:Observation">
              <span>urn:uuid:4f9eb6b6-6773-44d4-8262-e6df902564cf</span>
            </a>
          </li>
        </ul>
      </nav>
    </object>
  </head>
  <body about="" id="E9ApKafNwIckAUQa5DE10K" typeof="bibo:Article">
    <p>In software programming, as with any work with significant cognitive overhead, it's possible to hedge your thinking so far in one direction as to be blind to obvious solutions. The question <q>am I being crazy here?</q> often comes up, or worse: it doesn't. It is indispensable in this situation to call upon another, fresh mind to point out what you're missing. In software, <a href="http://en.wikipedia.org/wiki/Code_review" title="Code review &#x2014; Wikipedia" rel="dct:references">code review</a> and <a href="http://en.wikipedia.org/wiki/Pair_programming" title="Pair programming &#x2014; Wikipedia" rel="dct:references">pair programming</a> attempt to solve this problem, but not without their shortcomings. So what if, instead:</p>
    <blockquote class="thesis" id="Eqp4XrJekCqkjpAur_AdiK">During the <span class="parenthesis" title="that is, the phase in which programmers are writing code that is intended to ship">implementation phase</span> of a software project, for every <var title="3">three</var> to <var title="6">six</var> <a href="lexicon/programmer" title="Programmer" rel="dct:references">programmers</a> tasked, <var title="1">one</var> remains <a href="http://en.wikipedia.org/wiki/Crop_rotation" title="Crop rotation &#x2014; Wikipedia" rel="dct:references">in fallow</a>.</blockquote>
    <p>What this essentially means is that the <em>fallow</em> programmer would not have any specific <em>coding</em> task, but instead would circulate about the rest of the team, sitting with the other programmers while they work to act as a target off which to bounce ideas, give suggestions and get a feel for the other work her peers are up to &#x2014; in what is effectively an official sanction of the kind of ad-hoc, everyday behaviour that occurs on programming teams. Of course, the obvious question here is:</p>
    <blockquote class="antithesis" title="???!!?!!?!?!?!?!!?!??!" id="E4rZc_nCAkyBGsCL__F0IJ">Why would a software project manager deliberately commit such an odious transgression as the ostensible waste of programmer time?</blockquote>
    <p><strong>First</strong>, it is well-known that productivity drops and mistakes increase when workers do the same thing for too long. This is why when you're at the airport, you see <acronym title="Transportation Security Administration">TSA</acronym> employees <a href="http://www.schneier.com/blog/archives/2008/04/boring_jobs_dul.html" title="Schneier on Security: Boring Jobs Dull the Mind" rel="dct:references">continually shifting positions</a>. By giving programmers' brains a periodic rest, clearer thinking and direction can manifest.</p>
    <p>Some companies, notably Google, <a href="http://www.google.com/support/jobs/bin/static.py?page=about.html&amp;about=eng" title="Google Jobs" rel="dct:references">allocate a percentage</a> of their technical staff's time to side projects partially for this effect, but anecdotal evidence suggests it gets eroded when schedule pinches arise. The <strong>fallow pattern</strong> would stay in effect regardless of the schedule's situation, and occur on a <em>rotation</em>, rather than being pinned to any particular day of the week or scraped together ad-hoc. It should also be noted that since the fallow programmer is acting as support personnel, at least some of her time would be <em>billable</em>.</p>
    <p><strong>Second</strong>, and the reason not to waver in the face of a tight schedule, is that the programmer in fallow would essentially be working on the team's main project, just in a different capacity. In holding short consultation sessions with other programmers at their desks, our friend in fallow can observe their progress, learn or teach techniques, as well as preemptively spot bugs, conceptual flaws and style misfits.</p>
    <p>When a team completes a few rotations, all programmers ought to have accrued a reasonably intimate understanding of the tasks, skill levels and habits of their team members, as well as a greater insight into the project as a whole. This behaviour can also be parlayed into other valuable curatorial activities, like spotting code redundancies and larger design flaws, or even recording time sheets for the other programmers.</p>
    <p><strong>Third</strong>, when not visiting with her peers, a programmer in fallow has an opportunity to prune her work environment, participate in company e-mail lists, <span title="which, it should be mentioned, become shared assets of the company">craft custom scripts and tools</span>, edit documentation, update the knowledge base, bone up on the latest technology trends, or any other useful maintenance-oriented task that so easily falls by the wayside in a typical programming environment.</p>
    <blockquote class="antithesis" id="EE8CSmS-A4663N05_OGV1L">This article mentions code reviews and pair programming. What's different about this method?</blockquote>
    <p><a rel="dct:references xhv:next" rev="prev" href="the-programmer-in-fallow-in-contrast-with-incumbent-solutions" title="The Programmer in Fallow: In Contrast with Incumbent Solutions">What, indeed?</a></p>
  </body>
</html>
