    <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/journals/397</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>


        <h2>Journal Articles</h2>


<div class="xar-mod-head"><span class="xar-mod-title">Overload Journal #49 - Jun 2002 + Journal Editorial</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/journals/">All</a>

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

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

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c196/">49</a>
                    (8)
<br />

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

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

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

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

                    -                        <a href="https://members.accu.org/index.php/journals/c196+185/">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> 26 June 2002 17:46:10 +01:00 or Wed, 26 June 2002 17:46:10 +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>In a recent issue of CVu, Pete Goodliffe wrote an excellent
article surveying the history of popular methodologies. In this
editorial I would like to chart my own personal journey through
that history to discover where I now stand.</p>
<p>At the start of my computing experience, before any formal
computing education, my methodology was to just hack everything
into existence. I was programming, rather than engineering. I would
assign myself a project, perhaps a simple line drawing program, and
then set about coding. My methodology was to start with the part of
the program that I knew least about. That way, if that piece
defeated me, I would have wasted the least amount of time on the
project. But, once the puzzle was solved, I would decide that the
rest of the program was pretty obvious, and therefore there wasn't
much point in completing it, so I might as well just move onto the
next project.</p>
<p>Much later, at university, I learned about SSADM [<a href=
"#SSADM">SSADM</a>] and various lecturer-devised methodologies that
seemed very suitable for building large payroll applications. They
didn't seem to offer much for my day-to-day software engineering
projects. My experience was with very small teams (a team of one),
short term (midnight-6am), with a well-defined customer (me and my
friends). My products were games. I spent four years porting and
enhancing a variety of bulletin boards, chat systems, and
multi-user dungeons. [<a href="#MUD">MUD</a>]</p>
<p>After graduation, I was straight off onto the games industry
proper, at that time predominantly the vocation of small groups of
underpaid youths in cramped quarters having a whale of a time
making up crazy stuff all day. My chums and I were ensconced in a
one room, fourth flour, lower Chelsea, studio that was reputed to
have once been the office of a popular beat combo named the Rolling
Stones. [<a href="#PBC">PBC</a>] Our methodology? Write a proposal,
tart it about some publishers, code like crazy, beg for more money,
code like crazy, beg for more money, etc.</p>
<p>I had to grow up a bit after that, and went to work on some
terminal emulation software. It was all OO, so I dusted off my
Booch and OMT books. OOP had always seemed pretty natural for me,
so the methodologies made sense, but the process didn't do much for
me. I just went through the motions. The diagramming notations were
great though; a common language for communicating ideas efficiently
and effectively.</p>
<p>Then I joined a small research and development company that was
staffing a project. They were an independent start-up that used the
RAD [<a href="#RAD">RAD</a>] approach to produce a demonstration
product. A dozen engineers spent a year building a working demo to
show off to investors and customers. This was a great success, Mr
Gates said he thought it was 'very cool' and wanted to be a
customer, so the company was sold to an American corporation.</p>
<p>They were a largish, established, telecommunications supplier,
so the system was to deliver telecom level reliability. The project
was blue sky; a paradigm shift in voice messaging. It was to be the
next generation system to replace two aging product lines. There
was plenty of money to invest, and plenty of time to do it right.
This was an ideal opportunity to try a more formal engineering
approach.</p>
<p>The project was already staffed with three teams of seven when I
joined. We proceeded to write documents for six months. Yes, six
months. We wrote functional specifications for the user facing
components and detailed design documents for all the systems'
components. Each document was based on a standard template to
ensure that every engineer considered issues such as performance,
testing, and internationalization.</p>
<p>As each document was completed it went to a five-person review
team, each person having a distinct role in the review: author, two
readers, scribe, and a moderator. The readers would raise defects
against the document, which were recorded by the scribe. The
moderator ensured that the correct process was followed, and that
nobody got too upset. The review process would repeat until all
defects had been dealt with to the satisfaction of the readers.</p>
<p>This was very formal, and more than some could take (me
included). When no one was looking I would Alt- Tab out of
Microsoft Word/Rational Rose and hack some code until I was happy
my design was going to work. But this alternating between the
abstract and the concrete was a valuable way to ground myself and
prevent me from designing a castle in the air.</p>
<p>This is all very well, but did it work? Yes, and no. Yes, the
software was developed as designed, and pretty much on time,
without any serious unforeseen complications arising. And the
software has provided a very solid foundation for the past eight
years of functional enhancements. To my continued amazement my
original code is still largely intact.</p>
<p>But the project did fail in a couple of respects. Firstly, for
political expediency, management, against the advice of
engineering, signed off on a poor quality design for one component.
None of the engineers wanted to build the component, so a
contractor was brought in. He did his best, but at the end of the
project we had to junk his work and redesign and rebuild it from
scratch. Secondly, the business has never been much of a success.
The product still doesn't have many customers. But, it did help the
company sell itself, again, to an even bigger company.</p>
<p>That was a natural point for me to move on, and, having had a
taste of America, I decided to move to Silicon Valley to do the
Internet thing. I thought I had missed the big boom of software
development, and didn't see another one coming down the pike. I can
recall thinking that $35 was far too much to register a domain
name, and, in any case, that would be a pollution of the namespace.
How would the inter-network be paid for now that the US government
had backed out? By attaching an advert to each packet, or message,
or something, we joked. Chuckle. Sigh.</p>
<p>I ended up at Netscape working on a server product. I had never
experienced such contrasts between projects. That was where I
realised the inverse relationship between code quality and
profitability. I went from a four year project with a formally
designed object-oriented architecture written in the most advanced
C++, which made very little money, to a project with twelve month
cycles with little design or expressible architecture written in
the most awful C I'd ever witnessed which, of course, made more
money than you could imagine. There was little regularity between
anything, there was no data encapsulation, everything messed with
everything else's privates; it was an orgy of code.</p>
<p>Their success came from moving quickly. If it worked it shipped,
it didn't need to look pretty. We had internal customers who were
very demanding and vocal. We had a very small and tightly nit team
that intimately understood the problem domain. We had a program of
continuous build and test cycles. We had no formal process of any
kind, just gut feel and rule of thumb. If a concept was too hard to
explain on a white board in a couple of minutes, then an email was
needed, if that didn't suffice then a document was needed. All team
communication, within and between teams, was via mailing lists, and
internal web sites. When Kent Beck's XP book appeared the content
seemed very familiar to us. [<a href="#Beck">Beck</a>]</p>
<p>Of course, as the project matured, and grew larger, it became
exponentially harder to add new features to the code base. We spent
increasing amounts of time rewriting swathes of code to
componentise the system, and to try to cram the jinni back into the
bottle.</p>
<p>I've now come full circle, and am back to the team of one,
working at home, often in the evenings, on distributed
semi-structured database systems. Not MUDs this time, but XML
databases. Oddly enough, they have quite a lot in common.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e71" id="d0e71"></a>Summary</h2>
</div>
<p>So, what I've learned on this journey is to solve the hardest
problems first, and that CASE tools draw nice diagrams. That
writing documents works, if you have lots of time, and that having
a good architecture in place provides a long-term development
foundation. And, finally, that solving real problems is better than
writing nice code, and that team communication is critical to
project success.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e76" id="d0e76"></a>New Reader</h2>
</div>
<p>Richard Blundell has been dabbling with computers for a quarter
century, but has been developing software professionally for half
that time. His beginnings were in Basic and 6502/Z80 machine code
on Commodore Pets and TRS-80s. He progressed through the likes of
Pascal, Fortran, C and even things like PostScript, on PCs, Vaxen
and Sparc systems. Today he is Principal Developer for a management
consultancy company in Surrey, developing business visualisation
software in C++ for the Windows platform. Some of his interests
include: security/cryptography, DIY, extreme programming,
gardening, algorithms, Linux.</p>
<div class="bibliography">
<div class="titlepage">
<h2><a name="d0e81" id="d0e81"></a>Notes</h2>
</div>
<div class="bibliomixed"><a name="SSADM" id="SSADM"></a>
<p class="bibliomixed">[SSADM] Structured Systems Analysis and
Design Method, a methodology favoured by the public sector in the
UK.</p>
</div>
<div class="bibliomixed"><a name="MUD" id="MUD"></a>
<p class="bibliomixed">[MUD] Essex Mud, Abermud, TinyMud, LPMud,
Hunt, Sun of Bullet.</p>
</div>
<div class="bibliomixed"><a name="PBC" id="PBC"></a>
<p class="bibliomixed">[PBC] To my knowledge the phrase 'popular
beat combo' was coined by a barrister in response to a judge's
query as to who 'The Beatles' were. 'I believe they are a popular
beat combo m'lud'.</p>
</div>
<div class="bibliomixed"><a name="RAD" id="RAD"></a>
<p class="bibliomixed">[RAD] Rapid Application Development.</p>
</div>
<div class="bibliomixed"><a name="Beck" id="Beck"></a>
<p class="bibliomixed">[Beck] Extreme Programming Explained, Kent
Beck, Addison Wesley.</p>
</div>
</div>
</div>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
