<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>brettdargan.com &#187; productivity</title>
	<atom:link href="http://brettdargan.com/blog/tag/productivity/feed/" rel="self" type="application/rss+xml" />
	<link>http://brettdargan.com/blog</link>
	<description>&#955; Thoughts and rants</description>
	<lastBuildDate>Fri, 28 May 2010 01:35:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Considerations in Communicating the Intent of Software Design</title>
		<link>http://brettdargan.com/blog/2009/01/08/considerations-in-communicating-the-intent-of-software-design/</link>
		<comments>http://brettdargan.com/blog/2009/01/08/considerations-in-communicating-the-intent-of-software-design/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 14:17:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[intent]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[sdec]]></category>

		<guid isPermaLink="false">http://brettdargan.com/blog/?p=169</guid>
		<description><![CDATA[I finished reading Neal Fords book &#34;The Productive Programmer&#34; [Ford2008] It wasn't quite what I expected, but none the less it was well worth the purchase. While there are a few topics I agree with but not to the same extent as him, the topic I strongly disagree with is on the generation of large [...]]]></description>
			<content:encoded><![CDATA[
<div class="document">


<!-- -*- mode: rst -*- -->
<p>I finished reading Neal Fords book &quot;The Productive Programmer&quot; <a class="citation-reference" href="#ford2008" id="id1">[Ford2008]</a>
It wasn't quite what I expected, but none the less it was well worth the purchase.</p>
<p>While there are a few topics I agree with but not to the same extent as him, the topic I strongly disagree with is on the generation of large amounts of documentation.</p>
<p>Documentation in this form merely serves as another one of those checklist items on a project plan.</p>
<p><strong>&quot;Conveying understanding&quot;</strong> should be the underlying purpose for which usually wiki pages or documentation is produced in order to communicate with others through time and space. Documentation is <strong>not just about information</strong>.</p>
<p>Consider your own experience when it comes to picking up documentation produced by others no longer working on the systems.</p>
<p>Most documentation is brain dumped with little thought given to the actual writing or conveying of information.
Anyone can describe the complicated in a complex manner, it takes <strong>more skill</strong> to take a complicated details and make them <strong>simple to understand</strong>.</p>
<p>Large volumes of javadoc, don't help me, it is another layer of indirection and as Robert C. Martin says regarding code, <strong>&quot;all comments are lies&quot;</strong>. Deep down everyone knows this, even though many people are still in denial.</p>
<dl class="docutils">
<dt>Rarely did I get documentation that was:</dt>
<dd><ul class="first last simple">
<li><em>reasonably accurate</em> in terms of what it was meant to do</li>
<li>mostly it differed significantly in how it was actually implemented</li>
<li>usually had typos in crucial lines that didn't aid understanding at all</li>
<li>large <em>gotchas</em> aka time-bombs are not mentioned</li>
<li>building and configuration where slightly covered</li>
<li>the best you usually wish for is some clues for which you can pull out your best Dr. Holmes hat and get to work with</li>
</ul>
</dd>
</dl>
<p>The choice of <strong>conveying understanding</strong> via documentation is one of the least effective mediums for communication. Refresh your memory of Alistair Cockburn's <a class="citation-reference" href="#cockburnambler" id="id2">[CockburnAmbler]</a>; analysis of various communication mediums and it's effectiveness.</p>
<div class="section" id="so-it-begs-the-question-why-are-comments-in-code-not-helping">
<h3>So it begs the question, why are comments in code not helping?</h3>
<p>With current tools and technologies there are so many layers that the <strong>code</strong> is scattered all around the place, in xml files, in os scripts, in java, stored procedures.</p>
<p>Fundamentally the <strong>Intention of Design</strong> being conveyed comments, or even as class diagrams are insufficient, therefore wasteful.</p>
<dl class="docutils">
<dt>There are a number of actors and forces at play</dt>
<dd><ul class="first last simple">
<li>The <strong>wrong</strong> things are asked by management to be documented. Things that are most likely to change are given prime focus in the documentation. Unstable or fast changing parts of the code base, things that are easily inspected directly in code and tests (<em>you have tests right?</em>).</li>
<li>Developers don't know any better, they are documenting, what they have produced, in the easiest way that they can, because
- they know <strong>no one will read it</strong>
- or if it is read the readers won't pay much attention to it anyway ie. <strong>they don't trust it</strong></li>
</ul>
</dd>
</dl>
<p>One approach to improve this situation could be learn from other fields of study, ones that rely a lot on <strong>communication of intent</strong> rather than <strong>ticking off items on the project plan</strong></p>
<p>Last year, I spent a little time thinking about this problem, as we had the problem of improving inter team communication with as little overhead as possible. They already had a typical template for the usual type of things, general design, building, testing, technical details, including implemenation details.</p>
<p>But as a reviewer, what really struck me was the fragility of this documentation, a lot of things that were most likely to change, composed a reasonable chunk of the document.</p>
<p>Lucky for me, I had recently read a book &quot;Sources of Power&quot; <a class="citation-reference" href="#klein1998" id="id3">[Klein1998]</a>.
It so happens that the armed forces represent a very large organisation with large communication issues. Orders need to be carried out and passed down the chain of command.</p>
</div>
<div class="section" id="considerations-in-communicating-intent">
<h3>Considerations in Communicating Intent</h3>
<p>(From pg. 225, ever so slightly modified)</p>
<ol class="arabic">
<li><dl class="first docutils">
<dt>Purpose.</dt>
<dd><ul class="first last simple">
<li>What are the High Level goals and within what context.</li>
</ul>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt>Objective of task.</dt>
<dd><ul class="first last simple">
<li>What is the desired outcome.</li>
</ul>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt>Plan.</dt>
<dd><ul class="first last simple">
<li>Sequence of Steps in the Plan.</li>
</ul>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt>Rationale.</dt>
<dd><ul class="first last simple">
<li>Why is this plan good, what makes this approach a better one over other approaches.</li>
</ul>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt>Key Decisions.</dt>
<dd><ul class="first last simple">
<li>Explicit expectation that there is uncertainty in the plan. Some anticipated key decisions will need to be made at more appropriate and beneficial times as progress.</li>
</ul>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt>Unwanted Outcomes.</dt>
<dd><ul class="first last simple">
<li>Anti Goals. There are many unwanted outcomes, often these may be things that immediately spring to mind. ie. that doing <strong>the simplest thing possible</strong> would be bad as it will attribute to an unwanted outcome. But in fact developers may unknowingly compromise the design of the system.</li>
</ul>
</dd>
</dl>
</li>
<li><p class="first">Constraints and other considerations.</p>
</li>
</ol>
<p>Things I like about these considerations:</p>
<blockquote>
<ul>
<li><dl class="first docutils">
<dt>Things that are most likely to change less frequently are documented.</dt>
<dd><ul class="first last simple">
<li>Purpose, goals within a business context, can last 12-18mths.</li>
</ul>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt>Ample opportunity to highlight &quot;tradeoffs&quot; that occurred.</dt>
<dd><ul class="first last simple">
<li>Things that &quot;come back to <em>haunt</em> you&quot; should be mentioned in something with a longer memory than your brain. Perhaps when the next team get it they don't become <em>&quot;Angry Monkeys&quot;</em>. Eg. Due to &quot;abc&quot; constraint we took &quot;sdf&quot; workaround OR  <em>when you touch this next make sure you fix &quot;xyz&quot;</em>.</li>
<li>That sort of information can take <strong>hours or days to re-learn next time</strong>, not to mention the fact that someone may learn it after planning has occurred. Yet all it takes is a one or two lines to actually make documenting deliver some value.</li>
</ul>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt>Plan.</dt>
<dd><ul class="first last simple">
<li>must not be a duplication of some other list, it needs to convey meaning and include the important bits for discussion, it is not a replacement for story or task cards or gantt charts.</li>
</ul>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt>Developers will often get focused on a small item.</dt>
<dd><ul class="first last simple">
<li>In a broader context that small item may have very little relevance.</li>
<li>Context and purpose get considered and documented to help <strong>keep it real</strong>.</li>
</ul>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt>When circumstances change.</dt>
<dd><ul class="first last simple">
<li>as they often do, developers have some contextual information to make <strong>informed decisions</strong>.</li>
</ul>
</dd>
</dl>
</li>
<li><p class="first">As the project progresses and we learn more about the project, tools and users, we will discover better ways of achieving goals or ways of eliminating steps in the plan.</p>
</li>
<li><p class="first">There is a larger &quot;surface area&quot; for less experienced developers to gain some insight into factors that are discussed and decided upon during design and to raise questions.</p>
</li>
</ul>
</blockquote>
<p>As I work <em>amongst</em> several project teams, I strive to get the leads to write about these considerations. Even if they don't make it for prosperity we are sure to have the conversations.</p>
<p>These considerations fit in with the primary aim of that book, which is Decision Making, but I'll leave that for another time.</p>
<p>The thing to remember is with your documentation is, what are you trying to achieve. Follow the DRY principle and don't reiterate stuff that people should already know.</p>
<table class="docutils citation" frame="void" id="ford2008" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label">[Ford2008]</td><td>Neal Ford, <em>The Productive Programmer</em>, O'Reily Media, Sebastopol, 2008</td></tr>
</tbody>
</table>
<table class="docutils citation" frame="void" id="schwartz2004" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label">[Schwartz2004]</td><td>. Barry Schwartz, <em>Paradox of Choice</em>. HarperCollins, New York, 2004.</td></tr>
</tbody>
</table>
<table class="docutils citation" frame="void" id="cockburnambler" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label">[CockburnAmbler]</td><td>Scott Ambler sourced from Alistair Cockburn</td></tr>
</tbody>
</table>
<!-- Amblers Essay: http://www.agilemodeling.com/essays/communication.htm#HowDoWeCommunicate -->
<table class="docutils citation" frame="void" id="klein1998" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label">[Klein1998]</td><td>Gary Klein, <em>Sources of Power</em>, Massachusetts Institute of Technology, 1998</td></tr>
</tbody>
</table>
</div>
</div>
<div class="tweetthis" style="text-align:left;"><p> <a class="tt" href="http://twitter.com/home/?status=Considerations+in+Communicating+the+Intent+of+Software+Design+http%3A%2F%2Ftinyurl.com%2F657b98e" title="Post to Twitter"><img class="nothumb" src="http://brettdargan.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big2.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Considerations+in+Communicating+the+Intent+of+Software+Design+http%3A%2F%2Ftinyurl.com%2F657b98e" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://brettdargan.com/blog/2009/01/08/considerations-in-communicating-the-intent-of-software-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>reSTructured Text articles for wordpress</title>
		<link>http://brettdargan.com/blog/2009/01/02/restructured-text-articles-for-wordpress/</link>
		<comments>http://brettdargan.com/blog/2009/01/02/restructured-text-articles-for-wordpress/#comments</comments>
		<pubDate>Thu, 01 Jan 2009 22:55:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://brettdargan.com/blog/?p=141</guid>
		<description><![CDATA[I'm pretty keen to write more this year, but I'd like to do it in a format that leaves me plenty of options, so the reSTructured format appears to suit my needs. To avoid wasted effort, I'll need to have wordpress blogs/articles using this format. To get this installed on site5, was a little bit [...]]]></description>
			<content:encoded><![CDATA[<p>I'm pretty keen to write more this year, but I'd like to do it in a format that leaves me plenty of options, so  the <a href="http://docutils.sourceforge.net/rst.html">reSTructured format</a> appears to suit my needs.</p>
<p>To avoid wasted effort, I'll need to have wordpress blogs/articles using this format.<br />
To get this installed on site5, was a little bit of a pain.</p>
<p>mkdir ~/bin</p>
<p>download docutils.sf.net<br />
mkdir -p ~/bin<br />
untar in ~/bin</p>
<p>python setup.py install --prefix $HOME #no sudo required</p>
<p>.bashrc, PYTHONPATH=$PYTHONPATH:$HOME # so you can test on cmdline</p>
<p>try a test value, rst2html.py &lt;filename&gt; should work.</p>
<p>solve any problems their first.</p>
<p>Now onto wordpress, install the rest.php plugin at launchpad.net.</p>
<p>Edit settings at the top of the file, for $prefix which needs to be the same value as setup --prefix and $rst2html to rst2html.py</p>
<p>Now I was stuck on the problem with wordpress executing it with environment variables that don't seem to include the PYTHONPATH that I require.</p>
<p>so a cheap hack around that is to just dynamically update the python search path in rst2html.py</p>
<p>sys.path.append('/your/python2.4/site-packages')</p>
<p>Now I have proper results being displayed, except the mode line, which marks the entry for processing by the rest.php filter, is also being processed.<br />
-&#42;- mode: rst -&#42;-</p>
<p>This needs to be filtered out, either during the rst2html process or after,<br />
so I went with just embedding it within a reST comment and all is well.</p>
<p>.. -&#42;- mode: rst -&#42;-</p>
<div class="tweetthis" style="text-align:left;"><p> <a class="tt" href="http://twitter.com/home/?status=reSTructured+Text+articles+for+wordpress+http%3A%2F%2Ftinyurl.com%2F5snxeh5" title="Post to Twitter"><img class="nothumb" src="http://brettdargan.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big2.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=reSTructured+Text+articles+for+wordpress+http%3A%2F%2Ftinyurl.com%2F5snxeh5" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://brettdargan.com/blog/2009/01/02/restructured-text-articles-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simpler Serverside Application Deployment and Management</title>
		<link>http://brettdargan.com/blog/2006/07/25/simpler-serverside-application-deployment-and-management/</link>
		<comments>http://brettdargan.com/blog/2006/07/25/simpler-serverside-application-deployment-and-management/#comments</comments>
		<pubDate>Tue, 25 Jul 2006 01:15:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://brettdargan.com/blog/?p=73</guid>
		<description><![CDATA[Why aren't my release notes to sysadmins and testers: sudo yum install mypkgname Which downloads mypkgname from &#60;sys&#124;int&#124;uat&#124;prod&#62; yum repository with all of it's dependencies. That obviously wouldn't always be possible, but it is achievable with only a little pain . Use RPM for managing components of your System RPM is not ideally suited to [...]]]></description>
			<content:encoded><![CDATA[<p>Why aren't my release notes to sysadmins and testers:<br />
sudo yum install <em>mypkgname</em></p>
<p>Which <em>downloads mypkgname</em> <b>from &lt;sys|int|uat|prod&gt; yum repository with all of it's dependencies</b>. </p>
<p>That obviously <em>wouldn't always be possible</em>, but it is achievable with only a little pain <img src='http://brettdargan.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
<h4>Use <a href="http://www.rpm.org/">RPM</a> for managing components of your System</h4>
<p><a href="http://www.rpm.org/">RPM</a> is <b>not ideally suited</b> to deploying java applications and all of it's dependencies, but <b>it can work</b>.</p>
<p>I've used it to  <a href="http://activemq.org">package up an installation of activemq</a>, with my application config and start/stop scripts.<br />
This was then extended to have ant build it so we could eventually have cruise create rpm artifacts for a project which could eventually get automatically sent to a <a href="http://linux.duke.edu/projects/yum/">yum repository</a>.</p>
<p><em><a href="http://www.rpm.org/">RPM</a> is not that great</em> but when you have to wrestle with <a href="http://www.redhat.com">RedHat AS</a> atleast it gives us
<ul>
<li>Dependency Management. Requires that <a href="http://dev.mysql.com">mysql</a> >= 5.0 must be installed. </li>
<li>Hooks for pre/post install/uninstall Scripts. %postin let me create a os user if required, set appropriate permissions, create a database, db user, add tables and insert data. </li>
<li>Ability to <a href="http://www.rpm.org/max-rpm/ch-rpm-reloc.html">relocate the package</a> on installation</li>
</ul>
<p><a href="http://www.phy.duke.edu/~rgb/General/yum_article/yum_article/node14.html">Creating  yum repositories sounds easy</a>, but I haven't gotten to this yet.</p>
<h4>What to do</h4>
<ol>
<li>Create your <a href="http://genetikayos.com/code/repos/rpm-tutorial/trunk/rpm-tutorial.html">~/.rpmmacros file</a></li>
<li><a href="http://www.rpm.org/max-rpm/s1-rpm-build-creating-spec-file.html">Create a specification file, don't forget it will has access to some of it's own types of variables that are defined in .rpmmacros file.</a></li>
<li>package up your application of choice in a mypkgname-version.tar.gz. This is your main input into rpm, Source0: in your spec file must exactly match this file</li>
<li>rpm -bb mypkgname.spec</li>
<li>check your pkg info with: rpm -qpi mypkgname-version-noarch.rpm and your list of files with rpm -qpl mypkgname-version-noarch.rpm.</li>
<li>sudo rpm -i mypkgname-version-noarch.rpm</li>
</ol>
<h4>Tips</h4>
<ol>
<li>Understand <a href="http://www.rpm.org/max-rpm/s1-rpm-inside-files-list-directives.html">%files</a> .I found it easier to build my own file.list, by using %files -f file.list. Defaulting attributes with %defattr(-,name,group) and %config to specify your config files are good to know about. </li>
<li>You don't have to use the root owned default database, you can specify your own with the --dbpath option</li>
<li><a href="http://www-128.ibm.com/developerworks/library/l-rpm3.html">How can you tell if a package is being installed or updated?</a><br />
$1 of the scriplets (%pre, %postin...) contain the number of pkg's affected, so during an update you affect 2 pkgs, as it is an uninstall, followed by an install operation.</li>
<li><a href="http://www.rpm.org/max-rpm/s1-rpm-specref-scripts.html">Scriptlets share the same environment</a>, but that environment is <em>special</em>. We had issues running pre-packaged scripts that depended on env variables setup in .bashrc becaused it exited if it wasn't an interactive shell. ie. [ -z $PS1 ] </li>
<li>Keep multiple copies of ~/.rpmmacros files and replace the one you are interested in</li>
<li>If you are packaging <a href="http://www.ruby-lan.org">ruby</a>, <a href="http://www.python.org">python</a> or <a href="http://java.sun.com">java</a> applications, then specify it as non architecture specific</li>
<li><a href="http://www.rpm.org/max-rpm/ch-rpm-reloc.html">Make it Relocatable</a> if possible</li>
<li>Someone had a problem with BuildArch: noarch on FC4 x86-64, that noarch was not recognised as a valid architecture. We needed to add a line to some file in /var/lib??. Moral of the story is to try not to use debian based distro instead.</li>
</ol>
<h4>If you know almost nothing about <a href="http://www.rpm.org/">RPM</a></h4>
<ul>
<li><a href="http://www.rpm.org/">RPM</a> can be used to manage src (c) or binary rpms. </li>
<li>It works by unextracting a tar of the source/binary then building and executing <a href="http://www.rpm.org/max-rpm/s1-rpm-inside-scripts.html">scriptlets</a> at the right moments.</li>
<li>configuration files, identified by %config, like /etc/mypkgname are renamed when you erase a package to mypkgname.conf.rpmsave.</li>
<li><a href="http://www.rpm.org/max-rpm/ch-rpm-reloc.html">Relocatable pkgs</a> require all your packaged files to have the same prefix.</li>
</ul>
<p>Thanks to co-conspirators Ajit George, Sam Jordan, Peter Klein, <a href="http://twasink.net/blog/">Robert Watkins</a>.</p>
<div class="tweetthis" style="text-align:left;"><p> <a class="tt" href="http://twitter.com/home/?status=Simpler+Serverside+Application+Deployment+and+Management+http%3A%2F%2Ftinyurl.com%2F5ubczb5" title="Post to Twitter"><img class="nothumb" src="http://brettdargan.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big2.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Simpler+Serverside+Application+Deployment+and+Management+http%3A%2F%2Ftinyurl.com%2F5ubczb5" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://brettdargan.com/blog/2006/07/25/simpler-serverside-application-deployment-and-management/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>What is the cost of a build breakage?</title>
		<link>http://brettdargan.com/blog/2006/02/21/what-is-the-cost-of-a-build-breakage/</link>
		<comments>http://brettdargan.com/blog/2006/02/21/what-is-the-cost-of-a-build-breakage/#comments</comments>
		<pubDate>Mon, 20 Feb 2006 16:47:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[team]]></category>

		<guid isPermaLink="false">http://brettdargan.com/blog/?p=57</guid>
		<description><![CDATA[Has anyone done a study to cost of a build breakage to an organistation? Let's do some back of the envelope costings, assume a long running build of 30+mins, with 10 devs, probably 50% want to commit during the period or during the period after the build was broken and before a rollback or fix [...]]]></description>
			<content:encoded><![CDATA[<p>Has anyone done a study to cost of a build breakage to an organistation?</p>
<p>Let's do some back of the envelope costings, assume a long running build of 30+mins, with 10 devs, probably 50% want to commit during the period or during the period after the build was broken and before a rollback or fix has been committed.</p>
<p>A broken build has distracted atleast 5 people including the build master and they will have to wait or be careful of how they progress so on average that may be about 5hrs of lost productivity.</p>
<p>THAT's EXPENSIVE!!</p>
<p>Sure there are lot's of arguments like make your build faster, well the reality is whatever time your build is, you have disrupted the flow of your team members that has resulted in potentially significant wasted effort. </p>
<p>And in your rush to fix the build you may have not really addressed fundamental issues of the breakage, but just put a quick fix in to get things going.</p>
<div class="tweetthis" style="text-align:left;"><p> <a class="tt" href="http://twitter.com/home/?status=What+is+the+cost+of+a+build+breakage%3F+http%3A%2F%2Ftinyurl.com%2F6z8a8nj" title="Post to Twitter"><img class="nothumb" src="http://brettdargan.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big2.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=What+is+the+cost+of+a+build+breakage%3F+http%3A%2F%2Ftinyurl.com%2F6z8a8nj" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://brettdargan.com/blog/2006/02/21/what-is-the-cost-of-a-build-breakage/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Quick Calculations</title>
		<link>http://brettdargan.com/blog/2004/09/20/quick-calculations/</link>
		<comments>http://brettdargan.com/blog/2004/09/20/quick-calculations/#comments</comments>
		<pubDate>Sun, 19 Sep 2004 23:28:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://brettdargan.com/blog/?p=15</guid>
		<description><![CDATA[Today we had to do some estimates for potentially caching a large number of objects in memory, using some quick calculations (or Back of the Envelope) calculations, we quickly calculated a very big number, indicating we would immediately need to start considering alternative implementations. Further analysis was needed and later it was confirmed that initial [...]]]></description>
			<content:encoded><![CDATA[<p>Today we had to do some estimates for potentially caching a large number of objects in memory, using some quick calculations (or Back of the Envelope) calculations, we quickly calculated a very big number, indicating we would immediately need to start considering alternative implementations.</p>
<p>Further analysis was needed and later it was confirmed that initial estimates were pretty close to the mark.</p>
<p>It reminded me of a good book that is probably not on alot of programmer's reading list. <a href="http://www.cs.bell-labs.com/cm/cs/pearls/">Programming Pearls</a> is an old style book of computer science articles from the 80's. Column 7 about  "Back of the Envelope" estimation, using very rough order of magnitude guesses to arrive at an approximate value for an amount, or <a href="http://www.cs.bell-labs.com/cm/cs/pearls/sec074.html">response time</a>.  I originally read this from following some of the references from <a href="http://www.amazon.com/exec/obidos/tg/detail/-/0735619670?v=glance">Code Complete</a>. It is an <a href="http://www.awprofessional.com/">Addison-Wesley</a> book, but not available on <a href="safari.oreilly.com">safari</a> <img src='http://brettdargan.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> , which is exactly the sort of book that should be provided</p>
<div class="tweetthis" style="text-align:left;"><p> <a class="tt" href="http://twitter.com/home/?status=Quick+Calculations+http%3A%2F%2Ftinyurl.com%2F6b76wq4" title="Post to Twitter"><img class="nothumb" src="http://brettdargan.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big2.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Quick+Calculations+http%3A%2F%2Ftinyurl.com%2F6b76wq4" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://brettdargan.com/blog/2004/09/20/quick-calculations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Catch html designer bugs early</title>
		<link>http://brettdargan.com/blog/2004/07/20/catch-html-designer-bugs-early/</link>
		<comments>http://brettdargan.com/blog/2004/07/20/catch-html-designer-bugs-early/#comments</comments>
		<pubDate>Tue, 20 Jul 2004 00:59:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[team]]></category>

		<guid isPermaLink="false">http://brettdargan.com/blog/?p=9</guid>
		<description><![CDATA[We had a few recurring problems that could not be found in testing, only in production. Mostly to do with the url routing issues that our client doesn't have a development environment for. Enter a Grep ant task to help us fail early in the dev process. There are other similar jsp based checkers, but [...]]]></description>
			<content:encoded><![CDATA[<p>We had a few recurring problems that could not be found in testing, only in production. Mostly to do with the url routing issues that our client doesn't have a development environment for.</p>
<p>Enter a Grep ant task to help us fail early in the dev process. There are other similar jsp based checkers, but this is generalised utility that we use across other known issues in the project.</p>
<p>It is very useful for new team members. </p>
<p>It hasn't been added to an opensource project yet, could probably post it to ant-contrib or something like that.</p>
<div class="tweetthis" style="text-align:left;"><p> <a class="tt" href="http://twitter.com/home/?status=Catch+html+designer+bugs+early+http%3A%2F%2Ftinyurl.com%2F6x84hz7" title="Post to Twitter"><img class="nothumb" src="http://brettdargan.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big2.png" alt="Post to Twitter" /></a> <a class="tt" href="http://twitter.com/home/?status=Catch+html+designer+bugs+early+http%3A%2F%2Ftinyurl.com%2F6x84hz7" title="Post to Twitter">Tweet This Post</a></p></div>]]></content:encoded>
			<wfw:commentRss>http://brettdargan.com/blog/2004/07/20/catch-html-designer-bugs-early/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

