<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Musings of a Software Development Manager</title>
	
	<link>http://edgibbs.com</link>
	<description>Lessons from managing developers</description>
	<lastBuildDate>Thu, 09 Jul 2009 04:31:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/MusingsOfASoftwareDevelopmentManager" type="application/rss+xml" /><item>
		<title>New Business Card</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/GQ8d83pANF8/</link>
		<comments>http://edgibbs.com/2009/07/08/new-business-card/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 04:31:14 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=754</guid>
		<description><![CDATA[
	

The picture pretty much speaks for itself.  I haven&#8217;t had to make business cards on my own in years, but Zazzle made it pretty simple to do online.  I created the logo at faceyourmanga.it.   Even in the days of the web a card can have some impact.  
]]></description>
			<content:encoded><![CDATA[<div align="center">
	<img src="http://edgibbs.com/images/business_card.jpg" />
</div>
<p>The picture pretty much speaks for itself.  I haven&#8217;t had to make business cards on my own in years, but <a href="http://www.zazzle.com/">Zazzle</a> made it pretty simple to do online.  I created the logo at <a href="http://www.faceyourmanga.it/welcome.htm">faceyourmanga.it</a>.   Even in the days of the web a card can have some impact.  </p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/GQ8d83pANF8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/07/08/new-business-card/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/07/08/new-business-card/</feedburner:origLink></item>
		<item>
		<title>Project Status Reports with Attachments</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/ioflS-L2xEU/</link>
		<comments>http://edgibbs.com/2009/07/06/project-status-reports-with-attachments/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 04:19:01 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=750</guid>
		<description><![CDATA[As a project manager on dozens of projects I have sent hundreds or perhaps thousands of project status reports.  I&#8217;ve read even more status reports as a development manager often showing up Friday afternoons in the old inbox.
Every status report needs to cover the basics like budget, scope, and schedule.  Other than that [...]]]></description>
			<content:encoded><![CDATA[<p>As a project manager on dozens of projects I have sent hundreds or perhaps thousands of project status reports.  I&#8217;ve read even more status reports as a development manager often showing up Friday afternoons in the old inbox.</p>
<p>Every status report needs to cover the basics like budget, scope, and schedule.  Other than that the big thing is to point out new risks or items that have been mitigated.  In an Agile context the status reports can often be eliminated entirely, but it tends to be a document people hold onto when getting adjusted to Agile.  They often looks like paper versions of dashboards with the traditional red/yellow/green designations.  All green means no need to read.  Then again I once worked for a director who was actually color blind so I&#8217;d make sure the colors are also spelled out.</p>
<p>As a PM I remember borrowing my first status template from another PM who had in turn adopted it from her time at Andersen Consulting (Accenture after the rebranding).  I adjusted it, but I&#8217;ve used it ever since.  I can&#8217;t say I have a favorite format for project status reports, but I do know they need to communicate the key points as succinctly as possible.  As a PM it&#8217;s important to know who&#8217;s going to actually read these reports.  Some of your audience much prefers to here a verbal update even if it&#8217;s very short.  </p>
<p>As a manager the best approach to status reports is to stay directly connected with your projects so you don&#8217;t need to rely on them.  You should be spending a significant portion of time with the bigger projects or the projects that are struggling potentially only relying on status reports for the well oiled smaller projects that are just getting done.  And don&#8217;t forget to reward those projects that are just getting done right without much need of your services.  These are the well managed projects that should be rewarded more often.</p>
<p>Finally, I think I should expand on email and status reports.  As managers you typically get 150-200+ emails a day many CCed or forwarded to you as an FYI.  When you send that very detailed status report as a Word attachment much of your audience will never read it.  I realize PMs often spend a painful 30-60 minutes tweaking the status report to send out every week only for it to go almost completely unread.  What I really want is the key points of the status report directly in the email.  That means you can send the attachment, but make sure you copy the critical stuff into the body of the email.  The pain involved in not being able to read it in the preview pane, having to click on the attachment, wait a few seconds for Word to bring it up and render it just to start reading that nothing critical really happened this week often isn&#8217;t worth it.  And an email link to the status report buried in project server is rarely any better.  So, please don&#8217;t rely on attachments.</p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/ioflS-L2xEU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/07/06/project-status-reports-with-attachments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/07/06/project-status-reports-with-attachments/</feedburner:origLink></item>
		<item>
		<title>Coding Katas</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/Ez938jkdb2c/</link>
		<comments>http://edgibbs.com/2009/07/02/coding-katas/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 00:02:50 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[test driven development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=748</guid>
		<description><![CDATA[



A few weeks ago at the local Ruby Users Group meeting there was a suggestion of actually writing some code at the meeting.  The suggestion was to use a Ruby Quiz exercise.  It was quiz #16, a Rock, Paper, Scissors simulation. We broke up into small groups of about three people, coded for [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
<img src="http://edgibbs.com/images/coding_kata.jpg" /><br />
<!-- http://www.flickr.com/photos/seandreilinger/126872576/ -->
</div>
<p>A few weeks ago at the local Ruby Users Group meeting there was a suggestion of actually writing some code at the meeting.  The suggestion was to use a <a href="http://rubyquiz.com/quiz16.html">Ruby Quiz exercise</a>.  It was quiz #16, a Rock, Paper, Scissors simulation. We broke up into small groups of about three people, coded for maybe 45 minutes and turned in our solutions.  My team came in last but it finally pushed me to actually take up a long neglected todo item to start doing coding katas on a regular basis.</p>
<p>I&#8217;ve done the classic Bob Martin TDD <a href="http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata">bowling kata</a> for years as an intro to TDD.  I&#8217;d also walked through a one day tutorial from a <a href="http://techblog.daveastels.com/">Dave Astels</a> session on Rspec back in 2006 that was very much a game based kata.  I&#8217;d read about Prag Dave&#8217;s coding kata ideas, but I&#8217;d never quite found the time to start the practice.  </p>
<p>Last week I started utilizing two major resources:</p>
<ul>
<li>Prag Dave&#8217;s original <a href="http://codekata.pragprog.com/">CodeKata</a> site.</li>
<li>The <a href="http://codingdojo.org/">KatCatalog</a> from the Coding Dojo wiki.</li>
</ul>
<p>I&#8217;m jumping back and forth between Java and Ruby in the katas to stretch my skills.  I may even add in Groovy at some point, but Groovy and Ruby styles are pretty similar.  I&#8217;m trying to take on one per day and when I wrap around I&#8217;ll try out different languages.  As a committed TDD student I&#8217;ve started each kata with a test.  I have to admit RSpec makes this a lot easier when using Ruby and autotest is a wonderful tool.  At least I have annotations and JUnit 4+ when I&#8217;m doing the katas in Java.  For IDE&#8217;s I&#8217;m bouncing between IntelliJ for Java and TextMate for Ruby.  I&#8217;m even taking the opportunity to test out git and I setup a github account to store the katas so I can see how I evolve over time.</p>
<p>If you haven&#8217;t tried out the practice I might suggest giving it a go.  One of the best things is I get to really focus on coding for about an hour a day and it blocks out the rest of the world.  Mostly I&#8217;m doing them in the early morning to cut down on the interruptions.  I&#8217;ll probably post again on my observations after a month or so.  </p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/Ez938jkdb2c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/07/02/coding-katas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/07/02/coding-katas/</feedburner:origLink></item>
		<item>
		<title>#152 Development Blog</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/ugsiYnp85VM/</link>
		<comments>http://edgibbs.com/2009/06/30/152-development-blog/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 23:25:43 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=746</guid>
		<description><![CDATA[I realized today that I&#8217;m #152 on a list of the top blogs for developers.  Jurgen Appelo (NOOP.NL) has been compiling lists like these for a bit now and this humble little effort manages to do pretty well.  Jurgen himself has made a great effort to put out quality content on a regular [...]]]></description>
			<content:encoded><![CDATA[<p>I realized today that I&#8217;m <a href="http://www.noop.nl/2009/06/top-200-blogs-for-developers-q2-2009.html">#152 on a list of the top blogs</a> for developers.  Jurgen Appelo (<a href="http://www.noop.nl/">NOOP.NL</a>) has been compiling lists like these for a bit now and this humble little effort manages to do pretty well.  Jurgen himself has made a great effort to put out quality content on a regular basis with a management perspective.  As there&#8217;s not a lot of software development managers posting these days it gives you some rare perspective if you&#8217;re a developer working for one of us pointy haired bosses.</p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/ugsiYnp85VM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/06/30/152-development-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/06/30/152-development-blog/</feedburner:origLink></item>
		<item>
		<title>Part of an 11.5% Group</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/li5Uh4Q1AWk/</link>
		<comments>http://edgibbs.com/2009/06/28/part-of-an-11-5-group/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 04:42:52 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=744</guid>
		<description><![CDATA[



I&#8217;m now part of 11.5% of all California workers looking for work.  My organization decided strategically that they didn&#8217;t want to do in-house development, hence they didn&#8217;t need a development manager.  I just wish I had gotten a longer chance to show the significant quality and cost benefits of maintaining a development team [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
<img src="http://edgibbs.com/images/layoff_chairs.jpg" /><br />
<!-- http://www.flickr.com/photos/goincase/2629764552/ -->
</div>
<p>I&#8217;m now part of 11.5% of all California workers looking for work.  My organization decided strategically that they didn&#8217;t want to do in-house development, hence they didn&#8217;t need a development manager.  I just wish I had gotten a longer chance to show the significant quality and cost benefits of maintaining a development team in-house.</p>
<p>There is shock as you realize your routine has changed.  It settles down after a few days.  Next came the silver lining that comes with this sort of change:</p>
<ul>
<li>Doing coding katas every morning to tighten up my programming chops.  I&#8217;m alternating between doing solutions in Ruby, Java, and Groovy.</li>
<li>Looking at options to do something I&#8217;ve been passionate about like Agile coaching, QA management, or old fashioned professional services.</li>
<li>Attending some conferences and user groups in the Bay area since I have some travel time.</li>
<li>Reviewing some open source projects I always wanted to contribute to.</li>
<li>Catching up with friends in Sacramento over lunch.</li>
<li>Hanging out with my two daughters including picking them up on bikes last week.</li>
</ul>
<p>Sacramento isn&#8217;t the biggest tech market and it&#8217;s home to the state of California government and their massive budget issues, but I&#8217;m confident I&#8217;ll find a good opportunity.</p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/li5Uh4Q1AWk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/06/28/part-of-an-11-5-group/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/06/28/part-of-an-11-5-group/</feedburner:origLink></item>
		<item>
		<title>Corporate Source Control Options and git</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/Y9Imle6IcLw/</link>
		<comments>http://edgibbs.com/2009/06/17/corporate-source-control-options-and-git/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 04:51:56 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=742</guid>
		<description><![CDATA[
 


I&#8217;ve heard about git and decentralized version control systems like Mercurial for a few years.  Conceptually it sounded interesting, but not compelling.  Over the years I&#8217;ve used the following version control systems:

No version control &#8211; a very early web startup around 1994.  I was blissfully unaware of version control at this [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
 <img src="http://edgibbs.com/images/harvest.jpg" /><br />
<!-- http://www.flickr.com/photos/matze_ott/1841491996/ -->
</div>
<p>I&#8217;ve heard about git and decentralized version control systems like Mercurial for a few years.  Conceptually it sounded interesting, but not compelling.  Over the years I&#8217;ve used the following version control systems:</p>
<ul>
<li><strong>No version control</strong> &#8211; a very early web startup around 1994.  I was blissfully unaware of version control at this point.</li>
<li><strong>VSS</strong> &#8211; A horrible experiment in using a Windows share as version control.  Better than nothing, but just barely.  I&#8217;m glad to see Microsoft finally retired this beast with the Team System source control.  From the few stories I&#8217;ve heard Microsoft never really used VSS themselves and I believe they used to be primarily a Perforce shop.</li>
<li><strong>CVS</strong> &#8211; My first love among source control.  For months at a startup in Vegas we had to use VSS on servers that were located at the main office in San Francisco.  Just listing a directory could take minutes.  After a few months of political battles we finally won them over after the CTO learned one of our developers had to fly to SF with a CD because it was the only way to get a medium sized java project checked in.  It was great because it just worked.  And the speed was wonderful even if it&#8217;s a bit slow by today&#8217;s source control standards.</li>
<li><strong>Harvest</strong> &#8211; They asked us to use this at one client site.  They sent out a special trainer to show us how cool it was.  The visual client actually used a combine reaping wheat as the animation when you checked in.  It took us just a few hours to drop it and just install a local CVS repository and show the rest of the team had to use it.  Computer Associates owns the product now which is a sure sign it&#8217;s at the very end of it&#8217;s life.</li>
<li><strong>Perforce</strong> &#8211; Most recently I joined a shop that used Perforce.  I had never heard anything bad about it other than it was a commercial solution which meant some limitations on support in various tools.  I found it a bit difficult to adjust to the terminology such as &#8216;client spec&#8217; and other items, but I was pretty happy with it&#8217;s speed.  It was noticeably faster than CVS.  Of course it also caused headaches because it&#8217;s integration with various open source tools wasn&#8217;t the best.  One particular pain point was the Hudson plugin.  It turned out some bad decisions had been made in the central repository with relation to directories that contained spaces, despite being hosted on Solaris.  Without quoting all the paths the checkouts just failed and the Hudson plugin wasn&#8217;t setup to support this.</li>
</ul>
<p>Early on at the last organization I was leading towards migrating quickly to Subversion.  Eventually given the number of contract developers I would impact I put the decision off until some later time.  Subversion has great support these days as the CVS replacement, but I knew git and other options were out there.  Perforce also didn&#8217;t have any critical issues and was easy enough to manage since we had already purchased a number of licenses.</p>
<p>My developers really wanted to ditch Perforce for Subversion.  As a developer at heart I completely agreed with them, but given all the challenges on our plate the argument just wasn&#8217;t compelling enough from an organizational standpoint.  I had a similar recent conversation with our EA manager who asked if we were looking at moving to Glassfish soon over JBoss since we were on a non-Redhat supported version.  I pointed out that we had piloted Glassfish recently and were happy with it, but I wanted to wait at least a year to see what the Sun Oracle merger will mean for the Glassfish developers.  No one wants to migrate away from JBoss to experience something like what happened with Geronimo.</p>
<p>All the while git in the background git was picking up a lot of traction.  I finally broke down recently and purchased <a href="http://www.pragprog.com/titles/tsgit/pragmatic-version-control-using-git">Pragmatic Version Control Using Git</a>.  Even if it doesn&#8217;t end up being the right choice for today and I settle on Subversion for now it would appear the world is headed in that direction in the near future.</p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/Y9Imle6IcLw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/06/17/corporate-source-control-options-and-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/06/17/corporate-source-control-options-and-git/</feedburner:origLink></item>
		<item>
		<title>Agile Manifesto Style Values</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/5sadMJNrCDs/</link>
		<comments>http://edgibbs.com/2009/06/14/agile-manifesto-style-values/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 04:10:42 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=740</guid>
		<description><![CDATA[



As a development manager I relished reading Martin Fowler&#8217;s description of values at ThoughtWorks:

Leveraging bright people over Making the most of moderate people
Flexible career paths over Well-defined roles
Delivering business value over Leading edge research
Learning new technologies over Mastering established technologies
Solving difficult problems over Increasing market share
Learning from mistakes over Avoidance of taking risks
Delivery to the [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
<img src="http://edgibbs.com/images/c_average.jpg" /><br />
<!-- Flickr http://www.flickr.com/photos/theunabonger/420589683/sizes/m/ -->
</div>
<p>As a development manager I relished reading Martin Fowler&#8217;s <a href="http://martinfowler.com/bliki/ComparativeValues.html">description of values</a> at ThoughtWorks:</p>
<ul>
<li>Leveraging bright people <em>over</em> Making the most of moderate people</li>
<li>Flexible career paths <em>over</em> Well-defined roles</li>
<li>Delivering business value <em>over</em> Leading edge research</li>
<li>Learning new technologies <em>over</em> Mastering established technologies</li>
<li>Solving difficult problems <em>over</em> Increasing market share</li>
<li>Learning from mistakes <em>over</em> Avoidance of taking risks</li>
<li>Delivery to the client <em>over</em> Quarterly results</li>
</ul>
<p>The template is the same as the Agile Manifesto, and it really helps highlight what the real values are by showing them in comparison.  Some of them are even daring as they admit to paths they aren&#8217;t considering.  </p>
<p>Leveraging bright people over making the most of moderate people contradicts the patterns of many IT shops where the model is to maintain a small staff and bring in contractors or consultants for any significant projects.  The premise is IT is a service and not core to many businesses so why bother finding the best people.  I think this line of thinking is deeply flawed, but what ThoughtWorks is stating is that they intentionally seek out high performers over bringing in mid-range people who can bang out a bunch of hours.  </p>
<p>Aligned with utilizing high performers there is an emphasis on flexible career paths, learning new technologies, solving difficult problems, and learning from mistakes.  These are the sort of values that are really going to appeal to those high performers.  At the end of the day you&#8217;re going to have your biggest impact through who you can bring in or recruit to the team.  And after dozens of projects over the years Agile, Waterfall, or just cowboy style the best predictor of success was always the quality of people on the team.</p>
<p>Finally there&#8217;s a focus on delivering value to the customer over short term gains or cool new research.  At the end of the day ThoughtWorks exists because it has clients who need software delivered.  </p>
<p>This is a great starting set of values for even an internal IT development group who really wants to envision high quality and performance.  It makes writing a departmental charter easy and conveys the critical values in a highly meaningful way.</p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/5sadMJNrCDs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/06/14/agile-manifesto-style-values/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/06/14/agile-manifesto-style-values/</feedburner:origLink></item>
		<item>
		<title>First Impressions on Cucumber</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/cQo2xw6CBW4/</link>
		<comments>http://edgibbs.com/2009/05/02/first-impressions-on-cucumber/#comments</comments>
		<pubDate>Sun, 03 May 2009 04:47:25 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[test driven development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=738</guid>
		<description><![CDATA[Recently I&#8217;ve been catching up with the Ruby world again in my limited spare time.  I had an idea for a fun little hobby project, but I wanted to actually do it BDD style and in Rails 2.  I dug a bit into RSpec again and realized they had a new BDD tool [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been catching up with the Ruby world again in my limited spare time.  I had an idea for a fun little hobby project, but I wanted to actually do it BDD style and in Rails 2.  I dug a bit into RSpec again and realized they had a new BDD tool called <a href="http://cukes.info/">Cucumber</a>.  Seeing there was a beta book out from the prags I paid and downloaded the PDF copy of &#8216;<a href="http://www.pragprog.com/titles/achbd/the-rspec-book">The RSpec Book: Behavior Driven Development with RSpec, Cucumber, and Friends</a>&#8216;.</p>
<p>Cucumber takes plain text scenarios and runs defined steps to verify the scenarios are working.  The idea is Cucumber describes the higher level behavior with more of an outside that application focus and RSpec is used to test the behavior of the individual components.  There seems to be some overlap, but it modifies the traditional Red-Green-Refactor into:</p>
<ol>
<li><strong>Cucumber</strong>: Focus on one scenario.</li>
<li><strong>Cucumber</strong>: Write failing step definition.</li>
<li><strong>RSpec</strong>: Write a failing spec.</li>
<li><strong>RSpec</strong>: Get the spec to pass.</li>
<li><strong>RSpec</strong>: Refactor.</li>
<li><strong>Cucumber</strong>: Refactor.</li>
</ol>
<p>I worked through the tutorial that involves the classic 70s game MasterMind. (I suspect Dave Astels at work there.)  I like the textual description similar to FIT/Fitnesse without so many tables.  The feature descriptions are in plain English with a few grammatically important keywords:</p>
<div>
<img src="http://edgibbs.com/images/cucumber_features.jpg" />
</div>
<p>Next you take the Given, When, Then, And syntax and build out the steps one at a time diving back and forth into RSpec when you get down to the lower level details.</p>
<div>
<img src="http://edgibbs.com/images/cucumber_steps.jpg" />
</div>
<p>I find the regular expressions a bit jarring, but just like FIT/Fitnesse this is the code that the business users never see.  If your lucky you&#8217;re testers can read the code and even key off for ideas to use for exploratory testing ideas.  The only other item is I always feel more comfortable just dropping back to an xUnit type testing tool and using good practices to give the tests meaningful names and organize scenario testing appropriately.  In some ways you could use just RSpec as well for this purpose.  Still I&#8217;m forcing myself to use it for a while as any new practice takes some getting used to.  Next up is integrating it with Rails.  </p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/cQo2xw6CBW4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/05/02/first-impressions-on-cucumber/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/05/02/first-impressions-on-cucumber/</feedburner:origLink></item>
		<item>
		<title>Compromising Quality for Schedule</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/MVBCYhCMHIE/</link>
		<comments>http://edgibbs.com/2009/04/28/compromising-quality-for-schedule/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 13:12:21 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[test driven development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=736</guid>
		<description><![CDATA[I found myself silently cheering for Uncle Bob as he described a recent presentation where the speaker had just about given up on ever getting better code quality, because businesses didn&#8217;t value it.

His claim that crappy code is inevitable is based on the notion that crappy code is cheaper than clean code, and that therefore [...]]]></description>
			<content:encoded><![CDATA[<p>I found myself silently cheering for Uncle Bob as he described a recent presentation where the speaker had just about given up on ever getting better code quality, because businesses didn&#8217;t value it.</p>
<blockquote><p>
His claim that crappy code is inevitable is based on the notion that crappy code is cheaper than clean code, and that therefore businesses will demand the crap every time. But it has generally not been business that has demanded crappy code. Rather it has been developers who mistakenly thought that the business&rsquo; need for speed meant that they had to produce crappy code. Once we, as professional developers, realize that the only way to go fast is to create clean and well designed code, then we will see the business&rsquo; need for speed as a demand for high quality code.</p>
<p>&#8211; <a href="http://blog.objectmentor.com/articles/2009/04/23/crap-code-inevitable-rumblings-from-accu">Bob Martin</a>
</p></blockquote>
<p>Ken Schwaber makes a similar point that dropping code quality to make a date devalues a core asset of your company, the code base.  As a line employee you don&#8217;t have the authority to even consider making that decision.</p>
<p>I&#8217;ve always found this to be a compelling argument for code quality.  If your organization has headed down this path for long your code base is a mess.  Sacrificing quality for perceived speed to hit a date is a bad practice.  Most of the code base is painful even to look at.  Maintenance sucks up your limited developer time.  There are hidden costs even with new enhancements since small changes can take weeks as a developer digs into the spaghetti code by hand on code that rarely even has the start of a test harness.</p>
<p>The difficulty of course is this is a common method of operation.  The PM informs a developer of some date in the future that they need this new critical enhancement.  The developer may bravely say that the date isn&#8217;t reasonable.  More pressure is applied to find a way to make it work.  Well, there might be a way let me get back to you.  </p>
<p>The developer sends an email a little later explaining that they&#8217;ll do their best and they think they can get the feature done.  What they don&#8217;t explain is:</p>
<ul>
<li>To get this done in time I&#8217;m probably not going to add any tests.</li>
<li>I don&#8217;t have time to refactor so I&#8217;ll probably add more lines to some of the system&#8217;s giant classes and mix business logic into the view and controller layer.</li>
<li>I may have to work some late hours, I&#8217;ll be tired and inject new bugs due to this.</li>
<li>I&#8217;ll do a bit of manual unit testing and declare it done well enough to push over to QA.  In reality I know it has lots of bugs, but I met the date.</li>
<li>The next developer who takes on code here will spend even more time trying to figure out the code I added.</li>
<li>I met the date, but I feel guilty over once again compromising on my own personal standards of quality.</li>
</ul>
<p>Here&#8217;s to hoping Uncle Bob&#8217;s vision wins out.</p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/MVBCYhCMHIE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/04/28/compromising-quality-for-schedule/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/04/28/compromising-quality-for-schedule/</feedburner:origLink></item>
		<item>
		<title>Ruby On Rails Site Down</title>
		<link>http://feedproxy.google.com/~r/MusingsOfASoftwareDevelopmentManager/~3/YWfFznfuqhU/</link>
		<comments>http://edgibbs.com/2009/04/22/ruby-on-rails-site-down/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 02:54:13 +0000</pubDate>
		<dc:creator>Ed Gibbs</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://edgibbs.com/?p=732</guid>
		<description><![CDATA[


I hopped over to http://rubyonrails.org about 7:40pm PST and found this surprise.  After a few tries I confirmed it looks like they there&#8217;s a real issue.  This is decidedly not what I was expecting.  Hopefully it&#8217;s fixed soon.
]]></description>
			<content:encoded><![CDATA[<div align="center">
<img src="http://edgibbs.com/images/rubyonrails.jpg" />
</div>
<p>I hopped over to <a href="http://rubyonrails.org">http://rubyonrails.org</a> about 7:40pm PST and found this surprise.  After a few tries I confirmed it looks like they there&#8217;s a real issue.  This is decidedly not what I was expecting.  Hopefully it&#8217;s fixed soon.</p>
<img src="http://feeds.feedburner.com/~r/MusingsOfASoftwareDevelopmentManager/~4/YWfFznfuqhU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://edgibbs.com/2009/04/22/ruby-on-rails-site-down/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://edgibbs.com/2009/04/22/ruby-on-rails-site-down/</feedburner:origLink></item>
	</channel>
</rss>
