    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
     <channel>
        <title>ACCU  :: Editorial</title>
        <link>https://members.accu.org/index.php/articles/307</link>
        <description>Professionalism in Programming</description>
        <dc:language>en-us</dc:language> 
        <dc:creator>Administrator</dc:creator> 
        <admin:generatorAgent rdf:resource="http://www.xaraya.org" /> 
        <admin:errorReportsTo rdf:resource="mailto:webeditor@accu.org" />
       <sy:updatePeriod>hourly</sy:updatePeriod>
       <sy:updateFrequency>1</sy:updateFrequency>
       <docs>http://backend.userland.com/rss</docs>




<div class="xar-mod-head"><span class="xar-mod-title">Project Management + Journal Editorial + Overload Journal #60 - Apr 2004</span></div>

<table border="0" cellpadding="1" cellspacing="0">
    <tbody>
    <tr>
        <td valign="top">
            Browse in :
       </td>
       <td valign="top">

                                            <a href="https://members.accu.org/index.php/articles/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c13/">Topics</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c66/">Management</a>
<br />

                                            <a href="https://members.accu.org/index.php/articles/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c184/">Journal Columns</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c185/">Editorial</a>
<br />

                                            <a href="https://members.accu.org/index.php/articles/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c76/">Journals</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c78/">Overload</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c152/">60</a>
<br />

                                            <a href="https://members.accu.org/index.php/articles/c66-185-152/">Any of these categories</a>

                    -                        <a href="https://members.accu.org/index.php/articles/c66+185+152/">All of these categories</a>
<br />
</td>
   </tr>
   </tbody>
</table>




<div class="xar-error">
   <p>
 <strong>Note:</strong> when you create a new publication type,
the articles module will automatically use the templates
<em>user-display-[publicationtype].xt</em>
and <em>user-summary-[publicationtype].xt</em>.
If those templates do not exist when you try to preview or display a new article,
you'll get this warning :-)  Please place your own templates in themes/<em>yourtheme</em>/modules/articles . The templates will get the extension .xt there. </p>
</div>
<div class="xar-norm xar-standard-box-padding">
   <h1><strong>Title:</strong>&nbsp;Editorial</h1>
