<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.12-alpha" -->
<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/"
	>

<channel>
	<title>approach.botonomy.com</title>
	<link>http://approach.botonomy.com</link>
	<description>The ABCs of Modern Project Management and Software Delivery (or at least our take on them)</description>
	<pubDate>Thu, 17 Aug 2006 06:53:38 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.12-alpha</generator>
	<language>en</language>
			<item>
		<title>The Rule of the Lazy Class, or Why The Puritan Work Ethic Has No Place in IT</title>
		<link>http://approach.botonomy.com/2006/08/17/the-rule-of-the-lazy-class/</link>
		<comments>http://approach.botonomy.com/2006/08/17/the-rule-of-the-lazy-class/#comments</comments>
		<pubDate>Thu, 17 Aug 2006 06:42:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category>Automation</category>

		<category>Introduction</category>

		<guid isPermaLink="false">http://approach.botonomy.com/2006/08/17/the-rule-of-the-lazy-class-or-why-the-puritan-work-ethic-has-no-place-in-it/</guid>
		<description><![CDATA[Repetitive manual activities are delivery risk and operational uncertainty working under the sinister guise of an honest day&#8217;s work.  No more, no less.
As a manager, you want to create an environment where repetitive manual tasks and ad-hoc firefighting are the exception rather than the rule for your developers, DBAs, and sysadmins.
For example, you want [...]]]></description>
			<content:encoded><![CDATA[<p>Repetitive manual activities are delivery risk and operational uncertainty working under the sinister guise of an honest day&#8217;s work.  No more, no less.</p>
<p>As a manager, you want to create an environment where repetitive manual tasks and ad-hoc firefighting are the exception rather than the rule for your developers, DBAs, and sysadmins.</p>
<p>For example, you want an environment where sysadmins kick back and read IT magazines occasionally, because their run-of-the-mill administrative tasks (adding users, managing disk space, etc.) are all scripted and/or automated.  They can then focus their energies on the unexpected and unavoidable issues that crop up from time-to-time.  Plus, since they aren&#8217;t running around five (or six) days a week constantly putting out fires, they have the mental capital to make short work of whatever Murphy&#8217;s Law happens to throw their way.  To the outsider walking past the data center window, the Information Week -reading sysadmin may appear lazy.</p>
<p>But, truth be told, they&#8217;re &#8220;lazy&#8221; in a good way.</p>
<p>World-class IT and software shops realize that automation is not a <strong>technical</strong> thing, but rather a <strong>cultural</strong> thing.  The best teams celebrate those who sit back and let their computers do their work for them.  You want to have a project team that considers repetitive development activities to be tasteless.  Sometimes necessary, but generally frowned upon.</p>
<p>This is also a case of something being good for the team and good for the individual at the same time.  For the team, process automation yields greater consistency and predictability. For the individual team member, automated builds, scripted deployments, and the like often mean the difference between going home and watching The Simpsons with dinner at 7PM, or going home and watching it Tivo&#8217;ed with your re-heated dinner at 9PM.</p>
<p>This does not mean that everything that <strong>can</strong> be automated <strong>should</strong> be automated.  Examples include:</p>
<ul>
<li>Inconsequential one-time tasks.  Note that one-time tasks of consequence may be good candidates for automation, so that the heat of the moment doesn&#8217;t introduce human error</li>
<li>Tasks involving a high degree of uncertainty and variability, where the effort to catalog and account for all of the possible yet unlikely scenarios outweighs the benefits of hands-off operation.</li>
<li>Tasks where humans run circles around computers in detecting errors, anomalies, or even success.  For example, it&#8217;s tricky to automate the process of determining whether or not a web page with dynamic content &#8220;looks right&#8221;.  Sure, you could assert the presence or absence of specific text, and you could also do image comparisons for static sections of the page.  Alternatively, you could have someone who knows what &#8220;right&#8221; looks like take 2 seconds to look the page over and give it the ol&#8217; thumbs up or down.</li>
</ul>
<p>Fortunately, software development has tons of tasks that are good candidates for scripting and automation, including:</p>
<ul>
<li>Development environment configuration</li>
<li>Database Administration</li>
<li>Software Builds</li>
<li>Software Deployment</li>
<li>Testing, both Unit and Regression Testing</li>
<li>Transformations, such as converting the data contained in an Excel spreadsheet into SQL INSERT statements</li>
</ul>
<p>How do you know when you&#8217;re striking the right balance?  As a general rule, you should walk through your entire end-to-end process and identify the areas that you have automated and not automated.  This will at the very least provide a rudimentary roadmap for process improvement.  You&#8217;ll know that you&#8217;re in good shape when there is a specific reason why each manual process is still done by hand.</p>
<p>It&#8217;s also a good sign if you start noticing dog-eared <a href="http://www.python.org">Python</a> books showing up around the office.
</p>
]]></content:encoded>
			<wfw:commentRss>http://approach.botonomy.com/2006/08/17/the-rule-of-the-lazy-class/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Your Project is Not the Science Fair</title>
		<link>http://approach.botonomy.com/2006/05/15/your-project-is-not-the-science-fair/</link>
		<comments>http://approach.botonomy.com/2006/05/15/your-project-is-not-the-science-fair/#comments</comments>
		<pubDate>Mon, 15 May 2006 14:31:57 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category>New Technology</category>

		<category>Story</category>

		<guid isPermaLink="false">http://approach.botonomy.com/2006/05/15/the-project-is-not-the-science-fair/</guid>
		<description><![CDATA[One of more deadly sins that we&#8217;ve see too many times in the past centers around the application of technology for the wrong reasons.  One of the underlying causes of this problem is the acronym and keyword-centricity of most IT recruiting processes.  This story shows how a hot new technology is handled in [...]]]></description>
			<content:encoded><![CDATA[<p><em>One of more deadly sins that we&#8217;ve see too many times in the past centers around the application of technology for the wrong reasons.  One of the underlying causes of this problem is the acronym and keyword-centricity of most IT recruiting processes.  This story shows how a hot new technology is handled in a typical corporate IT environment.</em></p>
<p>Let&#8217;s imagine that the hot thing in IT is the brand new (and fictitious) programming language named Foo.  The IT rags are all talking about how Foo will reduce development costs by 63.25%.  All the banks/startups/etc. are all talking about standardizing on Foo.  The tickets for Foo One World Conference and Expo down in Orlando are selling fast.  Heck, it even got mentioned in Business Week.</p>
<p>The problem is that our friend Bob has never worked on the job with Foo.  Sure, he&#8217;s done development in .NET, J2EE, Perl, and a plethora of other buzzword-compliant environments.  But not Foo.  All of the cool kids are using Foo, and Bob doesn&#8217;t want to miss out.</p>
<p>So Bob reads up on the Foo Developer Network website, and memorizes all of the marketing and advocacy propaganda.  He&#8217;s even built out the obligatory &#8220;Pet Store&#8221; sample application on his personal network at home after the kids go to bed.</p>
<p>At the weekly staff meeting, his boss announces that he needs a new widget configuration website that integrates into their existing widget management database.  The only problem is that they&#8217;re under a strict 90 day deadline to get this application scoped, specified, designed, and implemented.</p>
<p>Suddenly, the heavens part and a ray of sunshine slices through the sky and into the conference room window, shining down on Bob.  With that, the now illuminated Bob stands up and says &#8220;I have a solution.  We&#8217;ll build the new functionality in &#8230;<strong>Perl</strong>&#8220;.</p>
<p>Perl? But that&#8217;s over a decade old, has it&#8217;s fair share of detractors, and isn&#8217;t the hip thing right now, especially compared to Foo.</p>
<p>Yes, dear reader, Bob could have shoehorned Foo into the environment.  But our friend Bob has been around for a while.  He knows that the best practices for Foo are still being worked out.  The documentation is still sketchy.  Plus, there aren&#8217;t any robust unit test frameworks built for it.  A year from now, that will all be different.  But at that point, the new widget configuration website will be in production for nine months already.</p>
<p>Bob recommended Perl because most of the other widget management applications were written in Perl.  They&#8217;re six years old, and rock solid.  For Bob and his team, Perl isn&#8217;t flashy like Foo, but it&#8217;s predictable.  And in a 90-day full-lifecycle project, predictability rocks.  Hard.</p>
<p>Bob likes a lot of things about Foo.  He even thought for a second about employing his new favorite language on this project as an interesting change of pace.  But he thought about it literally for a second, as he remembered the words he mentioned to a gang of consultants as he escorted them out the door nearly two years ago:</p>
<p>&#8220;This Project is Not the Science Fair&#8221;</p>
<p>Even though said consultants were faced with a relatively simple problem, they built an N-Tier J2EE EJB application atop a bleeding-edge XML database using a custom persistence framework that they cut out of the back of a Captain Crunch cereal box, and still managed to use all of the Design Patterns in the book (plus a couple that they coined themselves) in the process.</p>
<p>When I say built, I use that term very loosely.  It was more like &#8220;experimented&#8221;, or more accurately &#8220;played with&#8221;.</p>
<p>That project was a caricature of everything that can go wrong on a project.  The &#8220;architects&#8221; (quotes intended) took a bunch of resume-enhancing buzzwords and catch phrases, and made a very convincing case for employing them on that project.  That was pre-Bob, mind you.  Because everything was brand-spanking new, some of the APIs were still volatile.  This meant that there were plenty of excuses to build homegrown abstraction layers to go around.  Yet the application still kept breaking.  Go figure.</p>
<p>After nearly 9 months of delays, Bob was pulled in to clean up the Service-Oriented mess.  Bob got buzzword-compliant, alright.  In fact, he developed some serious credibility on the support forums, as he learned enough about the various APIs to stem the bleeding, and ultimately rip out the riskiest parts of the application.</p>
<p>The irony is that, in hindsight, that project was just like the Science Fair.  The consultants were awarded the &#8220;prize&#8221; of having a bunch of new buzzwords added to their resumes.  Unfortunately, Bob turned out to be the Science Fair&#8217;s janitor.</p>
<p>He didn&#8217;t get to build the tabletop volcano, nor did he get to set it off and watch it erupt.</p>
<p>Nope.  Bob was the guy who had the honor of mopping the red goo up off the floor, and muttering to himself: &#8220;Never again.&#8221;
</p>
]]></content:encoded>
			<wfw:commentRss>http://approach.botonomy.com/2006/05/15/your-project-is-not-the-science-fair/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Focus is not Laziness</title>
		<link>http://approach.botonomy.com/2006/05/10/focus-is-not-laziness/</link>
		<comments>http://approach.botonomy.com/2006/05/10/focus-is-not-laziness/#comments</comments>
		<pubDate>Thu, 11 May 2006 01:51:04 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category>Focus</category>

		<category>Introduction</category>

		<guid isPermaLink="false">http://approach.botonomy.com/2006/05/10/focus-is-not-laziness/</guid>
		<description><![CDATA[Larry Wall, the creator of Perl (a very popular programming language) says that the three virtues of a programmer are Laziness, Impatience, and Hubris.
As a project team, you always want to &#8220;Maximize the work that you don&#8217;t have to do&#8221;.  This does not mean that you are lazy, either in the negative sense or [...]]]></description>
			<content:encoded><![CDATA[<p>Larry Wall, the creator of Perl (a very popular programming language) says that the three virtues of a programmer are Laziness, Impatience, and Hubris.<br />
As a project team, you always want to &#8220;Maximize the work that you don&#8217;t have to do&#8221;.  This does not mean that you are lazy, either in the negative sense or even in the strict Larry Wall sense.   What it means is that you are actively identifying the areas of low-value work that you could reasonably do in the course of the project, and INTENTIONALLY NOT DOING THEM.</p>
<p>By specifically identifying the things that you aren&#8217;t doing (the anti-requirements, so to speak), you are doing two things:<br />
1)  Reinforcing the focus and scope of the real work at hand<br />
2)  Taking a second pass through the out-of-scope activities to ensure that they are not required.
</p>
]]></content:encoded>
			<wfw:commentRss>http://approach.botonomy.com/2006/05/10/focus-is-not-laziness/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Philosophy is more than just an elective you took in college</title>
		<link>http://approach.botonomy.com/2006/05/10/philosophy-is-more-than-just-an-elective-you-took-in-college/</link>
		<comments>http://approach.botonomy.com/2006/05/10/philosophy-is-more-than-just-an-elective-you-took-in-college/#comments</comments>
		<pubDate>Thu, 11 May 2006 01:47:17 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
		
		<category>Philosophy</category>

		<category>Introduction</category>

		<guid isPermaLink="false">http://approach.botonomy.com/2006/05/10/philosophy-is-more-than-just-an-elective-you-took-in-college/</guid>
		<description><![CDATA[One of the best and worst uses of time on a multi-person project are the inevitable debates around architecture and design. Unfortunately, these debates can sidetrack the participants, and become a mano-a-mano test of debating acumen, neither of which are especially conducive to producing software on time.  This article discusses the value of a [...]]]></description>
			<content:encoded><![CDATA[<p>One of the best and worst uses of time on a multi-person project are the inevitable debates around architecture and design. Unfortunately, these debates can sidetrack the participants, and become a mano-a-mano test of debating acumen, neither of which are especially conducive to producing software on time.  This article discusses the value of a shared philosophy among team members.<br />
Linus Torvalds (of Linux fame) has a saying that &#8220;Many eyes make all bugs shallow&#8221;.  Similarly, project teams should have a process whereby the collective wisdom of the team members should cause Bad Ideas to die a quick and painful death.</p>
<p>The challenge with this is that it is often difficult to separate the message from the messenger.  While the senior folks on the team are usually correct more often than their less-experienced counterparts, this is not always the case.</p>
<p>In order to keep lively debates from devolving into a &#8220;spitting contest&#8221;, euphimistically speaking, it&#8217;s important to allow Bad Ideas to die with minimal collateral damage to their creator.</p>
<p>The way that we do this is simple: We set out early on the project to gain consensus on a number of core principles or beliefs that the team has about the project and the resultant software.  These are often broken out in terms of:</p>
<ul>
<li>People Issues (User experience, stakeholder expectations, team member specialization, etc.)</li>
<li>Process Issues (Requirements management, testing strategies, build/release management, etc.)</li>
<li>Technology Issues (platform considerations, &#8220;No Premature Optimization&#8221;, role of database, etc.)</li>
</ul>
<p>Once we have consensus on the high-level beliefs, then many subsequent debates can be judged not solely on their individual technical merit, but also in terms of how well-aligned they are to the higher principles that the team is marching toward.
</p>
]]></content:encoded>
			<wfw:commentRss>http://approach.botonomy.com/2006/05/10/philosophy-is-more-than-just-an-elective-you-took-in-college/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
