<?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">Maintenance Work is Important Too</title>
    <base href="https://doriantaylor.com/maintenance-work-is-important-too"/>
    <link href="document-stats#Eg7IiT1Ox3wtOS4Er2TtkK" 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="Maintenance Work is Important Too"/>
    <link href="lexicon/#EzqXIsriaILFcWjXdS7FbI" rel="dct:audience" title="Software Developer"/>
    <link href="person/dorian-taylor#me" rel="dct:creator" title="Dorian Taylor"/>
    <link href="//www.amazon.com/dp/0142000280" rel="dct:references"/>
    <link href="lexicon/#EAdohOSM0U6cjYu1rAG22K" rel="dct:subject" title="Software Development"/>
    <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="maintenance-work-is-important-too" datatype="xsd:token" property="ci:canonical-slug"/>
    <meta content="I drew inspiration from an annoying software misconfiguration left untouched for an age to pen a screed about the value of ancillary and maintenance-oriented knowledge work." name="description" property="dct:abstract"/>
    <meta content="2009-08-22T07:33:33+00:00" datatype="xsd:dateTime" property="dct:created"/>
    <meta content="maintenance-work-is-important-too" property="dct:identifier"/>
    <meta content="2009-08-22T09:34:33+00:00" datatype="xsd:dateTime" property="dct:issued"/>
    <meta content="2009-08-22T07:48:33+00:00" datatype="xsd:dateTime" property="dct:modified"/>
    <meta content="2009-08-22T09:37:41+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="Maintenance Work is Important Too" name="twitter:title"/>
    <meta content="I drew inspiration from an annoying software misconfiguration left untouched for an age to pen a screed about the value of ancillary and maintenance-oriented knowledge work." name="twitter:description"/>
    <object>
      <nav>
        <ul>
          <li>
            <a href="document-stats#Eg7IiT1Ox3wtOS4Er2TtkK" rev="ci:document" typeof="qb:Observation">
              <span>urn:uuid:83b2224f-53b1-4df0-ab4e-4b812bd93b64</span>
            </a>
          </li>
        </ul>
      </nav>
    </object>
  </head>
  <body about="" id="E4_HGzoLCl2MxCEiEdUxHI" typeof="bibo:Article">
    <p>A puzzling, yet frequent phenomenon I observe in people who work intensively with computers is a neglect to do the housekeeping. This includes, but is far from limited to:</p>
    <ul>
      <li>Not setting up our work environments for <span class="parenthesis" title="that's optimal, not maximal">optimal</span> productivity;</li>
      <li>Not automating frequent, monotonous tasks;</li>
      <li>Not becoming masters of the tools we use every day.</li>
    </ul>
    <p>Over the last decade, I have watched many succumb to this pattern, including myself. The adverse effects ranged in severity from a sporadic itch to business-busting catastrophe. I suppose it's a ubiquitous and perfectly rational tendency to want to avoid spending time to become an expert in something we aren't likely to do very frequently. With computers, however, it is often true that although it's impossible to know a priori how much we are going to use a certain skill or system, a relatively marginal investment of time often affords us <span class="parenthesis" title="after all, isn't that why you learned to program?">tremendous benefits</span>. I wonder:</p>
    <ol>
      
      <li>The purpose of a computer is to <em>compute</em>. If <em>we're</em> doing the computing, what is <em>it</em> doing?</li>
      <li>Is getting a system to produce <em>some</em> result quickly <em>really</em> more important than understanding it to the point of being able to produce the <em>right</em> result in perpetuity?</li>
      <li>If we understand a problem and solve it, and then share that solution with our colleagues, does it not amplify <em>their</em> productivity as well?</li>
    </ol>
    <section class="hyphenate" id="E76Ex6NJLWATJtRiP5niuL">
      <h2>We Call that Agile</h2>
      <p>In the various production-oriented positions I've held in the software industry, a common organizational behaviour has been to eschew, if not outright <em>punish</em>, any expenditure of time that didn't fit within the <a rel="dct:references xhv:glossary" href="http://mathworld.wolfram.com/ArcSecond.html" title="Arc Second -- From Wolfram MathWorld">arc-second</a>-wide slice of what was considered <em>on-task</em>. Someone would undoubtedly invoke the cutesy, yet condescending metaphor of <em>going down the rabbit hole</em>. The perpetrator would <span class="parenthesis" title="it would only make sense to finish it, because it would only help.">plead to be permitted to finish</span> while incurring the shame of the manager or the whole team, or a heated argument would break out about <span class="parenthesis" title="ironically the argument would often take longer than any time consumed by the supposedly errant work.">whether or not the work was necessary</span>.</p>
      <p>While <span class="parenthesis" title="I have written reams on this. Stay tuned.">tangents <em>can be</em> a real threat</span> to productivity, the meta-baggage around them <a href="http://teddziuba.com/2009/08/context-switches-are-bad-but-s.html" title="Context Switches are Bad, but Stack Traces are Worse - Ted Dziuba" rel="dct:references">nearly always is</a>. <span class="parenthesis" title="I have also written reams on this. Remain staying tuned.">I understand <em>why</em></span> we want to relegate the problems we solve to those that <span class="parenthesis" title="What is the first principle of the Agile Manifesto again? &quot;Satisfy the customer through early and continuous delivery of valuable software&quot;?">deliver the goods</span>, but I suspect therein lies the problem &#x2014; and under extreme pressure to <a href="http://www.amazon.com/gp/product/0142000280?ie=UTF8&amp;tag=doriantaylor-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0142000280" title="Amazon.com: Getting Things Done: The Art of Stress-Free Productivity (9780142000281): David Allen: Books">Get Things Done&#x2122;</a>, we mortgage our long-term success to <span class="parenthesis" title="ahem: attempt to satisfy.">satisfy</span> short-term targets.</p>
      <ul>
        <li>Why do we <a href="http://www.randsinrepose.com/archives/2008/04/21/saving_seconds.html" title="Rands in Repose: Saving Seconds" rel="dct:references">use the mouse</a> instead of assembling a <span class="parenthesis" title="Note, it is perfectly acceptable to optimize our work environments for ourselves. We don't always have to cater to The User.">menagerie of keyboard shortcuts</span>?</li>
        <li>Why do we type out the same nonsense one-liners time and again instead of once writing a script or macro?</li>
        <li>Why are we content to <span class="parenthesis" title="or worse, refresh a browser window">mash a unit test</span> a hundred times, changing a few characters of code every time until it passes, instead of going and actually <em>reading</em> the corresponding <acronym title="Application Programming Interface">API</acronym> reference?</li>
        <li>Where is the productivity gain in any of this behaviour?</li>
      </ul>
      <p>We only ever seem to really get inspired to do this kind of work when we're supposed to be doing something else, but in a business culture that only cares about that something else, <span class="parenthesis" title="I know. It's called Open Source. I mean billable time.">when do we find the time</span>? Being that many of these small innovations have arbitrary value, it is a tragedy that they do not get explored. It is arguably more of a tragedy, however, that simple problems become obstacles that can span for years.</p>
    </section>
    <section class="hyphenate" id="E36mtEJ5-CALbBsJ8hYBxI">
      <h2>How Does the Real World Handle This?</h2>
      <p>A conscientious chef working at home will clean incrementally as he proceeds, so that after the meal there isn't much additional work to do. A carpenter will tidy her work area at the end of the day so that there isn't a huge mess at the end of the week. In both these examples, the mess is as conspicuous as it is hazardous, and it risks blocking progress. In software, the mess isn't physical but <em>cognitive</em>, and as long as there's a place to put the data, it can be ignored indefinitely.</p>
      <p>Moreover, in a professional kitchen or construction site, it is worth noting that the maintenance work is usually delegated, likely to a junior. In software this would not be as applicable, because the person who spots the need for maintenance is also frequently the most qualified and motivated to perform it. Although, where delegation <em>is</em> possible, perhaps the <a href="the-programmer-in-fallow-augmenting-productivity-through-selective-idleness" title="The Programmer in Fallow: Augmenting Productivity Through Selective Idleness" rel="dct:references">fallow programmer</a> pattern could apply.</p>
    </section>
    <section class="hyphenate" id="E-MTbTfAL7gj40haJjEP8L">
      <h2>How we Might Change</h2>
      <p>I define innovation as the stuff we figure out in order to make it easier to do other stuff &#x2014; purely serendipitous. It is impossible to innovate on a whim. I submit that a business that upholds a policy of staying rigidly on-task in knowledge work doesn't leave valuable innovation on the table, it throws it in the garbage.</p>
      <p>Every little problem we solve, every little misfit we fix, increases our value as knowledge workers. If we codify that solution and make it retrievable, we are not only innovating, but we are increasing our stockpile of <span class="parenthesis" title="Intellectual capital is distinct from intellectual property. It is simply knowledge you can put to work, and it doesn't matter a whit if you have legal title to it.">intellectual capital</span>. If we <span class="parenthesis" title="note: &quot;share&quot; doesn't always mean &quot;for free&quot;.">share</span> that solution with our colleagues or with the world, we make our environment that much richer.</p>
      <p>While I could argue that maintaining and augmenting our work environments is a discipline &#x2014; and it is &#x2014; I think it requires greater discipline and a great deal of <a href="http://en.wikipedia.org/wiki/Cognitive_dissonance" title="Cognitive dissonance &#x2014; Wikipedia" rel="dct:references">cognitive dissonance</a> <em>not</em> to do it. <span class="parenthesis" title="Namely the people I have met over the last ten years and a few key books and speakers.">Anecdotal evidence</span> suggests knowledge workers &#x2014; programmers in particular &#x2014; <em>want</em> to incorporate it, but often feel unable to do it <span class="parenthesis" title="Google has that 20% time but I hear that evaporates when deadlines are looming, which kind of obviates the point.">on company time</span>.</p>
      <p>I suspect the real change begins on the outside, in the deals struck around the procurement of knowledge products and software in particular. This would be a change in attitude that affects everything from bespoke contracts to venture-backed startups. It entails injecting some realism about how problems are solved, how knowledge is acquired and how information behaves. It entails considering what we value &#x2014; the artifact or the solution.</p>
    </section>
    <hr style="border: none; margin: 3em auto; background-color: black; height: 1px;"/>
    <section id="EWW3s2c72tdo2fhFldl3AK">
      <h2>Endnote: What got me Thinking About This</h2>
      <p>In the summer of 2006, I decided I wanted to begin shaping my tools to fit <em>me</em>, rather than contorting myself around <em>them</em>. I figured there were few better ways to punctuate my endeavour than forcibly switching to <a href="http://www.gnu.org/software/emacs/" title="GNU Emacs - GNU Project - Free Software Foundation (FSF)" rel="dct:references">Emacs</a> after being a die-hard <a href="http://www.vim.org/" title="welcome home : vim online" rel="dct:references">Vim</a> user since about 1999. Although, aside from a <span class="parenthesis" title="the way it went back and forth across words drove me completely nuts so i rewrote those functions.">few significant initial changes</span>, I have still found the habit tremendously difficult to get into.</p>
      <p>Since about day one of my foray into Emacs, I have used <a href="http://www.jclark.com/" title="James Clark's Home Page" rel="dct:references">James Clark's</a> <a href="http://www.thaiopensource.com/nxml-mode/" title="nXML mode" rel="dct:references">nxml-mode</a>. It is a <a href="http://www.gnu.org/software/emacs/manual/html_node/emacs/Major-Modes.html#Major-Modes" title="Major Modes - GNU Emacs Manual" rel="dct:references">major mode</a> that provides a great many shortcuts for <acronym title="Extensible Markup Language">XML</acronym> editing and validation &#x2014; or at least it was <span class="parenthesis" title="instead, it was unceremoniously coughing up the error &quot;Cannot complete in this context&quot;.">supposed to</span>. For <em>years</em> I have been limping through my <span class="parenthesis" title="which is most of it">hand-edited <acronym title="Extensible Markup Language">XML</acronym></span> knowing that it could &#x2014; and <em>should</em> &#x2014; be doing more for me. It was only <em title="August 20, 2009">today</em> that I was fed up enough to fix it. The <a href="http://www.emacswiki.org/emacs/NxmlMode#toc2" title="EmacsWiki: Nxml Mode" rel="dct:references">magic incantation</a> was to <code>(load "~/.emacs.d/nxml/rng-auto.el")</code> <span class="parenthesis" title="Don't ask me why this is a separate step. If it has to be separate, why not make it its own minor mode?">after I had loaded nxml-mode</span>. I was so relieved, I even went the extra step of downloading the <acronym title="Extensible Hypertext Markup Language">XHTML</acronym>+<acronym title="Resource Description Framework in Attributes">RDFa</acronym> <acronym title="Document Type Definition">DTD</acronym>s and converting them to <a href="http://www.relaxng.org/" title="RELAX NG Home Page" rel="dct:references"><abbr title="REgular LAnguage for XML Next Generation">RELAX NG</abbr></a> with <a href="http://www.thaiopensource.com/relaxng/trang.html" title="Trang" rel="dct:references">Trang</a> so that nxml-mode would properly <span class="parenthesis" title="and auto-complete">validate</span> <acronym title="Resource Description Framework in Attributes">RDFa</acronym>.</p>
      <aside role="note" id="E85X52cCdx7EnWCe3GmN9I">
        <p>Invoking <kbd>trang -I dtd -O rnc <a style="font-family: inherit" href="http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd" title="-//W3C//DTD XHTML+RDFa 1.0//EN" rel="dct:references">http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd</a> xhtml-rdfa-1.rnc</kbd> will dump the complete <acronym title="Extensible Hypertext Markup Language">XHTML</acronym>+<acronym title="Resource Description Framework in Attributes">RDFa</acronym> <acronym title="Document Type Definition">DTD</acronym> and all associated modules as condensed <abbr title="REgular LAnguage for XML Next Generation">RELAX NG</abbr> into the current directory, suitable for consumption by nxml-mode. You can then edit the file <samp>schema/schemas.xml</samp> relative to the nxml-mode base directory to make it aware of the new schema.</p>
      </aside>
    </section>
  </body>
</html>