<p><strong>Author:</strong>&nbsp;</p>
<p>
<strong>Date:</strong> 21 April 2004 22:54:59 +01:00 or Wed, 21 April 2004 22:54:59 +01:00</p>
<p><strong>Summary:</strong>&nbsp;</p>
<p><strong>Body:</strong>&nbsp;<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e20" id="d0e20"></a></h2>
<h3>An Industry that Refuses to Learn</h3>
</div>
<p>I reckon it's now getting on for two and a half years since I
sat in that meeting with the rest of the development group. I'd
made the mistake of giving up my independence and joining a company
owned by someone else - a small and apparently promising company
about to get bigger, and with a bunch of development staff that
were well above the industry norm in terms of their enthusiasm for
their jobs. Then one day and out of the blue, management hired a
technical architect, and soon after his arrival, a development
group meeting was called to brief the group on his vision for
future technical direction. Components featured highly on his
agenda because, he explained, if we developed components, we would
get the benefit of reusability.</p>
<p>Now, most of the development group members had been the industry
for two to three years, except one who had been in the industry for
about a decade and a half - he and I spontaneously started to
reminisce about how this was exactly the rhetoric surrounding
objects a decade earlier! We pointed out that this promised
reusability hadn't been delivered then, and we were not confident
it would be this time around. We also pointed out some other common
sense things, such as you need to get past the margin of
<span class="emphasis"><em>usability</em></span> first because all
too often software is difficult enough just to use, and if it's
difficult to use then forget about reusing it. However we couldn't
get the architect to understand any of this, and he went on to lead
the company in reaping the cost of his dubious wisdom.</p>
<p>So, why am I telling you this story? Well, the above tale is an
illustration of the search for the <span class=
"emphasis"><em>silver bullet</em></span> - that one <span class=
"emphasis"><em>thing</em></span> that is the solution to all
problems. It seems like a poignant way of starting off this
editorial, in which I want to talk about what I see as the greatest
troubles of our industry. These are the troubles that are
uncomfortable - even painful - to talk about. These are the
troubles that I encounter far too often, that condemn our industry
as nothing short of dysfunctional, and that every time I encounter
them make me wish I had a different career (ok, the grass is always
greener on the other side, I know). What I have to say may come
across as something of a rant, and if it does, <span class=
"emphasis"><em>so be it!</em></span></p>
<p>At the time of writing this I'm in my seventeenth year in the
industry, and I've seen my share of failed projects. In fact, I've
seen more fail than succeed. I say this with some confidence that
readers who have a comparable number of years in the industry will,
with some sadness, share the sentiment (recently a friend told me
of a former colleague who after fifteen years in the industry has
yet to work on a successful project). We work in an industry that
worships technology. We've all been privy to debates about the
merits of one programming language versus another and one
technology versus another, and why one is better for some projects
and not for others, but let me say this: I have never seen a
project fail as a direct result of a particular technology! In
fact, I think it's fair to say that most of the projects I've seen
fail were doomed to fail, before any technical work was done or
before any technology had been put in place. I've just mentioned
the term silver bullet, a term coined by Frederick Brooks in his
&quot;No Silver Bullet&quot; essays, which can be found included as chapters
in the second edition of his book &quot;The Mythical Man-Month&quot;. There's
much of relevance to discuss in these essays, but I'm going to let
that pass because I want to turn my attention to another chapter of
the same book: the one entitled &quot;Why Did the Tower of Babel Fail?&quot;
In this chapter the author argues compellingly that those building
the tower had a clear purpose (even if na&iuml;ve), and they had
adequate technology, plenty of time and all other resources. Yet
the project failed. Again Brooks' arguments are compelling: it was
lack of <span class="emphasis"><em>communication</em></span> (and
consequently a lack of organisation) that was to blame. It has been
my experience too, that much of the time projects fail because of
lack of communication. I say much of the time, because some of the
time there are other reasons too, but I don't want to get into
detail because it'll distract from the point I want to make.</p>
<p>Frederick Brooks was project manager for IBM's OS/360, and in
&quot;The Mythical Man-Month&quot; he documents the lessons he learned on
this and other projects. Now be afraid, be very afraid, because the
first edition was first published back in 1975, which means anyone
in the industry under twenty-eight years of age (and that's a
significant proportion) wasn't even born when the first edition of
&quot;The Mythical Man-Month&quot; was first published - and we're still
getting it wrong <span class="emphasis"><em>today</em></span>!</p>
<p>Just writing about this makes me shudder, but let's press on
anyway, I have another story to tell...</p>
<p>A few weeks ago, I was having a conversation with a web
programmer. Now web programming is something I still haven't done,
but there was a possibility of me getting into it and helping out
on a project with this programmer's company, so he was giving me
some background on what's involved before I started pitching into
the detail. I'm pr&eacute;cising the conversation rather a lot
here, but basically, the programmer explained that the most
significant issues are to do with the <span class=
"emphasis"><em>transactional</em></span> nature of programming for
the web - the browser collects information, sends it to the web
server, and when the web server replies there is no knowledge in
the browser of what went before. As he was telling me this I began
to recall a couple of projects I worked on in the early 1990s that
involved writing Windows front-ends for mainframe systems. This
involved tapping into the 3270 terminal protocol commonly in
mainframe systems, where the terminal is not interactive with the
mainframe - rather it collects input from a form presented on the
screen, sends the whole lot back to the mainframe in a buffer, and
springs back into action when the mainframe sends a new buffer full
of information back to be presented. I think I started to detect a
pattern emerging.</p>
<p>As I mulled over the above conversation I began to think about
the two friends I made at the time of my first job as a contractor
in 1997, working in a small software house based in Buckinghamshire
- a company with a history of supplying mainframe systems. While I
was there I became friends with two of the permanent staff who I
still regularly visit. Both have been in the industry for nearly
two decades longer than I have. Now the scary bit: these two old
timers are part of a generation of programmers who solved the
problems associated with the transactional programming model over a
quarter of a century ago! They solved them when programming
mainframes in assembler, the new generation of web programmer
solves them using a variety of modern technologies, but the
problems and their solutions haven't changed much in a <span class=
"emphasis"><em>quarter of a century</em></span>.</p>
<p>Let's face it, how could these two old timers pass their
knowledge on to the modern generation of programmers anyway? What
mechanisms are available for facilitating this kind of
communication? Well, in the early 1990s hope appeared in the form
of the patterns movement, which offered a framework for capturing
problems, their solutions, together with all relevant information
such as the tradeoffs involved. Around that time the &quot;Design
Patterns&quot; book (by Gamma et al) appeared, and made Patterns visible
to the development community at large. However, Patterns were
hijacked and became another bandwagon, another buzzword! This is
the most damning indictment against the industry: Patterns were
hijacked not because of any fault of Erich Gamma or any of his
co-authors, but because it is <span class="emphasis"><em>in the
nature</em></span> of an industry that is more impressed by fads
than by progress.</p>
<p>I fear that my two Bucks based friends are now part of a whole
generation of programmer that the technology and silver bullet
crazed industry has seen fit to forget about. In recent times the
Agile Development movement, and the <span class=
"emphasis"><em>Extreme Programming</em></span> approach in
particular, has brought practices such as unit testing - practices
that my two friends regarded, in their youth, as a <span class=
"emphasis"><em>way of life</em></span> - to the attention of the
modern programmer. I fear that such practices will now join the
armoury of buzzwords that must be present on a CV to make sure it
is found by agency database searches. I fear the same will happen
to these practices as happened with Patterns: the industry will pay
lip service with enthusiasm, but because of its deep rooted
dysfunction it will lose out to the desire to adopt - or rather the
desire to be seen to adopt - the latest fad.</p>
<p>The software development industry has <span class=
"emphasis"><em>not</em></span> made any significant progress
towards improving its productivity over the last quarter of a
century. It continues to ignore communication and instead looks to
fads - in the form of fashionable practices or technologies - to
provide a silver bullet that will produce huge leaps in
productivity. I'm not saying practices and technologies are not of
value, on the contrary their continued development is an essential
part of progress, assuming they are used for their merit and not
just for their novelty value. Unfortunately, developing something
that is an essential <span class="emphasis"><em>part</em></span> of
progress is not enough to make progress happen, and <span class=
"emphasis"><em>real</em></span> progress - the improvement of
productivity - is <span class="emphasis"><em>not</em></span>
happening. Problems are encountered in the course of any project,
and it is the resource - mainly in the form of people's time -
expended in solving problems that significantly inflates project
costs. This cost can be cut dramatically if known solutions can be
applied at the strategic point in the project. This is where the
price of looking for the <span class="emphasis"><em>silver
bullet</em></span> really takes its toll - it distracts from the
process of reusing and cultivating existing knowledge because its
promise seduces the industry into concentrating on the search for
what can't be found.</p>
<p>Making progress will be a struggle (if it is even possible)
because there are too few people who understand that there is a
problem. Further, of those who understand that there is a problem,
few have any idea how big the problem really is. I believe it is
unlikely that things will improve over the next decade, and
possibly longer. The software development industry is an industry
that refuses to learn.</p>
</div>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
