    <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  :: Donâ€™t Brush Bugs Under The Carpet</title>
        <link>https://members.accu.org/index.php/articles/2572</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">Process Topics + CVu Journal Vol 30, #5 - November 2018</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/c221/">Process</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/c77/">CVu</a>

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

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

                    -                        <a href="https://members.accu.org/index.php/articles/c221+392/">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;Donâ€™t Brush Bugs Under The Carpet</h1>
<p><strong>Author:</strong>&nbsp;Bob Schmidt</p>
<p>
<strong>Date:</strong> 04 November 2018 17:36:29 +00:00 or Sun, 04 November 2018 17:36:29 +00:00</p>
<p><strong>Summary:</strong>&nbsp;Silas S.Brown presents an allegorical lesson on bug reports.</p>
<p><strong>Body:</strong>&nbsp;<p>Once upon a time, there was a doctor who was so wonderfully good at curing the sick that he couldnâ€™t be replaced. Unfortunately, he also had a psychopathic irrational hatred for red clothes. If any patient came in wearing red clothes, he would kill the patient instead of curing them.</p>

<p>Question: what should be done about this?</p>

<ul>
    <li>Option A: get rid of the doctor and try to find a replacement, no matter how long that takes and how many patients go without treatment in the meantime.</li>

    <li>Option B: try to fix the doctor. Get a competent analyst to help him figure out why he goes crazy at red clothes and address it so he doesnâ€™t do it again.</li>

    <li>Option C: post a guard outside the doctorâ€™s office. The guard will not let anyone in if theyâ€™re wearing red clothing.</li>

    <li>Option D: post a warning sign outside the doctorâ€™s office, hoping that wearers of red clothing will read the sign and change their clothes before entering.</li>

    <li>Option E: do nothing. I personally will not wear red clothes, and Iâ€™m the only patient that matters, so problem solved.</li>
</ul>

<p>Unfortunately, I have twice now encountered European software users who seem to think the answer is E. In both cases, the issue was that they can cause a program to crash (only on the Microsoft Windows platform) by giving it input that involves an accented letter. Once they realised that it was the accented letter causing the crash, they simply said â€œOh yes, we shouldnâ€™t expect English software to cope with our accents, weâ€™ll just change our input and you donâ€™t have to fix anything.â€ They werenâ€™t even willing to show me what the original input was (and I couldnâ€™t reproduce the bug by typing accented letters myself, so I needed a copy of their input for investigation and I wasnâ€™t going to get it).</p>

<p>Mapping the doctor analogy onto software:</p>

<ul>
    <li><strong>Option A</strong> (replace the doctor) might be best if there is a good alternative implementation available, or if you have reason to believe that you really can do better with a rewrite, but remember that a rewrite can introduce new bugs, and if itâ€™s you who wrote the first version (and not so long ago) then how do you know youâ€™ve improved enough not to make the same mistakes a second time?</li>

    <li><strong>Option B</strong> (fix the doctor) is the best option if you really can fix it. But itâ€™s hard to analyse whatâ€™s going on if all you are getting is vague reports from users who are not willing to share their data with you. My second user was on the point of sharing his data, but he didnâ€™t want to share the original, so he tried to create a â€˜cleaned-up, simplified-downâ€™ version, and in the process he discovered that it was a problem with an accented letter, so he said: â€œDonâ€™t worry, Iâ€™ve solved itâ€ and I havenâ€™t heard any more from him. Frustrating!</li>

    <li><strong>Option C</strong> (guard the doctor) is probably the best option if you cannot fix your code: simply add guard code around it that restricts the input. Unfortunately itâ€™s a bit of a compromise solution if the guard code has to â€˜over-blockâ€™: if I have a bug that only manifests itself in some very specific situation that involves a particular accented letter, then I could say â€˜insist on ASCII onlyâ€™, but that would be putting extra restrictions on my users that are not entirely necessary. I already know my code works perfectly well with many non-ASCII situations; it just goes wrong in some particular case that people are refusing to tell me.</li>

    <li><strong>Option D</strong> (warn about the doctor) is a very poor option. People wonâ€™t read the sign. Itâ€™s like putting a comment on a function that says â€˜may crash if Xâ€™ and nobody ever reads the comment. Perhaps a warning would be better than nothing, but not very much better than nothing.</li>

    <li><strong>Option E</strong> (do nothing) might be OK for a personal private doctor (some quick program you wrote just to use yourself on your own computer), as saying â€˜but I would never give it that input anywayâ€™ could be true if you are the only user. But even then Iâ€™d still be worried about my future self and at least write a simple guard, even if itâ€™s nothing more than an assert or two, just to get a good â€˜fail: you need to take a look at thisâ€™ message if I ever forget it had that limitation. And I certainly donâ€™t think production code that is used in cancer-research labs around the world should take Option E, and Iâ€™m worried to see my European users thinking otherwise.</li>
</ul>

<p>Iâ€™m probably â€˜preaching to the convertedâ€™, telling this to developers. It is our users who need to learn the value of being willing to give us all the information we need to properly diagnose a bug, instead of giving up as soon as they personally have a workaround. I can understand settling for a personal workaround if the developer is not interested in fixing it properly, but I wouldnâ€™t want to do that when dealing with a developer who IS interested. Perhaps theyâ€™re just not used to having developers take an interest in them.</p>

<p>Anyway, I hope that this â€˜doctor storyâ€™ can at least help somebody explain to a user the need to get things properly fixed, at least if that user is fluent enough in your language to be able to listen to your explanation.</p>

<p class="bio"><span class="author"><b>Silas S. Brown</b></span>  Silas is a partially-sighted Computer Science post-doc in Cambridge who currently works in part-time assistant tuition. He has been an ACCU member since 1994.</p>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
