    <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  :: Playing By The Rules</title>
        <link>https://members.accu.org/index.php/articles/2030</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 26, #5 - November 2014</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/c343/">265</a>
<br />

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

                    -                        <a href="https://members.accu.org/index.php/articles/c221+343/">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;Playing By The Rules</h1>
<p><strong>Author:</strong>&nbsp;Martin Moene</p>
<p>
<strong>Date:</strong> 09 November 2014 15:27:08 +00:00 or Sun, 09 November 2014 15:27:08 +00:00</p>
<p><strong>Summary:</strong>&nbsp;Pete Goodliffe makes up his own rules.</p>
<p><strong>Body:</strong>&nbsp;<p class="quote">If I'd observed all the rules, I'd never have got anywhere.<br />
~ Marilyn Monroe</p>

<p>We live our lives by many rules. This could be a dystopian Orwellian nightmare, but itâ€™s not. Some rules are imposed on us. But some we set ourselves. These rules oil the cogs of our lives.</p>

<p>Rules facilitate our play, describing how a game works: saying who has won and how. They make our sports fair and enjoyable, and provide plenty of opportunity for (mis)interpretation (see soccerâ€™s off-side rule).</p>

<p>They impinge on our travel, where security rules dictate you can only carry so much liquid, and no sharp objects, on airplanes. They describe traffic speed limits, and how to safely navigate a path on the road. Such rules ensure the safety of all.</p>

<p>Rules bound our social norms, stating that itâ€™s not appropriate to lick a strangerâ€™s ear when you first meet them, no matter how tasty it looks.</p>

<p>Yes, we live our lives continually observing a set of rules. Weâ€™re so used to this that we often donâ€™t think about them.</p>

<p>Unsurprisingly, the same holds in our development work. There are a wide range of rules we follow at the codeface. Development process norms. Mandated toolchains and workflows. Office etiquette. Language syntax. Design patterns. These are the things that define what it is to be a professional programmer, and the way we play the development game with other people.</p>

<p>If you join a new project, there are various rules that youâ€™d expect to be in place. Rules governing the responsible creation of high-quality code. Rules governing working processes and practices. And specific rules about the project and problem domain: perhaps legal regulations in force for financial trading, or safety guidelines for health markets.</p>

<p>These rules they help us work well together. They help orchestrate and harmonise our efforts.</p>

<h2>We need more rules!</h2>

<p>But sometimes all of these rules, good as they are, arenâ€™t enough. Sometimes the poor programmers need <em>more</em> rules. Really, we do.</p>

<p>We need rules that weâ€™ve <em>made ourselves</em>. Rules that we can take ownership of. Rules that define the culture and working methods of development in our particular team. These neednâ€™t be large unwieldy draconian edicts. Just something simple you can give new team members so that they can immediately play the game with you. These are rules that describe something more than mere methods and processes; they are rules that describe a coding culture â€“ how to be a good player in the team.</p>

<p class="lesson">Programming teams have a set of rules. These rules define <em>what</em> we do and <em>how</em> we do it. But they also describe a <em>coding culture</em>.</p>

<p>Sound sane? Well, we think so. Our teamâ€™s Tao of development is summed up in three short complementary statements. From these all other practices follow. These statements are now enshrined in our team folklore, have been printed out in large, friendly letters, and emblazon our communal work area. They reign over all we do; whenever we face a choice, a tricky decision, or a heated discussion, they help to guide us to the right answer.</p>

<p>Are you ready to receive our wisdom? Brace yourself. Our three earth-shattering rules for writing good code are:</p>

<ul>
	<li>Keep it simple</li>
	<li>Use your brain</li>
	<li>Nothing is set in stone</li>
</ul>

<p>Thatâ€™s it. Arenâ€™t they great?</p>

<p>We set these rules because we think they lead to better software, and have helped us become better programmers.</p>

<p>They perfectly describe the attitude, the sense of community, and the culture of our team. Our rules are purposefully short and pithy; we donâ€™t like lengthy bureaucratic dictats or unnecessary complication. They require developer responsibility to interpret and follow; we trust our team, and these rules empower the team. They are always new ways to apply them in our codebase; we are always learning and seeking to improve. </p>

<h2>Set the rules</h2>

<p>These rules make sense to us, in our project, in our company, and in our industry. They may not have the same import for you.</p>

<p>What rules are you currently working to? That is, apart from the ban on licking your colleaguesâ€™ ears. Do you have a coding standard (either formal, or informal) in place? Do you have development process rules (perhaps the likes of: <em>Be in for 10 a.m. because we have a stand-up meeting. All code must be reviewed before check-in. All bug reports must have clear repro steps before being handed to a developer</em>)?</p>

<p>What rules govern your team culture? What informal, unwritten ways of collaborating, or approaches to the code, are particular to your team?</p>

<p>Consider formulating a small, simple set of rules that you can define your coding culture with. Can you distill it to something pithy like our three rules?</p>

<p class="lesson">Donâ€™t rely on vague unwritten team â€˜rulesâ€™. Make the implicit rules explicit, and take control of your coding culture.</p>

<p>In the spirit of our third rule, donâ€™t forget that <em>nothing is set in stone</em> â€“including your rules. Rules are there to be broken, after all. Or rather, rules are there to be <em>remade</em>. Your rules may justifiably change over time as your team learns and grows. What is pertinent now may not be in the future.</p>

<h2>Questions</h2>

<ol>
	<li>List the software development process rules currently in place in your project. How well are these enforced and followed?</li>
	<li>How does this projectâ€™s culture differ from your previous projects? Is it a better or worse project to work in? Can the difference be captured or improved in a rule?</li>
	<li>Do you think your team would rally around an agreed set of rules?</li>
	<li>Does the shape, style, and quality of your code have any effect on a projectsâ€™ coding culture? Does the team shape the code, or does the code shape the team?</li>
</ol>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
