    <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  :: Once more unto the breach?</title>
        <link>https://members.accu.org/index.php/articles/1109</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">CVu Journal Vol 13, #2 - Apr 2001</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/c76/">Journals</a>

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

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c121/">132</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;Once more unto the breach?</h1>
<p><strong>Author:</strong>&nbsp;</p>
<p>
<strong>Date:</strong> 03 April 2001 13:15:45 +01:00 or Tue, 03 April 2001 13:15:45 +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>
</div>
<p>[This article is based upon a reply I made to Professor John
McDermid's article entitled &quot;Skills Shortage or Productivity Gap?&quot;
in the March 2001 edition of the BCS Computer magazine].</p>
<p>I have just finished one project for my last client - a large
investment bank - where the technical difficulties in designing and
coding the product were the least of the problems. I picked up some
code designed and written by someone who had just left. The design
was incorrect even to the point of allowing questionably poor
business practice whilst the implementation was so poorly executed
that it crashed immediately when any of about 85% of its
functionality was used. The remaining 15% was just poor in terms of
coding for maintainability and performance (does this split have
something to do with the 80/20 - or 90/10, depending on who you ask
- Pareto rule?).</p>
<p>I spent the first month or so working out what on earth was
going wrong with it all. My initial task was ostensibly to write a
set of unit tests for this product. At first I assumed I had
misunderstood the product in question due to so many crashes but
when it became clear that I had not misunderstood the product and
was using it correctly, the full horror began to dawn on me. Guess
which implementation wasn't reviewed until I started looking at it?
I asked where the reviews where, I was told &quot;You're it!&quot;.</p>
<p>The initial high-level design was carried out using a CASE tool
that unfortunately had rather poor support for the UML the design
was modelled in. In fact, the support offered by this particular
CASE tool for the process of drawing anything was awkward,
cumbersome and frequently just plain wrong. In fact, it got to such
a state that developers simply uninstalled the CASE tool from the
computer and used a beefed-up COTS drawing package called Visio.
Whilst not providing all the support in terms of managed archives
etc. that the design required, at least the developers could draw
something and get a design document together.</p>
<p>To do a full build of this particular product took something
like almost three hours on the fastest machines available. After
two weeks of having my initial PC crashing to a blue screen (oops -
given away the OS!) almost every time I did something - in fact, it
got to the point where all I had to do was right-click with the
mouse over the background and it would go blue-screen - I was
eventually allowed to replace it. Needless to say, I lost countless
hours as did the PC support team who valiantly attempted to revive
the PC - but in the end it was just a goner. So: two weeks downtime
on a project six weeks away from completion because the management
view was that I &quot;just wanted a new toy&quot;. Oddly enough, the
management team had much better spec PCs than the developers with
which to type their emails and Word documents - they must have been
typing at some speed to warrant such high-powered machines! My
replacement PC came which was, it must be said, faster than the old
PC. I was having teething troubles with yet another CASE tool I had
installed on my PC and when I finally spoke to the tech support
person at the company and detailed the specification of my PC, the
reply came back &quot;Yep. My PC here is almost as bad a spec as yours.&quot;
The difference was, I'd just received the latest approved version
of PC. We couldn't get anything better on the grounds that it cost
too much. Yet I wonder how much money they actually wasted for each
of the developers waiting for compilation and linking? To make
matters worse, the build dependencies were of a classic spaghetti
pattern such that modifying a file in one area could - and often
did - result in at last half the application being re-compiled and
re-linked. Developers did request time from the management to sort
out this mess but it was refused.</p>
<p>Although individual developers have been known to have a
negative contribution to a project, the role managerial competence
plays in the success or otherwise of a product needs to be
examined. In fact, I would go so far as to suggest that managerial
competence has by far the more damaging capability. An individual
developer may have a &quot;negative contribution&quot; to the project. This
will be picked up by other members of the team (and I mean will -
the hapless developer may well suffer from the other team members
too!). However, once this negative contribution has been found,
providing the project has been partitioned into relatively
autonomous sections of work, the damage will be limited and can be
re-couped by the other more capable team members. Not so with
managerial incompetence. This will run through the whole project
and cause a lot of ill-feeling among the better staff who can see
where the project is going wrong (and that their advice is being
ignored which is also, unfortunately, often the case) as well as
the danger of allowing the not so experienced managers the
opportunity of &quot;learning&quot; poor management practice.</p>
<p>How about training up some of the developers? Training can be
useful - but only for those who have been educated first! Taking
yet another lesson from the software project under discussion, some
members of another team were sent on a one-week course to program
in a fairly low-level general purpose language (oh, alright then -
as you've probably guessed it already - C++). After that they were
let loose by project managers on production code! The projects
started crashing all over the place and exceptions were being
thrown like there was no tomorrow. Suddenly, the product could not
be built from the software archive either! All hands on deck as the
experienced C++ programmers were dragged away from their projects
to fire-fight. Such is the effect of training without education -
and such also is the effect of managerial incompetence.</p>
<p>I was offered the chance to stay on this project for another
year but using my professional judgement I declined. Why? Simply
because as a professional I offered good, sound advice on how to
overcome all these problems but like a lone voice crying out in the
wilderness I was unheeded.</p>
<p>The project I described above is unfortunately not a fictitious
one. Working at that company was a real education for me - I never
realised there could be so many poor practices under one roof and
no desire whatsoever to change. So, is there really a skills
shortage or is there simply a productivity gap? I suspect the
latter.</p>
<p>Now the time has come to look for another company to work at. I
must say that I feel disheartened at the current poor state of the
UK computing industry. It's not really the level of individual
developers or the current state of software tools/operating systems
that I find depressing. It's the whole way software projects seem
to be run. If only the managers could stop trying to manage the
software project, concentrate on administration and leave the
software to the senior developers I think a lot more would get
done.</p>
<p>As it stands, I am at a point where I should be looking for new
clients but I find myself asking whether I should bother. Do I
really want to go through the whole thing again and again like some
scene from Dante's Inferno?</p>
<p>P.S. the last I heard of that company was that they still could
not build their own software and that the good people had all but
left.</p>
</div>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
