    <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/570</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">Journal Editorial + Overload Journal #29 - Dec 1998</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/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/c199/">29</a>
<br />

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

                    -                        <a href="https://members.accu.org/index.php/articles/c185+199/">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> 27 December 1999 17:23:23 +00:00 or Mon, 27 December 1999 17:23:23 +00:00</p>
<p><strong>Summary:</strong>&nbsp;</p>
<p><strong>Body:</strong>&nbsp;<div class="section" lang="en">
<div class="titlepage">
<h2><a name="d0e18" id="d0e18"></a></h2>
</div>
<p>I've been thinking a little lately about the aesthetics of
software. By which I mean, what is it about a piece of code that
makes you feel good or bad? Not the high level things like design
or architecture, but the reams of code that make up the
implementation. Good code has properties of being neat and tidy not
scrappy, readable and manageable not sprawling, complete and well
formed not lacking or flabby. Can you feel the goodness oozing from
it?</p>
<p>I've been programming machines for about 17 years now - and I'm
only on the verge of thirty. But, in that time I seem to have built
up instinctive feelings about what's right and wrong with code at
just a glance. I find myself with these strong views about the way
that things should be. But, when I question those views, I find it
difficult to remember the experiences and reasoning that they are
based upon. We are all continually learning and re-learning, and
that process isn't just listening and reading, it's speaking and
writing. This is where organisations like the ACCU and publications
like Overload fit in, they are a medium for telling and re-telling
the software tale.</p>
<p>What started me thinking along these lines was that my project
team is split evenly between senior and junior engineers. There is
no formal means for the body of collected experience to be passed
on. Mentoring is where I'm headed. But, I don't think I've ever
encountered a formal mentoring scheme that actually worked very
well. So, perhaps an informal scheme is required.</p>
<p>Mentoring benefits the experienced too, by helping them develop
the skills of expression. As I've said before, you don't truly
understand something until you're able to explain it coherently to
someone else. Many software engineers are held back by their
inability to express, or perhaps even sell, their ideas to other
people. This was actually one of my personal motivations for
becoming involved in Overload. I've always been dreadful at
spelling. In fact, as I look back on my early years I'm becoming
convinced that I had some form of dyslexia. For example, I couldn't
tell the difference between the letters 'b' and 'd' for many years,
and I still have trouble with the concept of 'left' and 'right'.
Seemingly bizarre, but true. My wife has taken to communicating
driving directions with exaggerated expansive gestures. So,
Overload is my aversion therapy! Forced to write a page every other
month is actually harder than you think - but, highly beneficial,
and practice is the only way to get comfortable at it. So, I
suggest you try it &#9786;.</p>
<p>Anyway, two informal mentoring schemes I've tried are chalk
talks and code reviews.</p>
<p>Regular lunchtime presentations work very well. A team member
presents something of general interest to the group. This gives
them some presentation experience and, by keeping things informal,
promotes group discussion. Topics that have been aired of late in
our conference rooms have been 'Debugging Techniques', 'COM like
patterns', and the more esoteric 'Public Key Infrastructure' and
'Corporate Finance 101'.</p>
<p>Formal code reviews are often used to ensure code quality and to
identify defects by inspection. I've also found them very useful
for focusing a discussion about appropriate and inappropriate
techniques and ideoms. It's much easier to talk about the dos and
don'ts of writing code if you've got concrete examples to point to.
Learning about the wrong things to do is just as important as
learning the right things to do. Making mistakes isn't a negative
thing if you learn from it.</p>
<p>Peer review can also have a wonderful motivating effect on code
quality - but only if announced at the start of the project - it
has little effect if sprung at the end. I believe the psychological
effect that your peers are guaranteed to be pouring through your
code encourages responsible behavior.</p>
<p>So, in conclusion, I'd suggest you consider becoming a mentor or
finding a mentor, or indeed both.</p>
<p>John Merrells <tt class="email">&lt;<a href=
"mailto:merrells@netscape.com">merrells@netscape.com</a>&gt;</tt></p>
<p>PS: There's actually a third mentoring scheme I highly
recommend. It's called the 'Friday Pub Lunch and Two Pints of Beer'
scheme. I'm planning on trying this here, but I need your help. I
need you to write up your software tale, or send me a case of
Young's Special. Not the Stout. Not the Ram Rod. But, the
Special!</p>
</div>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
