    <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/348</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 #56 - Aug 2003 + 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/c156/">56</a>
                    (6)
<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/c156-185/">Any of these categories</a>

                    -                        <a href="https://members.accu.org/index.php/journals/c156+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> 09 August 2003 22:56:32 +01:00 or Sat, 09 August 2003 22:56:32 +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>&quot;How much what is a good thing?&quot; you may ask - the answer is
&quot;many things&quot;. In design it is often &quot;how much abstraction is a
good thing&quot;. In explaining it is often &quot;how much simplification is
a good thing?&quot; In editing Overload it is &quot;how much change is a good
thing&quot;. Change is double edged: that which isn't prepared to change
must be prepared to design, but inappropriate changes can lead to a
quick death. The other problem with change is that it can catch the
unwary. And, if you refer to my last editorial you will see that I
was unaware of a change. (If you don't know what I'm talking about
don't be concerned - I'm not being mysterious - all will be
explained after a short digression into the role that Overload
plays in ACCU.)</p>
<p>Sometimes queries arise as to why ACCU produces two publications
- especially as it is sometimes unclear why material appears in one
rather than the other. There are many answers, but, to me at least,
the thing that distinguishes Overload from C Vu is that Overload
covers design issues at a range of levels of interest. In
comparison C Vu is much more focused on programming, and where
design appears in C Vu it is mostly at the level of idioms. I'm
happy with this division of scope, but in writing the last
editorial had failed to realise quite how far away from its origins
as a specialist C++ publication Overload has evolved. I wrote that
I was unsure if a pattern language about team working would be
appropriate. The editor and &quot;readers&quot; soon put me right about this!
Of course, I'm happy about this - where else would I get such an
article published? - but I do wonder if the readership is being
left behind by the pace being set. I hope not, but unless some of
you make your views known to us I can't be confident.</p>
<p>Whenever I meet up with ACCU members the conversation sooner or
later turns to complaints about the way the industry operates. You
know the sort of thing: why do managers make unreasonable demands?
Why are (other) developers so incompetent? ... You have been there;
you know how it goes. These issues are often raised as rhetorical
questions; but, they are genuine problems and deserve answers; and,
it is only by seeking answers that we can lay the groundwork for an
effective solution. This type of issue should be appropriate to
ACCU publications - after all it is clearly of interest to the
members. And it was the view of the rest of the Overload team that
it was appropriate for Overload to publish material that presents
an analysis of these questions.</p>
<p>On the basis of my experience and beliefs I'm certain that in
looking for solutions we should apply the lessons that we've learnt
in our work. In particular, we know that some ways of communicating
a solution are more effective than others. A particular lesson I
draw from the &quot;design patterns&quot; movement is that it is helpful to
include details of the motivating problem, the solution, and any
trade-offs in the discussion of a &quot;solution&quot;. However, when dealing
with our less enlightened colleagues we often find orphaned
solutions cut off from the original problems or rationale. And it
is often these orphaned solutions that appear unreasonable. But is
dismissing them as unreasonable a reasonable reaction? Is it just
that we fail to recognise the motivating problem they successfully
solve or is it that they are being used where they are not
applicable?</p>
<p>One such &quot;solution&quot; that cropped up in discussion at a recent
get-together of ACCU members in Nottingham - they know who they
were - comes under the banner of &quot;don't do as I do; do as I tell
you&quot;. That is: a widespread tendency to make a statement about how
things should be done and then to ignore it. A developer might tell
you that maintainability is the most important concern in writing
their code, but may be found trying the latest &quot;cool trick&quot; they
have found in the language. Or an author may write, &quot;error handling
is important&quot; and then omit mention of it throughout the book. Or a
methodologist may say, &quot;team building is important&quot; and then only
discuss the work processes and the work products.</p>
<p>We all know that these strategies can have undesirable
consequences. The developer is unlikely to produce maintainable
code from their experiment (although they may well learn something
that can improve subsequent work). The author will fail to inform
the reader how code should be written in a production environment
(although they may successfully teach the principles). And the
methodologist won't convey successful strategies for running a
successful project (but may provide some useful milestones). But,
instead of just complaining about the consequences, it is important
to recognise that all of these behaviours reflect solutions to
problems - and to consider what these problems might be.</p>
<p>It is easy to assume that these characters are idiots, but if we
make the effort to think about what they are trying to achieve we
see that there is a common thread running amongst them: &quot;how much
scope is a good thing&quot;. Without understanding the problem they face
it is impossible to decide whether their approach improves the
situation. The developer might need to master a new language
feature in order to express the solution to a problem effectively.
The author may need to simplify the subject matter to communicate
the ideas or because of space constraints. The methodologist may be
addressing the more serious problems. (Admittedly they might not -
just don't jump to this conclusion.)</p>
<p>Whatever the case, if you don't take the time to understand why
someone is acting the way they are then you will fail to engage
them in a discussion of the merits of that behaviour. I have a lot
of sympathy with the developer, author and methodologist (because
I've done these things). I also have a lot of sympathy with
confronting them (done that too). This editorial isn't really about
solving these problems (and I don't have all the answers) but
rather than leave them unresolved this is what I do in their
positions:</p>
<div class="itemizedlist">
<ul type="disc">
<li>
<p>As a developer experimenting with a new coding technique I try
to leave it a while and to write it up before using it in
production. (I'll be submitting an article about template
metaprogramming for the next issue.) And if I can't explain it then
I don't understand it well enough to use it. (So, if you don't see
the article next time...) Occasionally I feel tempted to succumb to
the &quot;haven't got time for it&quot; argument - but every time I do that I
am reminded that &quot;if you haven't got time to do it right then you
haven't got time to do it wrong first and then fix it&quot;.</p>
</li>
<li>
<p>As an author I try to structure my code so that the error
handling is as painless as possible and doesn't need to be omitted
in articles. More often I'll omit whole functions or sections of
code whose implementation is unsurprising. Sometimes I have to omit
error handling during the initial presentation of ideas and then
cover errors in a second pass. (And sometimes that second pass gets
cut for space or time - to my subsequent regret.) But messy error
handling usually indicates bad design: mine, or the API, or the
programming language that I'm working with. (And that leads to
another interesting discussion: how to work within the constraints
of an imposed bad design.)</p>
</li>
<li>
<p>In talking about development methods I find that it is
problematic to get ideas relating to team formation and
environmental factors across. I don't yet know if this is a problem
with me or the audience. (I have my suspicions - one senior manager
dismissed my observation that improved morale on a project
indicated that things were getting better with &quot;they feel better
because they think they can meet the new delivery dates, but that
doesn't prove they will&quot;.) Seriously, though: it is my task to get
the message through and I'm still working on it. (If you have ideas
that can help, I, and a certain journal, will be interested.)</p>
</li>
</ul>
</div>
<p>The moral of this editorial is to ensure that we understand the
impact that our actions will have on others and the motives of
others whose actions affect us. If only everyone in the industry
would write code others will understand, would explain (and apply)
techniques for handling error conditions, and would promote
teamwork and improve (not denigrate) people's ways of working. If
only everyone could be like us...</p>
<p>The team that produces Overload is dealing with a problem: the
world is changing and we change with it. ACCU is changing - what
was once a C specialist user group has now expanded its interests.
Not only to other languages (C++, Java, Python, C#, etc.) but to
software design, working practices and organisational issues. I
think that most of us are programmers because we delight in novelty
- I would certainly prefer to solve a new problem each day than to
repeat a tired old solution endlessly. This is unusual in the
population at large, but the ACCU members I speak to have that same
attitude. Overload is changing - because the editorial team is
solving the problems they think matter. These problems are
reflected in the articles submitted and the experience of the team
members. If you don't like our solution, try to understand why we
are doing this - and if you have a better solution then we'll be
glad of your help.</p>
</div>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
