<?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>Pathfinder Development &#187; Custom Application Development</title>
	<atom:link href="http://www.pathf.com/blogs/category/custom-application-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pathf.com/blogs</link>
	<description>Running commentary about agile development, user experience design and Ajax.</description>
	<lastBuildDate>Thu, 11 Mar 2010 04:11:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Tiling a 2-D Polygon using C# GDI+</title>
		<link>http://www.pathf.com/blogs/2010/02/tiling-2d-polygon-gdi/</link>
		<comments>http://www.pathf.com/blogs/2010/02/tiling-2d-polygon-gdi/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 22:14:33 +0000</pubDate>
		<dc:creator>Karthik Muthupalaniappan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Drawing]]></category>
		<category><![CDATA[GDI+]]></category>
		<category><![CDATA[Window Forms Development]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4781</guid>
		<description><![CDATA[One of the most challenging problems I came across working on a .NET PDF Annotator and Editor application was to tile a 2-D polygon and also accurately determine the number of tiles that fill the surface of the polygon.  The tiling part was not as much of a challenge as the counting part. The tiled [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2010/02/tiling-2d-polygon-gdi/">Tiling a 2-D Polygon using C# GDI+</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2006/07/eyespot_ajax_ap/' rel='bookmark' title='Permanent Link: Eyespot &#8211; AJAX App for Video Editing'>Eyespot &#8211; AJAX App for Video Editing</a></li><li><a href='http://www.pathf.com/blogs/2008/07/linq-to-my-domain/' rel='bookmark' title='Permanent Link: LINQ to My Domain'>LINQ to My Domain</a></li><li><a href='http://www.pathf.com/blogs/2007/01/how_to_really_d/' rel='bookmark' title='Permanent Link: How to REALLY do Page Preview in Java with Embedded HTML Rendering'>How to REALLY do Page Preview in Java with Embedded HTML Rendering</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div id="attachment_4787" class="wp-caption alignnone" style="width: 543px"><img class="size-full wp-image-4787" title="Tiling a Polygon" src="http://www.pathf.com/blogs/wp-content/uploads/2010/02/Tiling-Polygon.png" alt="Tiling a Polygon" width="533" height="388" /><p class="wp-caption-text">Tiling a Polygon</p></div>
<p>One of the most challenging problems I came across working on a <a href="http://www.pathf.com/showcase/success-stories/pdf-annotation-software/" rel="nofollow"  target="_blank">.NET PDF Annotator and Editor application</a> was to tile a 2-D polygon and also accurately determine the number of tiles that fill the surface of the polygon.  The tiling part was not as much of a challenge as the counting part. The tiled polygon was to be rendered on a PDF document since the application in question is a PDF Annotating and Editing tool. We looked for anything the third party .NET PDF rendering/manipulation API that was used could provide for the tile rendering but there was nothing unfortunately.<br />
<span id="more-4781"></span><br />
So we set out to use <a href="http://msdn.microsoft.com/en-us/library/ms533798%28VS.85%29.aspx" rel="nofollow"  target="_blank">C#'s native GDI+ library</a> to render the tiles for the polygon.  After trying out different approaches to accomplish the rendering of the tiles, we discovered the one that would work best. The idea was simple. Every 2-D shape on the drawing surface has a bounding rectangle that encloses the shape. Starting from the top left bounding point of the rectangle, iteratively render a rectangle (tile with whatever length and width) across the X axis until the right most edge of the rectangle and this iteration needs to happen over the Y-axis (not sure if I explained clearly enough <img src='http://www.pathf.com/blogs/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .  So now we have rectangular tiles laid out across the bounding rectangle for the polygon. GDI+ gives us a clip method that allows us to clip the rendering surface to a specific graphics path or region. Using the clip method, clip the drawing surface to be the graphics path for just the Polygon so that only tiles within the polygon's graphics path get rendered on the screen. We could apply other transformations to the rendered tiles like offseting, rotation or a gap between each tile.</p>
<p>Coming up with the most efficient way to count the number of tiles (including partial tiles) was a little trickier than rendering the tiles.  It turned out that the ideal approach was to essentially count each tile as it was drawn and checking whether the tile was partially or fully part of the polygon's graphics path/region. So, there is this method <a href="http://msdn.microsoft.com/en-us/library/system.drawing.region.isvisible%28VS.71%29.aspx" rel="nofollow"  target="_blank">Region.IsVisible</a> that lets you test whether a rectangle is partially or fully contained within a graphics region. During the rendering of each rectangular tile, the method was used to check whether the tile was going to be part of the region associated with the polygon and was counted if it was going to be. Even though, this was the most efficient solution for the problem, we did nt see 100% accuracy sometimes when rotation transformation was applied to the tiles. Still havent found an answer to this anomaly.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2010/02/tiling-2d-polygon-gdi/">Tiling a 2-D Polygon using C# GDI+</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2006/07/eyespot_ajax_ap/' rel='bookmark' title='Permanent Link: Eyespot &#8211; AJAX App for Video Editing'>Eyespot &#8211; AJAX App for Video Editing</a></li><li><a href='http://www.pathf.com/blogs/2008/07/linq-to-my-domain/' rel='bookmark' title='Permanent Link: LINQ to My Domain'>LINQ to My Domain</a></li><li><a href='http://www.pathf.com/blogs/2007/01/how_to_really_d/' rel='bookmark' title='Permanent Link: How to REALLY do Page Preview in Java with Embedded HTML Rendering'>How to REALLY do Page Preview in Java with Embedded HTML Rendering</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2010/02/tiling-2d-polygon-gdi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Apple&#8217;s Earnings Call:  Enterprise iPhone Adoption Growth</title>
		<link>http://www.pathf.com/blogs/2010/01/apples-earnings-call-enterprise-iphone-adoption-growth/</link>
		<comments>http://www.pathf.com/blogs/2010/01/apples-earnings-call-enterprise-iphone-adoption-growth/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 19:52:03 +0000</pubDate>
		<dc:creator>Bernhard Kappe</dc:creator>
				<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Product Strategy]]></category>
		<category><![CDATA[iPhone/Mobile]]></category>
		<category><![CDATA[enterprise iphone development]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4664</guid>
		<description><![CDATA[Macworld’s Coverage of Apple’s Quarterly Results and Finance Call had some interesting news on continued enterprise iPhone adoption:

The iPhone is ranked #1 in customer satisfaction in J.D. Powers' survey.
Corporate clients have doubled. 
70% of Fortune 100 are actively piloting or deploying iPhone. About 50% of FT 100 are doing the same. 

Not bad given that [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2010/01/apples-earnings-call-enterprise-iphone-adoption-growth/">Apple&#8217;s Earnings Call:  Enterprise iPhone Adoption Growth</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2010/01/apple-earnings-call-90-iphone-apps-approved-2-weeks/' rel='bookmark' title='Permanent Link: Apple Earnings Call: 90% of iPhone Apps Approved within 2 Weeks'>Apple Earnings Call: 90% of iPhone Apps Approved within 2 Weeks</a></li><li><a href='http://www.pathf.com/blogs/2008/10/will-q4-iphone-sales-surpass-expectations/' rel='bookmark' title='Permanent Link: Will Q4 iPhone Sales Surpass Expectations?'>Will Q4 iPhone Sales Surpass Expectations?</a></li><li><a href='http://www.pathf.com/blogs/2008/09/betting-your-business-on-the-iphone/' rel='bookmark' title='Permanent Link: Betting Your Business on the iPhone'>Betting Your Business on the iPhone</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.macworld.com/article/145806/2010/01/apple_earnings.html " rel="nofollow" >Macworld’s Coverage of Apple’s Quarterly Results and Finance Call</a> had some interesting news on continued enterprise iPhone adoption:</p>
<ul>
<li>The iPhone is ranked #1 in customer satisfaction in J.D. Powers' survey.</li>
<li>Corporate clients have doubled. </li>
<li>70% of Fortune 100 are actively piloting or deploying iPhone. About 50% of FT 100 are doing the same. </li>
</ul>
<p>Not bad given that Apple has only been in this business for 2.5 years.</p>
<p>This certainly jibes with a lot of what we are seeing from our customers, that the iPhone is the first choice for mobile application development and the first choice among consumers and corporate customers when given a chance.  It also validates our recommendations from last year on <a href="http://www.pathf.com/blogs/2009/03/which-mobile-platforms-should-you-target-part-2/">which mobile platform to develop for</a>.</p>
<p>Let's see what tomorrow's big announcement brings. </p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2010/01/apples-earnings-call-enterprise-iphone-adoption-growth/">Apple&#8217;s Earnings Call:  Enterprise iPhone Adoption Growth</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2010/01/apple-earnings-call-90-iphone-apps-approved-2-weeks/' rel='bookmark' title='Permanent Link: Apple Earnings Call: 90% of iPhone Apps Approved within 2 Weeks'>Apple Earnings Call: 90% of iPhone Apps Approved within 2 Weeks</a></li><li><a href='http://www.pathf.com/blogs/2008/10/will-q4-iphone-sales-surpass-expectations/' rel='bookmark' title='Permanent Link: Will Q4 iPhone Sales Surpass Expectations?'>Will Q4 iPhone Sales Surpass Expectations?</a></li><li><a href='http://www.pathf.com/blogs/2008/09/betting-your-business-on-the-iphone/' rel='bookmark' title='Permanent Link: Betting Your Business on the iPhone'>Betting Your Business on the iPhone</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2010/01/apples-earnings-call-enterprise-iphone-adoption-growth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What’s the value of Agile out of the box?</title>
		<link>http://www.pathf.com/blogs/2010/01/whats-agile-box/</link>
		<comments>http://www.pathf.com/blogs/2010/01/whats-agile-box/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 04:24:05 +0000</pubDate>
		<dc:creator>Michael Walkden</dc:creator>
				<category><![CDATA[Agile Coaching]]></category>
		<category><![CDATA[Agile Project Management]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[Web Application Development]]></category>
		<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Best Practices]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4650</guid>
		<description><![CDATA[I often meet peers who ask what Agile practices Pathfinder utilizes.  From the outside we pretty much use all of XP’s practices.  However, if you take a deeper look we do some things a little differently (especially how to use and calculate velocity).  For Agile purists, one might question if we are [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2010/01/whats-agile-box/">What’s the value of Agile out of the box?</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/09/agile-2009-reminded-team-leadership-2/' rel='bookmark' title='Permanent Link: Agile 2009: A reminder of why each team needs leadership'>Agile 2009: A reminder of why each team needs leadership</a></li><li><a href='http://www.pathf.com/blogs/2009/08/building-high-performance-agile-team-assume-hit/' rel='bookmark' title='Permanent Link: Building a High Performance Agile Team:  Assume You Will Be a One Hit Wonder'>Building a High Performance Agile Team:  Assume You Will Be a One Hit Wonder</a></li><li><a href='http://www.pathf.com/blogs/2009/06/effective-vs-efficient-teams/' rel='bookmark' title='Permanent Link: Effective vs Efficient Teams'>Effective vs Efficient Teams</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img title="Question Mark" src="http://www.pathf.com/blogs/wp-content/uploads/2010/01/Question-Mark.jpg" alt="Question Mark" width="221" height="221" class="right" />I often meet peers who ask what Agile practices Pathfinder utilizes.  From the outside we pretty much use all of XP’s practices.  However, if you take a deeper look we do some things a little differently (especially how to use and calculate velocity).  For Agile purists, one might question if we are really doing Agile.  They would claim changing practices is slippery slope.  For example, a team will start altering Agile practices to create a “home grown” version only to find they are using only some practices and not seeing the benefits they hoped for.  I feel questioning if we are really doing Agile based on exactly what practices one uses shows how familiar and mature one is with Agile principals.  A better question would be to ask why we changed them.  Agile is not meant to be a methodology, but a set of principals.  In my opinion, using things like Velocity to estimate whether a team will finish a project within a certain time frame is a hack at best.  This always was hard to explain to customers.  While I was reading Leading Lean Software Development I discovered something that helps.  The Poppendieck’s point out that the engineering practices of Agile (TDD, collective code ownership, etc…) are solid and not likely to change. But, the project management practices implement a system on top of another system - a hack.</p>
<p>Once you have sufficient experience managing projects with Agile practices you should feel comfortable adapting those practices to your own teams and projects.  As long as you are still following Agile principals this is okay.  In general, this is what’s going on in smaller companies.  Having coached a number of large organizations transitioning to Agile I can say this isn’t how they look at things.  The problems start when you adapt the practices, but try to deliver all projects in an identical manner.  This makes sense for waterfall-like delivery methods.  But, when an organization comes up with its own version of “Agile” it can only work for the subset of projects it is tested on.  Rolling this out to the entire organization as “the way” to deliver projects from them on is a failure pattern.  The principals are lost and so is the adaptability of the organization.  The time spent to move over to agile is immediately wasted.</p>
<p><strong>Photo Credit</strong>:<br />
<a href="http://www.flickr.com/photos/pagedooley/3983181467/sizes/s/" rel="nofollow" >kevindooley</a><br />
	under a Creative Commons Attribution License</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2010/01/whats-agile-box/">What’s the value of Agile out of the box?</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/09/agile-2009-reminded-team-leadership-2/' rel='bookmark' title='Permanent Link: Agile 2009: A reminder of why each team needs leadership'>Agile 2009: A reminder of why each team needs leadership</a></li><li><a href='http://www.pathf.com/blogs/2009/08/building-high-performance-agile-team-assume-hit/' rel='bookmark' title='Permanent Link: Building a High Performance Agile Team:  Assume You Will Be a One Hit Wonder'>Building a High Performance Agile Team:  Assume You Will Be a One Hit Wonder</a></li><li><a href='http://www.pathf.com/blogs/2009/06/effective-vs-efficient-teams/' rel='bookmark' title='Permanent Link: Effective vs Efficient Teams'>Effective vs Efficient Teams</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2010/01/whats-agile-box/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Review: Leading Lean Software Development</title>
		<link>http://www.pathf.com/blogs/2010/01/review-leading-lean-software/</link>
		<comments>http://www.pathf.com/blogs/2010/01/review-leading-lean-software/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 14:10:07 +0000</pubDate>
		<dc:creator>Michael Walkden</dc:creator>
				<category><![CDATA[Agile Coaching]]></category>
		<category><![CDATA[Agile Project Management]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Best Practices]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4564</guid>
		<description><![CDATA[In Leading Lean Software Development, Mary and Tom Poppendieck present a handbook for how to run a software development group, top to bottom.  I intended for this to be a simple review of concepts known to me for years, but the book offered much more.  The book’s jacket describes it better than I [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2010/01/review-leading-lean-software/">Review: Leading Lean Software Development</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/08/software-development-wasted-motion/' rel='bookmark' title='Permanent Link: Software Development and Wasted Motion'>Software Development and Wasted Motion</a></li><li><a href='http://www.pathf.com/blogs/2010/01/whats-agile-box/' rel='bookmark' title='Permanent Link: What’s the value of Agile out of the box?'>What’s the value of Agile out of the box?</a></li><li><a href='http://www.pathf.com/blogs/2009/09/agile-2009-reminded-team-leadership-2/' rel='bookmark' title='Permanent Link: Agile 2009: A reminder of why each team needs leadership'>Agile 2009: A reminder of why each team needs leadership</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img class="right" title="Leading Lean Software Development" src="http://www.pathf.com/blogs/wp-content/uploads/2010/01/Leading-Lean.jpg" alt="Leading Lean" width="186" height="246" />In <a href="http://www.poppendieck.com/llsd.htm" rel="nofollow" >Leading Lean Software Development</a>, Mary and Tom Poppendieck present a handbook for how to run a software development group, top to bottom.  I intended for this to be a simple review of concepts known to me for years, but the book offered much more.  The book’s jacket describes it better than I can:  They “show software leaders and team members exactly how to drive high-value change throughout a software organization—and make it stick.”  If you are completely new to agile and lean you the book might move a little fast for you.  If this is the case, I suggest you spend some quick time getting agile and lean 101 elsewhere first.</p>
<p>If you walk away with one concept after reading this book it should be to believe that success comes from people.  The best companies focus on developing problem solving skills and local decision making.  These companies favor adaptability over efficiency.  These companies make money to survive rather than simply surviving to make money.</p>
<p>The book starts out by defining the concept of frames, “the unspoken mental constructs that shape our perspectives and control our behavior in ways we rarely notice.”  A useful way to look at software development.  I was happy to see their description of Agile as evolutionary rather than revolutionary.  This is why when you explain the set of Agile practices to those with extensive experience they usually nod their heads and say they are already doing them.  I have been telling people that Agile is a collection of best practices that good software shops have been using for years.  Now I have a reference to support this.</p>
<p>Software craftsmen should read chapter 2 about technical excellence.  The chapter goes through each engineering practices, explains it such that a non-practitioner can understand and gives examples. After they are done they should make their manager’s read it, then their managers.</p>
<p><strong>Conclusion</strong></p>
<p>I wish this book had been written 5 years ago. It would have saved me considerable effort and time trying to define what a well run software organization looks like.  Your mileage my vary, but I will say that I intend to keep this on my bookshelf right next to <a href="http://www.amazon.com/Managing-Professional-Service-David-Maister/dp/0684834316" rel="nofollow" >Managing The Professional Service Firm</a>.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2010/01/review-leading-lean-software/">Review: Leading Lean Software Development</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/08/software-development-wasted-motion/' rel='bookmark' title='Permanent Link: Software Development and Wasted Motion'>Software Development and Wasted Motion</a></li><li><a href='http://www.pathf.com/blogs/2010/01/whats-agile-box/' rel='bookmark' title='Permanent Link: What’s the value of Agile out of the box?'>What’s the value of Agile out of the box?</a></li><li><a href='http://www.pathf.com/blogs/2009/09/agile-2009-reminded-team-leadership-2/' rel='bookmark' title='Permanent Link: Agile 2009: A reminder of why each team needs leadership'>Agile 2009: A reminder of why each team needs leadership</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2010/01/review-leading-lean-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Dog Ate My Software: Agile is not Undisciplined</title>
		<link>http://www.pathf.com/blogs/2010/01/dog-ate-software-agile-undisciplined/</link>
		<comments>http://www.pathf.com/blogs/2010/01/dog-ate-software-agile-undisciplined/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 11:00:52 +0000</pubDate>
		<dc:creator>Dietrich Kappe</dc:creator>
				<category><![CDATA[Agile Project Management]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[Agile Development]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4540</guid>
		<description><![CDATA[
 photo credit: LKaestner
Back in college I used to work at the main campus computer center. That was back in the days of time sharing Unix and mainframe computers, so it was a great way to get some extra CPU time for my various projects. Besides locking up at closing time (I loved to work [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2010/01/dog-ate-software-agile-undisciplined/">The Dog Ate My Software: Agile is not Undisciplined</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/03/agile-development-for-product-managers-why-agile-testing-rocks/' rel='bookmark' title='Permanent Link: Agile Development for Product Managers: Why Agile Testing Rocks'>Agile Development for Product Managers: Why Agile Testing Rocks</a></li><li><a href='http://www.pathf.com/blogs/2009/09/agile-2009-reminded-team-leadership-2/' rel='bookmark' title='Permanent Link: Agile 2009: A reminder of why each team needs leadership'>Agile 2009: A reminder of why each team needs leadership</a></li><li><a href='http://www.pathf.com/blogs/2008/12/agile-software-development-and-the-lazy-client-trap/' rel='bookmark' title='Permanent Link: Agile Software Development and the Lazy Client Trap'>Agile Software Development and the Lazy Client Trap</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div style="float:right;padding:10px"><a href="http://www.flickr.com/photos/26672996@N07/4019643388/" rel="nofollow" title="Boombastic"  target="_blank"><img src="http://farm3.static.flickr.com/2556/4019643388_8f315b51be_m.jpg" border="0" alt="Boombastic" /></a><br />
<small><a href="http://creativecommons.org/licenses/by/2.0/" rel="nofollow" title="Attribution License"  target="_blank"><img src="http://www.pathf.com/blogs/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" rel="nofollow"  target="_blank">photo</a> credit: <a href="http://www.flickr.com/photos/26672996@N07/4019643388/" rel="nofollow" title="LKaestner"  target="_blank">LKaestner</a></small></div>
<p>Back in college I used to work at the main campus computer center. That was back in the days of time sharing Unix and mainframe computers, so it was a great way to get some extra CPU time for my various projects. Besides locking up at closing time (I loved to work the 10pm-3am shift), I had to change toner cartridges, support the brick macs, windows 3.1 machines, and the various Unix and Mainframe terminal users.</p>
<p>Over time, you learned to identify various user types. The vast majority of users had simple "hey, how do I do this" or "this ain't working" types of issues. Of the rest there were two main problem user types: the "helpless bunny" and the "walking crisis."</p>
<p>The Bunny displayed profound helplessness in order to get you to do their work for them. The first time I had a Bunny, I was caught unawares and spent the better part of my shift formatting their document in Wordperfect. With subsequent Bunnies, I used tough love and gave them manuals and man pages to read.</p>
<p>The Walking Crisis was typified by the grad student who waited until the last moment to add end notes to their masters dissertation, and dammit, if they were going to suffer, you were going to suffer. Their technique was to try to convince you that their problem was your problem, i.e. the fact that they couldn't do two months of work in five hours was a shortcoming of the software, and thus a support issue.</p>
<p>The more enthusiastic you were about helping users, the more susceptible you were of being dragged down by the Bunny and the Crisis.</p>
<p><span id="more-4540"></span></p>
<p><strong>Professional Software Development</strong></p>
<p>When I left school for the big time of professional software development, I quickly found the Walking Crisis existed there too. When these problem types were in position of influence or even the project stakeholder, then they didn't just make the life of one person miserable, they could whipsaw and demoralize an entire team. And while they were poison to a team, by themselves they were capable of pulling heroic all-nighters to make up for their lack of discipline. This perceived capacity for hard work (minus the self-inflicted need for it), often puts the Walking Crisis into positions of power.</p>
<p>It was around this time that I became a fan of professional project managers. If you were lucky enough to get one of these rare beasts on one of your projects, you at least had a chance of surviving. If the Walking Crisis procrastinated decisions, a good project manager could ring the alarm bells in advance of any software death march.</p>
<p><strong>Agile is not Undisciplined</strong></p>
<p>When I began to embrace the joys of Agile Software Development, the Walking Crisis made a strong comeback. Since Agile software development methods embrace change, the Crisis can delay all the hard decisions and work until the last few iterations and slip them in as some basic change.</p>
<p>Of course the same things could happen in a more traditional waterfall model of software development, but somehow lots of folks have the idea that Agile is just fast and loose and undisciplined. Nothing could be further from the truth. In Agile you grapple early and often with schedule and scope. From the second or third iteration you are dancing with velocity and the backlog, making decisions on what is in or out.</p>
<p><strong>Be Careful in Choosing Your Product Manager</strong></p>
<p>If your organization is developing software, you may be in the position to choose the product manager or software development liaison. Pick someone you already know works well with teams and has a good grasp of your business and the marketplace. Be careful that you don't mistake their heroic "Walking Crisis" efforts for competence, else you may be condemning your software product to failure.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2010/01/dog-ate-software-agile-undisciplined/">The Dog Ate My Software: Agile is not Undisciplined</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/03/agile-development-for-product-managers-why-agile-testing-rocks/' rel='bookmark' title='Permanent Link: Agile Development for Product Managers: Why Agile Testing Rocks'>Agile Development for Product Managers: Why Agile Testing Rocks</a></li><li><a href='http://www.pathf.com/blogs/2009/09/agile-2009-reminded-team-leadership-2/' rel='bookmark' title='Permanent Link: Agile 2009: A reminder of why each team needs leadership'>Agile 2009: A reminder of why each team needs leadership</a></li><li><a href='http://www.pathf.com/blogs/2008/12/agile-software-development-and-the-lazy-client-trap/' rel='bookmark' title='Permanent Link: Agile Software Development and the Lazy Client Trap'>Agile Software Development and the Lazy Client Trap</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2010/01/dog-ate-software-agile-undisciplined/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Getting CloudTools to Work with Grails 1.1.1</title>
		<link>http://www.pathf.com/blogs/2009/12/cloudtools-work-grails-111/</link>
		<comments>http://www.pathf.com/blogs/2009/12/cloudtools-work-grails-111/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 22:46:43 +0000</pubDate>
		<dc:creator>Dietrich Kappe</dc:creator>
				<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[Grails]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4513</guid>
		<description><![CDATA[
 photo credit: °Florian
Yes, Cloud Foundry has been acquired by Spring Source and seems to be morphing into a for-pay service, and there hasn't been a new build packaged on the Cloud Tools project page since January of 2009, but if you dig in the SVN repo, you see there's a bit of activity. Before [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/12/cloudtools-work-grails-111/">Getting CloudTools to Work with Grails 1.1.1</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/08/making-vaadin-puremvc-grails-work/' rel='bookmark' title='Permanent Link: Making Vaadin, PureMVC and Grails Work Together'>Making Vaadin, PureMVC and Grails Work Together</a></li><li><a href='http://www.pathf.com/blogs/2009/11/grails-google-app-engine-birthing-pains/' rel='bookmark' title='Permanent Link: Grails and Google App Engine: Birthing Pains'>Grails and Google App Engine: Birthing Pains</a></li><li><a href='http://www.pathf.com/blogs/2008/02/grails-and-json/' rel='bookmark' title='Permanent Link: Grails and JSONP: How Easy is That?'>Grails and JSONP: How Easy is That?</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div style="float:right;padding:10px"><a href="http://www.flickr.com/photos/16634670@N00/3579526541/" rel="nofollow" title="Thunderhead"  target="_blank"><img src="http://farm4.static.flickr.com/3357/3579526541_fc9bf9f3cb_m.jpg" border="0" alt="Thunderhead" /></a><br />
<small><a href="http://creativecommons.org/licenses/by-sa/2.0/" rel="nofollow" title="Attribution-ShareAlike License"  target="_blank"><img src="http://www.pathf.com/blogs/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" rel="nofollow"  target="_blank">photo</a> credit: <a href="http://www.flickr.com/photos/16634670@N00/3579526541/" rel="nofollow" title="°Florian"  target="_blank">°Florian</a></small></div>
<p>Yes, <a href="http://www.cloudfoundry.com/" rel="nofollow"  target="_blank">Cloud Foundry</a> has been acquired by <a href="http://www.springsource.com/" rel="nofollow"  target="_blank">Spring Source</a> and seems to be morphing into a for-pay service, and there hasn't been a new build packaged on the <a href="http://code.google.com/p/cloudtools/" rel="nofollow"  target="_blank">Cloud Tools project</a> page since January of 2009, but if you dig in the SVN repo, you see there's a bit of activity. Before I try building from source, I wanted to see how hard it would be to get 0.6 Grails plugin working with a Grails 1.1.1 app.</p>
<p>Well, harder than I thought. There's a real lack of documentation around cloudtools for one, and the radio silence on the project page over the last few months hasn't helped. Fortunately, Don over at AlterThought has put together a nice post that covers most of the <a href="http://alterlabs.com/uncategorized/grails-and-cloud-computing-part-1-amazon-ec/" rel="nofollow"  target="_blank">pitfalls and problems with the CloudTools Grails Plugin</a>. A few things they don't address and I thought I'd throw in here:</p>
<p><span id="more-4513"></span><br />
<strong>1. The CloudTools scripts expect the plugin to be located in the Grails project directory.</strong></p>
<p>That isn't the case anymore. The plugins have moved to <code>~/.grails/1.1.1/projects/&lt;your-project-name&gt;/plugins/</code>. The one script that barfs on this is <code>~/.grails/1.1.1/projects/&lt;your-project-name&gt;/plugins/cloud-tools-0.6/scripts/CloudToolsDeploy.groovy</code> which tries to determine the plugin dir through a process that just won't work anymore. Edit the file and replace all the <code>pluginHome</code> cruft with a single line:</p>
<pre class="groovy">pluginHome = <span style="color: #ff0000;">&quot;${cloudToolsPluginDir}&quot;</span>
&nbsp;</pre>
<p>That's it.</p>
<p><strong>2. The CloudTools deployment ignores your production configuration and just deploys development.</strong></p>
<p>If your development data source is configured to <code>create-drop</code>, you'll be very disappointed that your database is constantly getting nuked. So, ignore the production environment and just use development! (This will need to be fixed, of course.)</p>
<p><strong>3. When deploying, you need to have a local db running with the same login info/credentials as your production.</strong></p>
<p>What a huge pain. I only discovered this after shutting down my local development mysql instance. Not so good for automated build and deploy. Again, needs to be fixed.</p>
<p><strong>4. Using EBS is pretty dead simple.</strong></p>
<p>Using EBS to persist mysql tables is rather trivial. Just tack on a <code>withNewEbsVolume</code> method call the first time through, then a <code>withExistingEbsVolume</code>, some the first time:</p>
<pre class="groovy">clusterSpec = <a href="http://www.google.de/search?q=site%3Adocs.codehaus.org/%20new" rel="nofollow" ><span style="color: #000000; font-weight: bold;">new</span></a> ClusterSpec<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
                .<span style="color: #006600;">tomcats</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
                .<span style="color: #006600;">topology</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SingleInstanceTopology&quot;</span><span style="color: #66cc66;">&#41;</span>
                .<span style="color: #006600;">instanceType</span><span style="color: #66cc66;">&#40;</span>EC2InstanceType.<span style="color: #006600;">SMALL</span><span style="color: #66cc66;">&#41;</span>
                .<span style="color: #006600;">slaves</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
                .<span style="color: #006600;">withNewEbsVolume</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">20</span>, <span style="color: #ff0000;">&quot;/dev/sdq&quot;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;</pre>
<p>CloudTools will create a volume, format it and mount it, populate the db tables to it. Next you find the volume id with something like <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609" rel="nofollow"  target="_blank" >ElasticFox</a> and edit your config file to look like this:</p>
<pre class="groovy">clusterSpec = <a href="http://www.google.de/search?q=site%3Adocs.codehaus.org/%20new" rel="nofollow" ><span style="color: #000000; font-weight: bold;">new</span></a> ClusterSpec<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
                .<span style="color: #006600;">tomcats</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
                .<span style="color: #006600;">topology</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;SingleInstanceTopology&quot;</span><span style="color: #66cc66;">&#41;</span>
                .<span style="color: #006600;">instanceType</span><span style="color: #66cc66;">&#40;</span>EC2InstanceType.<span style="color: #006600;">SMALL</span><span style="color: #66cc66;">&#41;</span>
                .<span style="color: #006600;">slaves</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
                .<span style="color: #006600;">withExistingEbsVolume</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;vol-1234&quot;</span>, <span style="color: #ff0000;">&quot;/dev/sdq&quot;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;</pre>
<p>Obviously replace <code>vol-1234</code> with your actual volume id.</p>
<p>OK, that's it. With this configuration, I'm able to get a Grails app up in a matter of minutes with a persistent mysql db.</p>
<p>Next time: building from source.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/12/cloudtools-work-grails-111/">Getting CloudTools to Work with Grails 1.1.1</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/08/making-vaadin-puremvc-grails-work/' rel='bookmark' title='Permanent Link: Making Vaadin, PureMVC and Grails Work Together'>Making Vaadin, PureMVC and Grails Work Together</a></li><li><a href='http://www.pathf.com/blogs/2009/11/grails-google-app-engine-birthing-pains/' rel='bookmark' title='Permanent Link: Grails and Google App Engine: Birthing Pains'>Grails and Google App Engine: Birthing Pains</a></li><li><a href='http://www.pathf.com/blogs/2008/02/grails-and-json/' rel='bookmark' title='Permanent Link: Grails and JSONP: How Easy is That?'>Grails and JSONP: How Easy is That?</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/12/cloudtools-work-grails-111/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Your SDLC or Your Product – You Decide</title>
		<link>http://www.pathf.com/blogs/2009/12/sdlc-product-decide/</link>
		<comments>http://www.pathf.com/blogs/2009/12/sdlc-product-decide/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 04:33:24 +0000</pubDate>
		<dc:creator>Michael Walkden</dc:creator>
				<category><![CDATA[Agile Project Management]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Product Strategy]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[User Experience Design]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Application Architecture]]></category>
		<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Product Design]]></category>
		<category><![CDATA[user experience design]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4426</guid>
		<description><![CDATA[…or the telephone game

 photo credit: tallkev
Last weekend I was watching a movie with my kids.  In the movie there was a chain of monkeys that needed to pass on the message from one character to one on the other side of the chain.   The message went something like, “Don’t throw us [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/12/sdlc-product-decide/">Your SDLC or Your Product – You Decide</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2007/09/design-doesnt-j/' rel='bookmark' title='Permanent Link: Design Doesn&#8217;t Just Mean Color'>Design Doesn&#8217;t Just Mean Color</a></li><li><a href='http://www.pathf.com/blogs/2009/04/tech-terms-that-drive-business-people-crazy/' rel='bookmark' title='Permanent Link: Tech Terms that Drive Business People Crazy'>Tech Terms that Drive Business People Crazy</a></li><li><a href='http://www.pathf.com/blogs/2009/03/agile-development-for-product-managers-why-agile-testing-rocks/' rel='bookmark' title='Permanent Link: Agile Development for Product Managers: Why Agile Testing Rocks'>Agile Development for Product Managers: Why Agile Testing Rocks</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><strong>…or the telephone game</strong></p>
<div style="float:right;padding:10px"><a href="http://farm1.static.flickr.com/87/256810217_bb3c021ccc.jpg" rel="nofollow" title="Crane Gears"  target="_blank"><img src="http://farm1.static.flickr.com/87/256810217_bb3c021ccc.jpg" border="0" alt="Crane Gears" width="329" height="216" /></a><br />
<small><a href="http://creativecommons.org/licenses/by-sa/2.0/" rel="nofollow" title="Attribution-ShareAlike License"  target="_blank"><img src="http://www.pathf.com/blogs/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" rel="nofollow"  target="_blank">photo</a> credit: <a href="http://www.flickr.com/photos/tallkev/256810217/" rel="nofollow" title="tallkev"  target="_blank">tallkev</a></small></div>
<p>Last weekend I was watching a movie with my kids.  In the movie there was a chain of monkeys that needed to pass on the message from one character to one on the other side of the chain.   The message went something like, “Don’t throw us over the wall. There must be another way. We will all be killed.”  As it went through the chain and the receiver heard, “Throw us over the wall.  It’s the only way.  Banana.”  The scenario seems ridiculous, but its roughly equivalent to how many companies approach software product design.  Often times companies don’t realize they are creating a product at all.  They think they are just running a project and focus only on delivery of that project as if it is the only artifact of their work.</p>
<p>The problem stems from the fact that when organizations reach a sufficiently large size they must focus on consistency of delivery and efficiently using people’s time.  For large organizations this is part of the mix that makes up their competitive advantage.   However, the sheer size and number of moving parts required to enable clocklike consistent delivery leads to the most knowledgeable people about the customer never directly speak to the people responsible for building the product.  Or translated into a traditional SDLC, the definition/high level design team isn’t communicating with the build team. In my experience they are usually two different groups of people.  I’ll give you an example:</p>
<p>A while back, I was leading a software development team creating a product to be used by all 170,000 of my customer’s employees on a daily basis. They happened to have a team of user experience designers and wanted to take on the “big picture” part of the design themselves.  This company could afford the best and the brightest talent - and was able to attract them.  Individually the folks on this team were talented and knew their craft well.  I actually learned a lot just from my brief time with them.  However, once we got the design in hand it was obvious that the usability team’s artifacts weren’t going to work for the project.  They didn’t meet the end user’s needs nor were they implementable within the time we had available for the project. The client’s design team literately spent months of time showing users lo-fi prototypes, running focus groups, and understanding usage statistics from similar applications. But, the simplicity the end users craved didn’t match the complexity of the business rules required.  Upon further investigation the customer’s design team never was given a business level view of the problem to be solved.  We tried to merge the business requirements with good usability, but ultimately the franken-design didn’t work.  We had to throw out the big picture design and use them as ”guidelines” instead.  Clearly it was a waste of talent and a haphazard way to build a product.</p>
<p>In hindsight the design team should have been presented the complex business rules so that their design could incorporate them from the beginning.  However, the customer’s SDLC only allowed the design team to be engaged in the definition/high design phase of the project.  Once we got to the design phase they were hard to find.  By the time we got into the build phase the development team was simply a distraction from other work for these designers.  A better model would have kept the designers on the project as each piece is built.  I’m not suggesting full dedication to the team – 40 hours a week.  That would be nice, but that’s not likely possible in most organizations.  I’m suggesting a small time commitment over a long period of time.</p>
<p>Most of the time projects are actually building products.  If you are building a product, but focusing SDLC metrics and efficiency, keep in mind that your phases are likely making walls around teams and causing ineffective communication between them.  As Matt from 37Signals points out, “<a href="http://37signals.com/svn/posts/2038-inefficiencies-are-what-make-you-special" rel="nofollow"  target="_blank">Inefficiencies are what make you special.</a>”</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/12/sdlc-product-decide/">Your SDLC or Your Product – You Decide</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2007/09/design-doesnt-j/' rel='bookmark' title='Permanent Link: Design Doesn&#8217;t Just Mean Color'>Design Doesn&#8217;t Just Mean Color</a></li><li><a href='http://www.pathf.com/blogs/2009/04/tech-terms-that-drive-business-people-crazy/' rel='bookmark' title='Permanent Link: Tech Terms that Drive Business People Crazy'>Tech Terms that Drive Business People Crazy</a></li><li><a href='http://www.pathf.com/blogs/2009/03/agile-development-for-product-managers-why-agile-testing-rocks/' rel='bookmark' title='Permanent Link: Agile Development for Product Managers: Why Agile Testing Rocks'>Agile Development for Product Managers: Why Agile Testing Rocks</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/12/sdlc-product-decide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Griffon Tutorials: Adding Useful Logging</title>
		<link>http://www.pathf.com/blogs/2009/11/griffon-tutorials-adding-logging/</link>
		<comments>http://www.pathf.com/blogs/2009/11/griffon-tutorials-adding-logging/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 11:04:22 +0000</pubDate>
		<dc:creator>Dietrich Kappe</dc:creator>
				<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[Griffon]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[log4j]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4332</guid>
		<description><![CDATA[
I'm gathering as much as I can on Griffon and how people are using it. Some things you can translated from Grails, but not everything. So here, as a public service, is the first of many Griffon tutorial pointers.
Dabble-&#62;Scribble has a nice blog entry on including log4j logging in Griffon. My favorite part? One of [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/11/griffon-tutorials-adding-logging/">Griffon Tutorials: Adding Useful Logging</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/10/questions-griffon/' rel='bookmark' title='Permanent Link: Questions About Griffon'>Questions About Griffon</a></li><li><a href='http://www.pathf.com/blogs/2009/10/griffon-puremvc-plugin-initial-thoughts/' rel='bookmark' title='Permanent Link: Griffon and a PureMVC Plugin: Some Initial Thoughts'>Griffon and a PureMVC Plugin: Some Initial Thoughts</a></li><li><a href='http://www.pathf.com/blogs/2009/10/griffon-plugin-development-nitty-gritty/' rel='bookmark' title='Permanent Link: Griffon Plugin Development: Some Nitty Gritty'>Griffon Plugin Development: Some Nitty Gritty</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-4201" style="float:right;padding:10px;" title="groffon" src="http://www.pathf.com/blogs/wp-content/uploads/2009/10/groffon.png" alt="groffon" width="155" height="50" /><br />
I'm gathering as much as I can on Griffon and how people are using it. Some things you can translated from <a href="http://www.grails.org/" rel="nofollow"  target="_blank">Grails</a>, but not everything. So here, as a public service, is the first of many Griffon tutorial pointers.</p>
<p>Dabble-&gt;Scribble has a nice blog entry on <a href="http://dabblescribble.blogspot.com/2009/11/starting-out-in-griffon-3-logging.html" rel="nofollow"  target="_blank">including log4j logging in Griffon</a>. My favorite part? One of his goals for logging is to "Filter out the cruft from Groovy's massive stacktraces." Amen.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/11/griffon-tutorials-adding-logging/">Griffon Tutorials: Adding Useful Logging</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/10/questions-griffon/' rel='bookmark' title='Permanent Link: Questions About Griffon'>Questions About Griffon</a></li><li><a href='http://www.pathf.com/blogs/2009/10/griffon-puremvc-plugin-initial-thoughts/' rel='bookmark' title='Permanent Link: Griffon and a PureMVC Plugin: Some Initial Thoughts'>Griffon and a PureMVC Plugin: Some Initial Thoughts</a></li><li><a href='http://www.pathf.com/blogs/2009/10/griffon-plugin-development-nitty-gritty/' rel='bookmark' title='Permanent Link: Griffon Plugin Development: Some Nitty Gritty'>Griffon Plugin Development: Some Nitty Gritty</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/11/griffon-tutorials-adding-logging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GWT and the Static Versus Dynamic Religious War</title>
		<link>http://www.pathf.com/blogs/2009/11/gwt-static-dynamic-religious-war/</link>
		<comments>http://www.pathf.com/blogs/2009/11/gwt-static-dynamic-religious-war/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 11:33:28 +0000</pubDate>
		<dc:creator>Dietrich Kappe</dc:creator>
				<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[Web Application Development]]></category>
		<category><![CDATA[dynamic languages]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[static typing]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4328</guid>
		<description><![CDATA[Never get involved in a land war in Asia.
-- Vizzini, The Princess Bride
.

Also, never get involved in a religious war about statically versus dynamically typed languages. Well, maybe just this once.  
Periodically, an angry Javascript developer will let loose and flame GWT as a misbegotten spawn of evil. Then all the GWT developers point [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/11/gwt-static-dynamic-religious-war/">GWT and the Static Versus Dynamic Religious War</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2007/12/josh-bloch-intr/' rel='bookmark' title='Permanent Link: Josh Bloch Intro Q&#038;A'>Josh Bloch Intro Q&#038;A</a></li><li><a href='http://www.pathf.com/blogs/2009/04/remain-static-or-go-dynamic/' rel='bookmark' title='Permanent Link: Remain Static or Go Dynamic?'>Remain Static or Go Dynamic?</a></li><li><a href='http://www.pathf.com/blogs/2009/04/static-typing-and-the-paranoid-style-of-programming/' rel='bookmark' title='Permanent Link: Static Typing and the Paranoid Style of Programming'>Static Typing and the Paranoid Style of Programming</a></li></ol>]]></description>
			<content:encoded><![CDATA[<blockquote><p>Never get involved in a land war in Asia.</p>
<div style="float:right"><em>-- Vizzini, The Princess Bride</em></div>
<p><span style="clear:both">.</span></p></blockquote>
<p><img class="alignright size-full wp-image-952" style="float:right;padding:10px" title="gwt" src="http://www.pathf.com/blogs/wp-content/uploads/2008/06/gwt.png" alt="gwt" width="260" height="250" /><br />
Also, never get involved in a religious war about statically versus dynamically typed languages. Well, maybe just this once. <img src='http://www.pathf.com/blogs/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Periodically, an angry Javascript developer will let loose and flame GWT as a misbegotten spawn of evil. Then all the GWT developers point and chuckle and move on to developing more cool applications. Every so often, though, someone will make a thoughtful comment about GWT, and then we have a fruitful discussion that helps clarify what GWT is and what it does and doesn't do well.</p>
<p>William Shields has either posted such a thoughtful comment or a very high end version of a flame, entitled <a href="http://www.cforcoding.com/2009/10/lost-in-translation-or-why-gwt-isnt.html" rel="nofollow"  target="_blank">Lost in Translation or Why GWT Isn’t the Future of Web Development</a>. It is well worth reading, along with Google's Joel's <a href="http://www.cforcoding.com/2009/10/lost-in-translation-or-why-gwt-isnt.html?showComment=1256837717972#c6998534070688607679" rel="nofollow"  target="_blank">somewhat heated response</a>.</p>
<p><span id="more-4328"></span></p>
<p>What I want to take issue with is Shields' statement that "Between Javascript, PHP, Python, Perl, Ruby and other languages over the last decade (<em>and yes some have a history going far earlier than that</em>) have clearly demonstrated that indeed the sky hasn’t fallen with loose and dynamic typing."</p>
<p>I'm very much a right tool for the job kind of guy. I love my Groovy and my Ruby, but I also like C# and Java for some things. So, has the sky fallen? I would say yes.</p>
<p>Over the last decade, I've run a software development company that practices agile development. One crucial aspect of our practice is Test Driven Development (TDD). We strive for a high level of code coverage, typically over 85%.  With this approach we deliver software where the number of bugs post-release converges rapidly toward zero, even with enhancements and new features being added.</p>
<p>Now while TDD is great for all software development projects, it is absolutely essential of projects developed with dynamically typed languages. Where statically typed source code without unit tests is like a toxic wasted dump, dynamically typed source code without unit tests is like a nuclear holocaust. Those types of projects just throw off new bugs like a frat house in summer.</p>
<p>Given that many JavaScript and PHP (and Rails, for that matter) projects are developed without unit tests, either because the practice of TDD wasn't common in the organization, or because dynamically typed languages are often the choice of amateurs and, well, "what's a unit test?"</p>
<p>We often take over code developed by other development shops. Sometimes that code has no tests and the client is predictably upset about the bugginess and fragility of the code. I'm usually calm when we take over a statically typed code base, but I'm extremely nervous when the code base is dynamically typed. That's not religious, that's just pragmatic.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/11/gwt-static-dynamic-religious-war/">GWT and the Static Versus Dynamic Religious War</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2007/12/josh-bloch-intr/' rel='bookmark' title='Permanent Link: Josh Bloch Intro Q&#038;A'>Josh Bloch Intro Q&#038;A</a></li><li><a href='http://www.pathf.com/blogs/2009/04/remain-static-or-go-dynamic/' rel='bookmark' title='Permanent Link: Remain Static or Go Dynamic?'>Remain Static or Go Dynamic?</a></li><li><a href='http://www.pathf.com/blogs/2009/04/static-typing-and-the-paranoid-style-of-programming/' rel='bookmark' title='Permanent Link: Static Typing and the Paranoid Style of Programming'>Static Typing and the Paranoid Style of Programming</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/11/gwt-static-dynamic-religious-war/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Griffon and a PureMVC Plugin: Some Initial Thoughts</title>
		<link>http://www.pathf.com/blogs/2009/10/griffon-puremvc-plugin-initial-thoughts/</link>
		<comments>http://www.pathf.com/blogs/2009/10/griffon-puremvc-plugin-initial-thoughts/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 16:59:56 +0000</pubDate>
		<dc:creator>Dietrich Kappe</dc:creator>
				<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Rich Internet Apps]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[Griffon]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[PureMVC]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4299</guid>
		<description><![CDATA[
I finally have some small amount of spare time to start working on my Griffon PureMVC plugin. One of the first things to think about is where to we make the marriage between the two frameworks?
Griffon has Models, Views and Controllers, as does PureMVC (actually, it has Commands, Mediators and Proxies, which essentially perform the [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/10/griffon-puremvc-plugin-initial-thoughts/">Griffon and a PureMVC Plugin: Some Initial Thoughts</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/10/griffon-plugin-development-nitty-gritty/' rel='bookmark' title='Permanent Link: Griffon Plugin Development: Some Nitty Gritty'>Griffon Plugin Development: Some Nitty Gritty</a></li><li><a href='http://www.pathf.com/blogs/2009/10/griffon-convention-configuration-desktop/' rel='bookmark' title='Permanent Link: Griffon: Convention over Configuration for the Desktop'>Griffon: Convention over Configuration for the Desktop</a></li><li><a href='http://www.pathf.com/blogs/2009/10/questions-griffon/' rel='bookmark' title='Permanent Link: Questions About Griffon'>Questions About Griffon</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img style="padding:10px" title="puremvc-icon" src="http://www.pathf.com/blogs/wp-content/uploads/2009/07/puremvc-icon.jpg" alt="puremvc-icon" width="318" height="200" /><img style="padding:10px" title="groffon" src="http://www.pathf.com/blogs/wp-content/uploads/2009/10/groffon.png" alt="groffon" width="155" height="50" /></p>
<p>I finally have some small amount of spare time to start working on my Griffon PureMVC plugin. One of the first things to think about is where to we make the marriage between the two frameworks?</p>
<p>Griffon has Models, Views and Controllers, as does PureMVC (actually, it has Commands, Mediators and Proxies, which essentially perform the tasks under MVC). My initial thought is that Griffon's MVC triads really perform the tasks of a complex view, and PureMVC wires these complex views together via it's message bus. So, my thinking is to wrap each MVC triad into a Mediator, with the Mediator mostly talking to the Griffon controller and perhaps the Griffon model.</p>
<p>I'll make some more posts here as my thinking and experimenting evolves.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/10/griffon-puremvc-plugin-initial-thoughts/">Griffon and a PureMVC Plugin: Some Initial Thoughts</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/10/griffon-plugin-development-nitty-gritty/' rel='bookmark' title='Permanent Link: Griffon Plugin Development: Some Nitty Gritty'>Griffon Plugin Development: Some Nitty Gritty</a></li><li><a href='http://www.pathf.com/blogs/2009/10/griffon-convention-configuration-desktop/' rel='bookmark' title='Permanent Link: Griffon: Convention over Configuration for the Desktop'>Griffon: Convention over Configuration for the Desktop</a></li><li><a href='http://www.pathf.com/blogs/2009/10/questions-griffon/' rel='bookmark' title='Permanent Link: Questions About Griffon'>Questions About Griffon</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/10/griffon-puremvc-plugin-initial-thoughts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Under the Waterfall: The Cost of Bugs After Launch</title>
		<link>http://www.pathf.com/blogs/2009/10/waterfall-cost-bugs-launch/</link>
		<comments>http://www.pathf.com/blogs/2009/10/waterfall-cost-bugs-launch/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 19:44:58 +0000</pubDate>
		<dc:creator>Dietrich Kappe</dc:creator>
				<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[software develoment]]></category>
		<category><![CDATA[waterfall]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4295</guid>
		<description><![CDATA[
 photo credit: bobistraveling
We have a few simple principles when it comes to software guarantees: either we have developed the software according to our rigorous testing standards or the third party code we being asked to support meets some basic criterea:

It has full functional specifications.
It has unit tests that provide better than 85% line and [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/10/waterfall-cost-bugs-launch/">Under the Waterfall: The Cost of Bugs After Launch</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/05/800-on-your-mat/' rel='bookmark' title='Permanent Link: 800 on Your Math SAT, Software Development and Bugs'>800 on Your Math SAT, Software Development and Bugs</a></li><li><a href='http://www.pathf.com/blogs/2009/06/agile-development-improves-roi-%e2%80%93-but-rfp-processes-are-stuck-in-waterfall/' rel='bookmark' title='Permanent Link: Agile Development Improves ROI – But RFP Processes are Stuck in Waterfall.'>Agile Development Improves ROI – But RFP Processes are Stuck in Waterfall.</a></li><li><a href='http://www.pathf.com/blogs/2009/06/cucumber-rocks-but-its-not-a-replacement-for-unit-tests/' rel='bookmark' title='Permanent Link: Cucumber Rocks &#8211; But it&#8217;s not a replacement for unit tests'>Cucumber Rocks &#8211; But it&#8217;s not a replacement for unit tests</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div style="float:right;padding:10px"><a href="http://www.flickr.com/photos/91008793@N00/4026971490/" rel="nofollow" title="Cavern Cascade Watkins Glen State Park, Watkins Glen NY 2417"  target="_blank"><img src="http://farm3.static.flickr.com/2642/4026971490_864ba98ce0_m.jpg" border="0" alt="Cavern Cascade Watkins Glen State Park, Watkins Glen NY 2417" /></a><br />
<small><a href="http://creativecommons.org/licenses/by/2.0/" rel="nofollow" title="Attribution License"  target="_blank"><img src="http://www.pathf.com/blogs/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" rel="nofollow"  target="_blank">photo</a> credit: <a href="http://www.flickr.com/photos/91008793@N00/4026971490/" rel="nofollow" title="bobistraveling"  target="_blank">bobistraveling</a></small></div>
<p>We have a few simple principles when it comes to software guarantees: either we have developed the software according to our rigorous testing standards or the third party code we being asked to support meets some basic criterea:</p>
<ol>
<li>It has full functional specifications.</li>
<li>It has unit tests that provide better than 85% line and branch coverage.</li>
<li>It has automated functional tests that exercise 100% of the user stories.</li>
</ol>
<p>That may seem pretty extreme, but if we're promising to fix bugs on our dime, we can't have it any other way. Doing without these basic criteria is like guaranteeing you can drive from New York to Los Angeles in 30 hours, keeping under the speed limit without a speedometer and without being told what the speed limit is. Spelling it out a little more, if you can't tell me what your application should do, how do I know if it is "broken?" If I can't run and inspect unit tests to tell if individual classes and methods are doing the right thing, how can I quickly tell if my changes have broken the system?<span id="more-4295"></span></p>
<p>There's lots of damning studies of the software development industry out there, but the <a href="http://www.nist.gov/director/prog-ofc/report02-3.pdf" rel="nofollow" >NIST study from 2002</a> is one of my favorites. In it there is a nice little table that shows that in the 1960's and 1970's fully 80% of software development effort was spent on Coding and Unit Testing, another 10% on Integration and System Testing. Only 10% was spent on the whole requirements and design shooting match. Fast forward to the 1990's, when only 30% of effort was spent on what previously consumed 90%.</p>
<p>The story isn't, of course, that programmers became less professional and more sloppy. Rather, people discovered that if you developed the wrong software it didn't really matter how bug free it was. So more effort was spent up front on requirements. In that sense, Agile software development is a little bit of a retro movement since it reasserts the primacy of unit and integration testing, though with Test Driven Development (TDD) and continuous integration you get there in a very different way than before.</p>
<p>Of course most of the 3rd party software we are asked to take over were developed using a waterfall approach. They usually have functional specifications, though they're typically out of date, and they usually have no unit tests and spotty functional tests. There's another nice table in the NIST study that shows that defects that are from 440 to 880 times as expensive to repair in the operation and maintenance phase of a software applications life-cycle as they were in the original development. I think that's too pessimistic. I think that 80% is a good figure. In other words, if you spent $200k developing your original application, you should expect to spend $800k on maintenance programming and testing over the application's life span.</p>
<p>If you've got good unit tests, functional tests and functional specs, you might carve that down to 50%, in other words, expect to spend another $200k over the lifespan of the application. If you've followed an Agile development approach, you should be able to achieve those criteria. Your choice.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/10/waterfall-cost-bugs-launch/">Under the Waterfall: The Cost of Bugs After Launch</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/05/800-on-your-mat/' rel='bookmark' title='Permanent Link: 800 on Your Math SAT, Software Development and Bugs'>800 on Your Math SAT, Software Development and Bugs</a></li><li><a href='http://www.pathf.com/blogs/2009/06/agile-development-improves-roi-%e2%80%93-but-rfp-processes-are-stuck-in-waterfall/' rel='bookmark' title='Permanent Link: Agile Development Improves ROI – But RFP Processes are Stuck in Waterfall.'>Agile Development Improves ROI – But RFP Processes are Stuck in Waterfall.</a></li><li><a href='http://www.pathf.com/blogs/2009/06/cucumber-rocks-but-its-not-a-replacement-for-unit-tests/' rel='bookmark' title='Permanent Link: Cucumber Rocks &#8211; But it&#8217;s not a replacement for unit tests'>Cucumber Rocks &#8211; But it&#8217;s not a replacement for unit tests</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/10/waterfall-cost-bugs-launch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OO Design Patterns that can make a difference</title>
		<link>http://www.pathf.com/blogs/2009/10/oo-design-patterns-difference/</link>
		<comments>http://www.pathf.com/blogs/2009/10/oo-design-patterns-difference/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 16:53:32 +0000</pubDate>
		<dc:creator>Karthik Muthupalaniappan</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[Gang of Four]]></category>
		<category><![CDATA[OOP]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4235</guid>
		<description><![CDATA[
Design patterns. I think they are the one of the most intriguing areas of object oriented application design and development. There are so many out there that can puzzle you each and every time you try to take a crack at them (I can name a few of them that I still can't figure how [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/10/oo-design-patterns-difference/">OO Design Patterns that can make a difference</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2007/01/using_design_pa/' rel='bookmark' title='Permanent Link: Using Design Patterns'>Using Design Patterns</a></li><li><a href='http://www.pathf.com/blogs/2008/10/defining-interaction-patterns-on-time-in-flex-agile-development/' rel='bookmark' title='Permanent Link: Defining RIA Interaction Patterns on time in Flex Agile Development'>Defining RIA Interaction Patterns on time in Flex Agile Development</a></li><li><a href='http://www.pathf.com/blogs/2009/02/bean-of-the-devil-why-getters-setters-and-such-are-evil/' rel='bookmark' title='Permanent Link: Bean of the Devil: Why Getters, Setters and Such are Evil'>Bean of the Devil: Why Getters, Setters and Such are Evil</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div style="float:right;padding:10px;"><img title="building_blocks" src="http://www.pathf.com/blogs/wp-content/uploads/2009/10/building_blocks.jpg" border="0" alt="" width="250" height="250" align="absMiddle" /></div>
<p><a href="http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29" rel="nofollow" title="Design Patterns"  target="_blank">Design patterns</a>. I think they are the one of the most intriguing areas of object oriented application design and development. There are so many out there that can puzzle you each and every time you try to take a crack at them (I can name a few of them that I still can't figure how they are to be used or implemented).  But a thing that most programmers would agree is if used wisely and appropriately, these design patterns can provide really powerful benefits that can enhance one's programming experience and also the software that is being built. There are several patterns I have used/implemented in my projects that I think are awesome. I ll touch upon how I used some of them and why every Object oriented programmer needs to master them.</p>
<p><span id="more-4235"></span></p>
<p><strong>Factory Method </strong></p>
<p><a href="http://en.wikipedia.org/wiki/Factory_method" rel="nofollow" title="This"  target="_blank">This</a> must be one of the most commonly used patterns out there. We indeed have used it the most in our projects. The crux of this pattern is essentially delegating the task of creating objects to a method that basically takes in information about what kind of object is to be created etc.  There were a number of instances in the applications we built where there was a base domain object that had a bunch of derived types. In most of these instances, single method/interface that returned the base domain object type but created instances of the appropriate the derived type was used. The benefit? The object creator is decoupled from the users of the objects and makes the code more reusable and maintainable.</p>
<p><strong>Dependency Injection</strong></p>
<p>I m absolutely in love with <a href="http://en.wikipedia.org/wiki/Dependency_injection" rel="nofollow" title="this"  target="_blank">this </a>design pattern. It is a very effective design approach in my opinion. What it advocates is lazy/runtime injection of object dependencies or modules instead of hard-wiring them.  There are a number of third party dependency injection frameworks like <a href="http://www.springframework.net/" rel="nofollow" title="Spring"  target="_blank">Spring</a>, <a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=ObjectBuilder" rel="nofollow" title="Object Builder"  target="_blank">Object Builder</a> etc that let you implement dependency injection out of the box. A very simple example of how I used this on a recent project : Consider the application needs to talk to a remote service for what ever reason. We also built out a fake service that mocked the real remote service to enable us to test/run the application when the real one was unavailable or being developed. We needed a way for the application to swap dependencies (basically the real service and the fake one) at run time. Spring .NET's dependency injection enabled me to implement this.</p>
<p><strong>Command Pattern</strong></p>
<p>A really powerful <a href="http://en.wikipedia.org/wiki/Command_pattern" rel="nofollow"  target="_blank">design pattern</a> that helped us a great deal in implementing an undo/redo feature  in one of our desktop application projects. The idea is pretty simple. Every operation that you want to be undone/redone is encapsulated in the form of a command object that contains information about the method or delegate that needs to be invoked for that operation, parameters for that method or delegate, the undo method etc. Every time, any such command is executed, it is pushed to an undo stack. If the command needs to be undone, it is simply popped off the stack and the undo method is invoked. There is a redo stack for handling redo operations.</p>
<p>Other patterns that I have used widely are the Singleton, Facade, MVC, Pure MVC and MVP. These are effective in their own different ways.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/10/oo-design-patterns-difference/">OO Design Patterns that can make a difference</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2007/01/using_design_pa/' rel='bookmark' title='Permanent Link: Using Design Patterns'>Using Design Patterns</a></li><li><a href='http://www.pathf.com/blogs/2008/10/defining-interaction-patterns-on-time-in-flex-agile-development/' rel='bookmark' title='Permanent Link: Defining RIA Interaction Patterns on time in Flex Agile Development'>Defining RIA Interaction Patterns on time in Flex Agile Development</a></li><li><a href='http://www.pathf.com/blogs/2009/02/bean-of-the-devil-why-getters-setters-and-such-are-evil/' rel='bookmark' title='Permanent Link: Bean of the Devil: Why Getters, Setters and Such are Evil'>Bean of the Devil: Why Getters, Setters and Such are Evil</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/10/oo-design-patterns-difference/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Software Development: Importance Doesn&#8217;t Always Equal Effort</title>
		<link>http://www.pathf.com/blogs/2009/09/software-development-importance-equal-effort/</link>
		<comments>http://www.pathf.com/blogs/2009/09/software-development-importance-equal-effort/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 19:35:21 +0000</pubDate>
		<dc:creator>Dietrich Kappe</dc:creator>
				<category><![CDATA[Agile Project Management]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[User Experience Design]]></category>
		<category><![CDATA[uxd]]></category>
		<category><![CDATA[software product strategy]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4049</guid>
		<description><![CDATA[
I've worked on more than a few software projects over the decades and one of my favorite little misunderstandings is the Importance versus Effort disconnect. That's where non-experts assume that because a particular part of a software system is more important than another, it must also take more effort to develop. That is rarely the [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/software-development-importance-equal-effort/">Software Development: Importance Doesn&#8217;t Always Equal Effort</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/08/software-development-construction-analogy/' rel='bookmark' title='Permanent Link: Software Development and the Construction Analogy'>Software Development and the Construction Analogy</a></li><li><a href='http://www.pathf.com/blogs/2009/08/software-development-wasted-motion/' rel='bookmark' title='Permanent Link: Software Development and Wasted Motion'>Software Development and Wasted Motion</a></li><li><a href='http://www.pathf.com/blogs/2009/06/digging-a-hole-and-covering-it-with-leaves-the-software-development-version/' rel='bookmark' title='Permanent Link: Digging a Hole and Covering it with Leaves &#8212; The Software Development Version'>Digging a Hole and Covering it with Leaves &#8212; The Software Development Version</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div style="padding:10px;"><img class="alignright size-full wp-image-4052" title="Importance" src="http://www.pathf.com/blogs/wp-content/uploads/2009/09/Importance1.png" alt="Importance" width="406" height="189" /></div>
<p>I've worked on more than a few software projects over the decades and one of my favorite little misunderstandings is the Importance versus Effort disconnect. That's where non-experts assume that because a particular part of a software system is more important than another, it must also take more effort to develop. That is rarely the case and, in fact, importance -- however that is defined -- is rarely a driving factor in determining effort or cost. This sort of misconception can result in some planning and budgeting mistakes, sometimes to comic or even tragic effect.</p>
<p>To illustrate, I can point to a trading system that I worked on (the names have been changed to protect the innocent). The average size of a transaction in this system was over $1 billion in 1990's money. The part of the system that resolved the transactions was really really "important," but the part of the system that allowed an application helpdesk to support users by seeing what their user's saw cost 60% more to develop. That's right, an "unimportant" helpdesk module was more expensive and took more effort and cost more than the "important" backend that handled billions of dollars a day.</p>
<p><span id="more-4049"></span></p>
<p>There are lots of reasons why one system can be more expensive to develop than another. One recurring and important reason is the amount of user interface your application has. By that I mean a user interface for a real flesh and blood user. One of the reasons that the above trading platform had this mismatch was that while the helpdesk app had lots of user interface requirements, the trading backend had almost none. It dealt almost exclusively with other systems through API's and data interchange protocols.</p>
<p>There's lots of empirical evidence that interfaces for humans are more difficult and expensive to develop that those for machines, but there's also a fair amount of theory on the subject under the heading of <a href="http://en.wikipedia.org/wiki/Human%E2%80%93computer_interaction" rel="nofollow"  target="_blank">Human Computer Interaction (HCI)</a>. If you spend a little bit of time reading the referenced Wikipedia article, you'll see that there's an awful lot of cognitive psychology involved. In short, you can't just ask a human being to do those things that a software system can do -- parse 2GB of data, remember it forever and make decisions within a millisecond. No, human beings have limited memory, can't act very fast, have ambitions and emotions and all sorts of human frailties. All of these have to be accounted and designed for.</p>
<p>(We ourselves use an approach known as <a href="http://www.pathf.com/services/user-experience-design/" rel="nofollow"  target="_blank">User Experience Design (UXD)</a> to tackled this terrain. It's by no means the only approach, but it's stood us in good stead.)</p>
<p>So, what are the key takeaways for product managers and owners? Don't make emotional budgeting decisions. Just because your backend which is doing all of the financial transactions is important, doesn't mean that it should cost more than the nifty website that helps users buy your product or service. Listen to your developers and analysts on the subject of effort and cost, then make rational decisions based on what is essential for your business.</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/software-development-importance-equal-effort/">Software Development: Importance Doesn&#8217;t Always Equal Effort</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/08/software-development-construction-analogy/' rel='bookmark' title='Permanent Link: Software Development and the Construction Analogy'>Software Development and the Construction Analogy</a></li><li><a href='http://www.pathf.com/blogs/2009/08/software-development-wasted-motion/' rel='bookmark' title='Permanent Link: Software Development and Wasted Motion'>Software Development and Wasted Motion</a></li><li><a href='http://www.pathf.com/blogs/2009/06/digging-a-hole-and-covering-it-with-leaves-the-software-development-version/' rel='bookmark' title='Permanent Link: Digging a Hole and Covering it with Leaves &#8212; The Software Development Version'>Digging a Hole and Covering it with Leaves &#8212; The Software Development Version</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/09/software-development-importance-equal-effort/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User Centric Design &#8211; the Who, What, Why and How of a Feature</title>
		<link>http://www.pathf.com/blogs/2009/09/user-centric-design/</link>
		<comments>http://www.pathf.com/blogs/2009/09/user-centric-design/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 14:57:40 +0000</pubDate>
		<dc:creator>Alice Toth</dc:creator>
				<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[User Experience Design]]></category>
		<category><![CDATA[uxd]]></category>
		<category><![CDATA[user centric design]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4030</guid>
		<description><![CDATA[ photo credit: Sinaasappeljuice
At Pathfinder, we do our best to help our clients experience the software through the eyes of the user. Defining a feature includes explaining who will be using it, what they need to accomplish, why they need to accomplish it and how they’ll actually do it.
We start with personas (who) — they [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/user-centric-design/">User Centric Design &#8211; the Who, What, Why and How of a Feature</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/03/it-starts-with/' rel='bookmark' title='Permanent Link: It Starts with the User Story'>It Starts with the User Story</a></li><li><a href='http://www.pathf.com/blogs/2009/03/definition-of-a-feature/' rel='bookmark' title='Permanent Link: Definition of a Feature (Given … When … Then)'>Definition of a Feature (Given … When … Then)</a></li><li><a href='http://www.pathf.com/blogs/2008/04/the-user-interf/' rel='bookmark' title='Permanent Link: The User Interface is the Root of All Evil'>The User Interface is the Root of All Evil</a></li></ol>]]></description>
			<content:encoded><![CDATA[<div style="float:right;padding:10px"><a href="http://www.flickr.com/photos/9778240@N07/3860294453/" rel="nofollow"  title="---19" target="_blank"><img src="http://farm3.static.flickr.com/2475/3860294453_ab9dc4f999_m.jpg" alt="---19" border="0" style="border:4px double #999;"/></a><br /><small><a href="http://creativecommons.org/licenses/by-sa/2.0/" rel="nofollow"  title="Attribution-ShareAlike License" target="_blank"><img src="http://www.pathf.com/blogs/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" rel="nofollow"  target="_blank">photo</a> credit: <a href="http://www.flickr.com/photos/9778240@N07/3860294453/" rel="nofollow"  title="Sinaasappeljuice" target="_blank">Sinaasappeljuice</a></small></div>
<p>At Pathfinder, we do our best to help our clients experience the software through the eyes of the user. Defining a feature includes explaining who will be using it, what they need to accomplish, why they need to accomplish it and how they’ll actually do it.</p>
<p>We start with personas (who) — they define the user base and let us identify the primary users whose needs we should focus on, which in turn drives the feature list. Personas also bring the human element into software development. Rather than using a vague term such as actor or user, terms that can easily be dismissed, we now have Myrna from Accounting, a numbers guru who is the primary user of the new software. Myrna is not so easily dismissed, especially once her needs and goals are identified.</p>
<p>We move onto user stories, all of which are written from the point of view of the personas:<span id="more-4030"></span></p>
<blockquote><p>As Accounting, Myrna needs to quickly extract time expended per project so she can calculate the actual costs.</p></blockquote>
<p>Our user stories state both the user’s need (what) and business benefit (why) from meeting that need. The story is no longer some randomly floating idea; it’s now anchored to an identified user and given context within the scope of the business by specifically stating how the user and/or company can benefit from this feature. </p>
<p>From here we move onto acceptance criteria (how), i.e., defining how the user expects the feature to work. Since they’re written from the point of view of the user, they’re easy to understand and aid in experiencing the feature before it’s built:</p>
<blockquote><p>
<strong>Given</strong> that Myrna has clicked on Reports > Costing Report<br />
&nbsp;&nbsp; And that the costing report page has successfully displayed<br />
<strong>When</strong> Myrna selects one or more projects<br />
&nbsp;&nbsp; And she specifies a date range<br />
&nbsp;&nbsp; And submits the request<br />
<strong>Then</strong> the costing report will show the hours by project for each resource for the specified date range</p></blockquote>
<p>Even without delving into the details (e.g., how does the user select one or more projects), you still have a pretty good idea of how someone will interact with this feature; i.e., you’ve established a foundation that interaction designers and information architects can now build on. Acceptance criteria, btw, are also great at uncovering any user story you might have missed, such as: does Myrna need to save this report after it’s generated? </p>
<p>Designing software with a user centric point of view begins with defining the Who (Personas), What (User Stories : User Needs), Why (User Stories : Business Benefits) and How (Acceptance Criteria) of feature stories. With this knowledge, we can then create a well-designed feature that we’re confident will meet the users’ needs. </p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/user-centric-design/">User Centric Design &#8211; the Who, What, Why and How of a Feature</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/03/it-starts-with/' rel='bookmark' title='Permanent Link: It Starts with the User Story'>It Starts with the User Story</a></li><li><a href='http://www.pathf.com/blogs/2009/03/definition-of-a-feature/' rel='bookmark' title='Permanent Link: Definition of a Feature (Given … When … Then)'>Definition of a Feature (Given … When … Then)</a></li><li><a href='http://www.pathf.com/blogs/2008/04/the-user-interf/' rel='bookmark' title='Permanent Link: The User Interface is the Root of All Evil'>The User Interface is the Root of All Evil</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/09/user-centric-design/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Getting a team over the fear of daily scrums</title>
		<link>http://www.pathf.com/blogs/2009/09/team-hump-daily-scrums/</link>
		<comments>http://www.pathf.com/blogs/2009/09/team-hump-daily-scrums/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 19:23:53 +0000</pubDate>
		<dc:creator>Michael Walkden</dc:creator>
				<category><![CDATA[Agile Coaching]]></category>
		<category><![CDATA[Agile Project Management]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[Web Application Development]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=4014</guid>
		<description><![CDATA[If my previous post about the value of agile meetings over traditional status meetings got you interested, I want to share a common pattern of behavior I often see from teams trying scrums for the first time.  Hopefully you can avoid these and save yourself some time.
For new teams to Agile the statuses given [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/team-hump-daily-scrums/">Getting a team over the fear of daily scrums</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/07/we-don%e2%80%99t-have-time-for-all-of-these-meetings/' rel='bookmark' title='Permanent Link: We don’t have time for all of these meetings!'>We don’t have time for all of these meetings!</a></li><li><a href='http://www.pathf.com/blogs/2009/09/agile-2009-reminded-team-leadership-2/' rel='bookmark' title='Permanent Link: Agile 2009: A reminder of why each team needs leadership'>Agile 2009: A reminder of why each team needs leadership</a></li><li><a href='http://www.pathf.com/blogs/2009/08/building-high-performance-agile-team-assume-hit/' rel='bookmark' title='Permanent Link: Building a High Performance Agile Team:  Assume You Will Be a One Hit Wonder'>Building a High Performance Agile Team:  Assume You Will Be a One Hit Wonder</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img class="right" title="3209617149_93555248c2" src="http://www.pathf.com/blogs/wp-content/uploads/2009/09/3209617149_93555248c2.jpg" alt="3209617149_93555248c2" width="276" height="183" />If my <a href="http://www.pathf.com/blogs/2009/07/we-don%E2%80%99t-have-time-for-all-of-these-meetings/">previous post about the value of agile meetings</a> over traditional status meetings got you interested, I want to share a common pattern of behavior I often see from teams trying scrums for the first time.  Hopefully you can avoid these and save yourself some time.</p>
<p>For new teams to Agile the statuses given in scrums are generally … well … lies.  “Yep, on time. No obstacles.”  I was once told by a colleague that, “You can’t hide on an Agile team.”  This is true.  However, this kind of exposure can be extremely uncomfortable for individuals to get used to.  In traditional software teams people aren’t used to their peers asking them direct questions and paying close attention to their progress.<br />
<span id="more-4014"></span><br />
With some time and gentle nudging the team will begin to enjoy the help and support offered by a fully engaged team.  The next pattern I see teams fall into is to try and solve any, and all problems, right in the scrum.  When you hear about teams having trouble getting the scrum to fit into less than 15 minutes this is often what’s going on.  When this happens the scrum master needs to remind participants that they can discuss the issues outside the scrum.</p>
<p>Once the scrums are moving well the next objective will be to facilitate good communication.  Now that the team is really sharing and isn’t trying to solve the problem in the scrum, they usually offer to write an email/document/dissertation about the problem and possible solutions to get feedback.  They usually do this to allow the others some space and to dive into the details.  Why not just talk immediately after the scrum?  Everybody is in the same place and thinking about the problem.  If you are pair programming already, why not troubleshoot the issue together?  If you aren’t <a href="http://www.pathf.com/blogs/tag/pair-programming/">pair programming start</a>!  If you really can’t fix the problem immediately due to a pressing issue you should schedule a meeting as soon as possible.  If an issue is brought up in a scrum it is a blocking issue impacting the whole team’s ability to deliver the iteration on time. Its time to get all the help you can.  Good communication can help a team solve an issue in a matter of hours rather than days.</p>
<p>The result: Everybody’s time frees up and the “extra” meetings imposed by “agile” result in less meetings overall.</p>
<p><strong>Photo Credit</strong>:<br />
<a href="http://www.flickr.com/photos/publicdomainphotos/3209617149/" rel="nofollow" >photos8.com</a> under a Creative Commons Attribution License</p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/team-hump-daily-scrums/">Getting a team over the fear of daily scrums</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/07/we-don%e2%80%99t-have-time-for-all-of-these-meetings/' rel='bookmark' title='Permanent Link: We don’t have time for all of these meetings!'>We don’t have time for all of these meetings!</a></li><li><a href='http://www.pathf.com/blogs/2009/09/agile-2009-reminded-team-leadership-2/' rel='bookmark' title='Permanent Link: Agile 2009: A reminder of why each team needs leadership'>Agile 2009: A reminder of why each team needs leadership</a></li><li><a href='http://www.pathf.com/blogs/2009/08/building-high-performance-agile-team-assume-hit/' rel='bookmark' title='Permanent Link: Building a High Performance Agile Team:  Assume You Will Be a One Hit Wonder'>Building a High Performance Agile Team:  Assume You Will Be a One Hit Wonder</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/09/team-hump-daily-scrums/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Launched: Vu360 PDF Annotation and Markup Application</title>
		<link>http://www.pathf.com/blogs/2009/09/launched-vu360-pdf-annotation-markup-application/</link>
		<comments>http://www.pathf.com/blogs/2009/09/launched-vu360-pdf-annotation-markup-application/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 15:18:16 +0000</pubDate>
		<dc:creator>Bernhard Kappe</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Pathfinder General]]></category>
		<category><![CDATA[Pathfinder News]]></category>
		<category><![CDATA[Rich Internet Apps]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[2d cad]]></category>
		<category><![CDATA[adobe acrobat]]></category>
		<category><![CDATA[annotation]]></category>
		<category><![CDATA[desktop application development]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[pdf application development]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=3548</guid>
		<description><![CDATA[
Please install Flash to see this video player!
// 
Vu360, the latest Pathfinder product, was launched by our client the Blue Book of Construction earlier last month.
It’s an Internet-tethered desktop application that enables easy viewing, markup and takeoff of PDF and TIFF documents for the architecture, engineering and construction industry.   Some of the features [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/launched-vu360-pdf-annotation-markup-application/">Launched: Vu360 PDF Annotation and Markup Application</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/07/launched-rapid-reporting-employment-chek/' rel='bookmark' title='Permanent Link: Launched:  Rapid Reporting Employment Chek'>Launched:  Rapid Reporting Employment Chek</a></li><li><a href='http://www.pathf.com/blogs/2007/10/the-desktop-app/' rel='bookmark' title='Permanent Link: The Desktop Application is Dead&#8230;Almost'>The Desktop Application is Dead&#8230;Almost</a></li><li><a href='http://www.pathf.com/blogs/2009/05/are-you-building-and-application-or-a-antique-web-framework/' rel='bookmark' title='Permanent Link: Are You Building an Application or an Antique Web Framework?'>Are You Building an Application or an Antique Web Framework?</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><script src="/sites/pfd/js/swfobject.js" type="text/javascript"></script></p>
<div id="player">Please install Flash to see this video player!</div>
<p><script type="text/javascript">// <![CDATA[
  var so = new SWFObject('/sites/pfd/flash/player.swf','mpl','470','368','9'); so.addParam('allowscriptaccess','always'); so.addParam('allowfullscreen','true'); so.addParam('flashvars','&file=http://media1.www.pathfinder-development.com/assets/bluebook/vu360qt2.mov&image=http://www.pathf.com/sites/pfd/img/cases/videocover.png'); so.write('player'); so.write('player');
// ]]&gt;</script></p>
<p><a href="http://www.thebluebook.com/vu360.shtml"rel="nofollow" >Vu360</a>, the latest Pathfinder product, was launched by our client the Blue Book of Construction earlier last month.</p>
<p>It’s an Internet-tethered desktop application that enables easy viewing, markup and takeoff of PDF and TIFF documents for the architecture, engineering and construction industry.   Some of the features include:<br />
<span id="more-3548"></span></p>
<ul>
<li>Blueprints for projects seeking bids can be downloaded and annotated from the online plan room.</li>
<li>Once a contractor is done annotating and marking up a blueprint, the file is easily saved back to the online plan room for viewing by the developer, general contractor or architect.</li>
<li>While work is underway, the blueprint is saved on a users local computer. The tool does not require a persistent Internet connection to function.</li>
<li>The tool includes a multitude of notations and graphing unique to the construction industry.</li>
<li>The tool makes it easy to perform item counts and calculate length, perimeter, area and volume simply by drawing a square, line, cube or irregular, ad-hoc polygon directly on the blueprint.</li>
<li>Sub-contractors can search BPM Select, Blue Book's repository of contracting supplies and products within the tool. When quoting installation of flooring, for example, a sub-contractor can link to a product sheet for the specific type of wood flooring they propose to use.</li>
</ul>
<p>So far it’s been getting rave reviews from customers, including this one:</p>
<blockquote><p>"VU360 is an incredible tool, and it’s sooooo easy to use.  I cut back on my “job” estimate by at least 80% actual time.  That would have been enough to impress me but, on top of that, I was able to export the figures to Excel."</p></blockquote>
<p>We like those kinds of reviews.  They tell us we’re doing something right when we design and develop software.</p>
<p>Vu360 is free, so if you’d like to download it and play with it, just go to <a href="http://www.thebluebook.com/vu360.shtml"rel="nofollow" >the Blue Book</a> and check it out.  We’d love to get your feedback, so let us know what you think of it.</p>
<p>You can also check out the case study in our <a href="http://www.pathf.com/showcase/success-stories/”" rel="nofollow" >showcase</a> for more project details and agile development goodness. </p>
<p>Our client, the Blue Book of Building and Construction also has a <a href="http://thebluebookmedia.com/vu360_v2/" rel="nofollow" >40 minute tutorial for Vu360</a>.</p>
<p>Related Services:  <a href="http://www.pathf.com/services/pdf-application-development/" rel="nofollow" >PDF Application Development</a>, <a href="http://www.pathf.com/services/technology-expertise/.net-development/" rel="nofollow" >.Net Application Development</a>, <a href="http://www.pathf.com/services" rel="nofollow" >Custom Software Development</a>, <a href="http://www.pathf.com/services/user-experience-design/" rel="nofollow" >User Experience Design</a></p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/launched-vu360-pdf-annotation-markup-application/">Launched: Vu360 PDF Annotation and Markup Application</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/07/launched-rapid-reporting-employment-chek/' rel='bookmark' title='Permanent Link: Launched:  Rapid Reporting Employment Chek'>Launched:  Rapid Reporting Employment Chek</a></li><li><a href='http://www.pathf.com/blogs/2007/10/the-desktop-app/' rel='bookmark' title='Permanent Link: The Desktop Application is Dead&#8230;Almost'>The Desktop Application is Dead&#8230;Almost</a></li><li><a href='http://www.pathf.com/blogs/2009/05/are-you-building-and-application-or-a-antique-web-framework/' rel='bookmark' title='Permanent Link: Are You Building an Application or an Antique Web Framework?'>Are You Building an Application or an Antique Web Framework?</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/09/launched-vu360-pdf-annotation-markup-application/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Agile Development and Play: Understanding the Value</title>
		<link>http://www.pathf.com/blogs/2009/09/agile-development-play-understanding/</link>
		<comments>http://www.pathf.com/blogs/2009/09/agile-development-play-understanding/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 21:03:02 +0000</pubDate>
		<dc:creator>Blake Smith</dc:creator>
				<category><![CDATA[Agile Project Management]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[play at work]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=3949</guid>
		<description><![CDATA[My Addiction
I'm addicted to TED talks. There have been many nights where I've stayed up way too late watching them. For those who are unaware, TED is a yearly conference where world leaders and thinkers gather to share their ideas and spread their passions and work. I'm someone who gets fired up listening to outher [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/agile-development-play-understanding/">Agile Development and Play: Understanding the Value</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/09/agile-2009-reminded-team-leadership-2/' rel='bookmark' title='Permanent Link: Agile 2009: A reminder of why each team needs leadership'>Agile 2009: A reminder of why each team needs leadership</a></li><li><a href='http://www.pathf.com/blogs/2010/01/whats-agile-box/' rel='bookmark' title='Permanent Link: What’s the value of Agile out of the box?'>What’s the value of Agile out of the box?</a></li><li><a href='http://www.pathf.com/blogs/2009/11/advice-developers-understanding-business/' rel='bookmark' title='Permanent Link: Advice to Developers: Try Understanding the Business'>Advice to Developers: Try Understanding the Business</a></li></ol>]]></description>
			<content:encoded><![CDATA[<h3>My Addiction</h3>
<p>I'm addicted to <a href="http://www.ted.com" rel="nofollow" >TED</a> talks. There have been many nights where I've stayed up way too late watching them. For those who are unaware, TED is a yearly conference where world leaders and thinkers gather to share their ideas and spread their passions and work. I'm someone who gets fired up listening to outher people's passions. I love hearing about what gets other people excited, what makes them tick, what makes them want to share with the world.</p>
<p>One of the <a href="http://www.youtube.com/watch?v=RjwUn-aA0VY" rel="nofollow" >more interesting</a> talks I've listened to recently is by Tim Brown at the Serious Play conference of 2008. Tim talks about how the elements of play can improve creativity and productivity in our workplace and life. I found the lessons learned from this talk something that can be very directly applied to software development, and taking some of these nuggets of teaching can help me be a better thinker and worker.</p>
<p><span id="more-3949"></span></p>
<h3>Playing a Game</h3>
<p>The first exercise Tim does is to play a game with the audience. It's quite a<br />
sophisticated adult thing to stand up on a stage and spend 20 minutes talking<br />
about play, but it's another thing entirely to actually do it. Brown has the<br />
audience perform several games. One of them: Drawing a picture of your neighbor<br />
in 30 seconds. He does this primarily to demonstrate how adults are cultured to<br />
shy away from play. After all, a civilized adult does not seriously use crayons<br />
and markers to do any real work right? After this exercise he talks about how<br />
when this test is given to adults, they often apologize to their neighbor, feel<br />
embarassed, or otherwise don't enjoy the play at all. When the same test is<br />
given to a group of children, they don't complain or apologize: They simply do<br />
it and have fun with it. This teaches us a valuable lesson about how our<br />
culture is geared toward play. When we're younger we go from schools that look<br />
like this:</p>
<div>
<div><a href="http://www.flickr.com/photos/59432011@N00/3839524477/" rel="nofollow" title="overview"  target="_blank"><img src="http://farm3.static.flickr.com/2520/3839524477_541224aa9b.jpg" border="0" alt="overview" /></a><br />
<a href="http://creativecommons.org/licenses/by/2.0/" rel="nofollow" title="Attribution License"  target="_blank"><img src="http://www.pathf.com/blogs/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" rel="nofollow"  target="_blank">photo</a> credit: <a href="http://www.flickr.com/photos/59432011@N00/3839524477/" rel="nofollow" title="LizMarie"  target="_blank">LizMarie</a></div>
<p><a href="http://www.flickr.com/photos/59432011@N00/3840326276/" rel="nofollow" title="LizMarie"  target="_blank"></a></div>
<p>And slowly we evolve to workplaces that look like this:</p>
<div><a href="http://www.flickr.com/photos/65844741@N00/3276856306/" rel="nofollow" title="The office"  target="_blank"><img src="http://farm4.static.flickr.com/3431/3276856306_61991481bd.jpg" border="0" alt="The office" /></a></div>
<div><a href="http://www.photodropper.com/photos/" rel="nofollow"  target="_blank"><img src="http://www.pathf.com/blogs/wp-content/plugins/photo-dropper/images/cc.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" />photo</a> credit: <a href="http://www.flickr.com/photos/65844741@N00/3276856306/" rel="nofollow" title="Wyscan"  target="_blank">Wyscan</a></div>
<div>That's not really too exciting of a thought, is it?</div>
<p>This reminds me of the game that my colleague <a href="http://www.pathf.com/blogs/author/mwalkden/">Michael Walkden</a> played at Agile<br />
Conference 2009. Participants are asked to build a building out of LEGOS, and<br />
through this play, they discover some of the benefits of working with Agile<br />
methods. When Michael was telling me more about his experiences playing this<br />
game with audiences one of the questions I asked him was, "Don't you think if<br />
we did this exercise with a client it'd be hard to convince them to take<br />
playing a game seriously? Most people would see it as childish." To which he<br />
responded yes, sometimes it can be difficult to convince a client to play and<br />
'get into it'. There's a certain level of discomfort for play that we can have<br />
as adults.  We fear looking stupid, making a fool of ourselves, or getting too<br />
caught up in what we think is the business of children. Michael went on to tell<br />
me that once a client gains a certain level of comfort with playing, the value<br />
gained from doing these kinds of exercises is enormous.</p>
<h3>Modeling a Problem</h3>
<p>Brown goes on to talk about the benefits of rapidly building a physical model<br />
for a problem.  When we were children we learned by touching and doing.  This doesn't change when we are adults.  No matter how good we are at thinking abstractly as humans,<br />
there's something about having a tangible model to work with that makes<br />
us feel more connected to the work we're doing. Something to touch, feel<br />
and hold brings great benefits to our creativity and imagination. This<br />
reminds me of a <a href="http://www.infoq.com/presentations/katz-couchdb-and-me" rel="nofollow" >neat talk</a> I watched by Damien Katz, the creator of CouchDB.  Among other things, Damien talks about when he switched to have CouchDB use HTTP and JSON what he felt like for the first time he could 'touch the data':</p>
<blockquote><p>"I was so excited when I first started testing it out. Because a big<br />
goal with CouchDB was that you would be able to feel like you could <strong>touch<br />
your data</strong>, like it was right there in your hand. There're certain tools<br />
where you have this responsiveness and you don't feel like there's all these<br />
layers between you that are obfuscating what you're trying to get<br />
at."</p></blockquote>
<p>Isn't this something we should set as a design goal for all of our software<br />
projects? Shouldn't we strive to have our users feel like they're in control of<br />
the computer, and not the other way around? When we use tools that allow us to<br />
quickly and easily touch our ideas, we reap the benefits of not only enjoying<br />
our work more, but being able to flesh it out more quickly and productively.</p>
<p>In Brown's talk, he tells a story about how a group of surgeons were trying to<br />
come up with a solution for a new surgical tool. They spent a good amount of time saying something like, "It's sort of like this tool, combined with this other one, but it also has some elements of this tool." Finally, one of the surgeons went away for a few minutes, and came back with a white-board marker taped to a handle and said, "Is it something like this?", to which everyone agreed, "Yeah, that's exactly what we need!". We see this often with software. "It's kind of like Facebook with a mixture of<br />
Wikipedia, but it focuses around people who study animals professionally."<br />
Wouldn't it be more powerful to have a working prototype to show what it is? To<br />
let people play with it, to let them touch it and experience it rather than<br />
spend hours in meetings talking about what it? When you're stuck in a waterfall<br />
process, it can be easy to get lost in the weeds of abstraction and<br />
uncertainty. Spending months designing specs and not making anything<br />
'touchable' can be a long death march that leaves all parties unfulfilled and<br />
unsatisfied. Let's spend our time making things that are fun to touch and play<br />
with instead.</p>
<h3>Moving Forward</h3>
<p>So I throw this out as a question to everyone. What do you think about the<br />
current state of play in the software industry? We've seen the power of play,<br />
experimentation and fun in the free software world. Do you think it's relevant<br />
in commercial software industry? If so, how can we break down barriers of<br />
discomfort in order to encourage our teams to grow and play?</p>
<p>Related Services:<br />
<a href="http://www.pathf.com/services/how-we-do-it/" rel="nofollow" >Agile Development</a>, <a href="http://www.pathf.com/services" rel="nofollow" >Custom Software Development</a></p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/agile-development-play-understanding/">Agile Development and Play: Understanding the Value</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/09/agile-2009-reminded-team-leadership-2/' rel='bookmark' title='Permanent Link: Agile 2009: A reminder of why each team needs leadership'>Agile 2009: A reminder of why each team needs leadership</a></li><li><a href='http://www.pathf.com/blogs/2010/01/whats-agile-box/' rel='bookmark' title='Permanent Link: What’s the value of Agile out of the box?'>What’s the value of Agile out of the box?</a></li><li><a href='http://www.pathf.com/blogs/2009/11/advice-developers-understanding-business/' rel='bookmark' title='Permanent Link: Advice to Developers: Try Understanding the Business'>Advice to Developers: Try Understanding the Business</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/09/agile-development-play-understanding/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Error Messages &amp; Usability</title>
		<link>http://www.pathf.com/blogs/2009/09/error-messages-and-usability/</link>
		<comments>http://www.pathf.com/blogs/2009/09/error-messages-and-usability/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 12:12:37 +0000</pubDate>
		<dc:creator>Alice Toth</dc:creator>
				<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[User Experience Design]]></category>
		<category><![CDATA[uxd]]></category>
		<category><![CDATA[error handling]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=3897</guid>
		<description><![CDATA[I was starting up one of the Adobe apps the other day when this somewhat troublesome message was displayed:

Ack! On the one hand, good for them for alerting me that an error had occurred. On the other hand, what's up with that message?  I had no idea what I could do beyond clicking ok [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/error-messages-and-usability/">Error Messages &#038; Usability</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2007/04/oops_our_bad/' rel='bookmark' title='Permanent Link: Oops! Our Bad.'>Oops! Our Bad.</a></li><li><a href='http://www.pathf.com/blogs/2008/01/usability-revie/' rel='bookmark' title='Permanent Link: Usability review: Amtrak.com checkout process'>Usability review: Amtrak.com checkout process</a></li><li><a href='http://www.pathf.com/blogs/2008/03/stop-reload-err/' rel='bookmark' title='Permanent Link: Stop, Reload, Error Loading Page 404: Converting Web 1.0 to 2.0'>Stop, Reload, Error Loading Page 404: Converting Web 1.0 to 2.0</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>I was starting up one of the Adobe apps the other day when this somewhat troublesome message was displayed:</p>
<p style="text-align: center;"><img src="http://www.pathf.com/blogs/wp-content/uploads/2009/09/error_adobe.gif" alt="error_adobe" title="error_adobe" width="478" height="199"  /></p>
<p>Ack! On the one hand, good for them for alerting me that an error had occurred. On the other hand, what's up with that message?  I had no idea what I could do beyond clicking ok (and after reading the message I wasn't sure all was ok). A bit unnerving, but it did get me thinking about how applications deal with error messages.</p>
<p>The idea that non-technical users will be viewing error messages is one of those things that tends to be overlooked. You’re so focused on getting all the features up and working that  dealing with errors on the presentation layer are often left out of both design and implementation.</p>
<p>Even if time is crunched on a project, however, here are three scenarios you should always cover in a user-friendly fashion: <span id="more-3897"></span></p>
<h2>Validation Errors</h2>
<p>At a minimum, submitted forms should validate that all required fields have data and that certain data (such as email addresses) are properly formatted. My personal preference is to catch the obvious errors (e.g., empty fields) using client-side validation which gives the user instant feedback and allows them to correct their errors before actually submitting the form. Regardless of whether you’re using client or server side validation, however, you should still alert the user as to what went wrong  — without using technical lingo — and highlight the fields containing the errors.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-3900" title="error_formSubmit" src="http://www.pathf.com/blogs/wp-content/uploads/2009/09/error_formSubmit.gif" alt="error_formSubmit" width="500" height="250" /></p>
<h2>404 Errors</h2>
<p>Design a useful “page not found” page. Make it as clever or funny as you like, but make sure you give the user alternative ways to find the page they were looking for so they don’t feel so helpless. This can be done by providing a site map, a search box or a list of top-level categories.</p>
<p style="text-align: center;"><img style="border: 1px solid #999; padding: 3px;" title="error_404" src="http://www.pathf.com/blogs/wp-content/uploads/2009/09/error_404.gif" alt="error_404" width="500" height="176" /></p>
<h2>500 Errors</h2>
<p>When a page blows up, unless you’re in a development environment you never want the user to see the stack trace. So, make sure that (a) there is a page in place to display when a 500 error occurs, (b) the app knows to display that page and (c) it gives useful feedback to the user. </p>
<p style="text-align: center;"><img style="text-align: center;" title="error_500_designed" src="http://www.pathf.com/blogs/wp-content/uploads/2009/09/error_500_designed.gif" alt="error_500_designed" width="500" height="125"  /></p>
<p>In an ideal world, of course, errors never occur (ha!) but should they happen, your job is to let the user know what went wrong and provide guidance on the next steps. Time spent up front designing good error handling will alleviate user frustration down the line.</p>
<p>Related Services:  <a href="http://www.pathf.com/services/user-experience-design/" rel="nofollow" >User Experience Design</a>, <a href="http://www.pathf.com/services" rel="nofollow" >Custom Software Development</a></p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/error-messages-and-usability/">Error Messages &#038; Usability</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2007/04/oops_our_bad/' rel='bookmark' title='Permanent Link: Oops! Our Bad.'>Oops! Our Bad.</a></li><li><a href='http://www.pathf.com/blogs/2008/01/usability-revie/' rel='bookmark' title='Permanent Link: Usability review: Amtrak.com checkout process'>Usability review: Amtrak.com checkout process</a></li><li><a href='http://www.pathf.com/blogs/2008/03/stop-reload-err/' rel='bookmark' title='Permanent Link: Stop, Reload, Error Loading Page 404: Converting Web 1.0 to 2.0'>Stop, Reload, Error Loading Page 404: Converting Web 1.0 to 2.0</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/09/error-messages-and-usability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Does your project have Code Ownership Culture?</title>
		<link>http://www.pathf.com/blogs/2009/09/does-your-project-have-code-ownership-culture/</link>
		<comments>http://www.pathf.com/blogs/2009/09/does-your-project-have-code-ownership-culture/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 18:09:03 +0000</pubDate>
		<dc:creator>Sharad Jain</dc:creator>
				<category><![CDATA[Agile Coaching]]></category>
		<category><![CDATA[Agile Project Management]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Pathfinder General]]></category>
		<category><![CDATA[Product Strategy]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[Technologies and Platforms]]></category>
		<category><![CDATA[Web Application Development]]></category>
		<category><![CDATA[uxd]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=3889</guid>
		<description><![CDATA[ Code Ownership is a well known term in software development. Depending on how you define it, it may be a good thing or bad. When a developer sees code-ownership as him/her owning a piece of codebase that only he/she understands enough to make changes, it is generally a bad thing. It is only when [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/does-your-project-have-code-ownership-culture/">Does your project have Code Ownership Culture?</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/11/what-makes-a-good-requirement-document-for-an-agile-project/' rel='bookmark' title='Permanent Link: What makes a good requirement document for an agile project'>What makes a good requirement document for an agile project</a></li><li><a href='http://www.pathf.com/blogs/2009/03/data-driven-design-and-the-culture-at-google/' rel='bookmark' title='Permanent Link: Data Driven Design and the Culture at Google'>Data Driven Design and the Culture at Google</a></li><li><a href='http://www.pathf.com/blogs/2009/05/code-coverage-why/' rel='bookmark' title='Permanent Link: Code Coverage &#8211; Why?'>Code Coverage &#8211; Why?</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://farm1.static.flickr.com/232/462561247_dd3e4e5f57.jpg" rel="nofollow" ><img class="alignleft" style="float: left; margin: 5px;" title="Open Source Code Ownership" src="http://farm1.static.flickr.com/232/462561247_dd3e4e5f57.jpg" alt="Open Source Code Ownership" width="166" height="214" /></a><a href="http://c2.com/cgi/wiki?CodeOwnership" rel="nofollow" > Code Ownership</a> is a well known term in software development. Depending on how you define it, it may be a good thing or bad. When a developer sees code-ownership as him/her owning a piece of codebase that only he/she understands enough to make changes, it is generally a bad thing. It is only when everybody is free to modify the code with a sense of responsibility that he/she should leave the code cleaner than how they found it, it is a good thing. In my view, code-ownership is a good thing when viewed as <em>a responsibilty</em> as opposed to <em>a right</em>. I view it as a <strong>Collective Code Ownership</strong> where code is not owned by a single person or pair but is owned by an entire team.</p>
<p>So, the question is: How to determine if your project/organization has that collective code ownership culture. And what team members (including managers <img src='http://www.pathf.com/blogs/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ) can do to create/encourage it.</p>
<p><strong>Does your project have collective code ownership?</strong><br />
Here are few things you may want to ask yourself to determine if your organization/project has collective ownership culture.</p>
<p><span id="more-3889"></span></p>
<ul>
<li>Are tools like continuous integration and testing, code coverage and code metrics considered nice to have but not necessary?</li>
<li>Is the project release schedule determined and then enforced with little or no involvement from developers?</li>
<li>Is failure to slip on iteration stories viewed as failure on developer's part?</li>
<li>Does your velocity seem to decrease with time?</li>
<li>Do developers talk about my module, your module instead of our module?</li>
<li>Do members aspire to leave your project and join other project?</li>
</ul>
<p>If answers to these questions are mostly in the "yes" range, you may have a code ownership problem.</p>
<p><strong>What's a developer to do?</strong><br />
Be a good citizen, strive to write good code. Leave any codebase cleaner than how you found it. Developer need to tame their tendency to guard their masterpiece code from other people's changes, infact welcome those. If you really really hate some design, try to pair with the person who concieved it and influence his thought process. This might be slow and furstrating but it will be better in the long term. If you rip out everything you don't like, you will end up owning everything. Remembership, it is a collective ownership. Code is very fluid, which means when coding, you can always take short-cuts to get stuff you are responsible for, done. Or you can take ownership and fix the general code quality (even if it take a little longer). These are all things that a developer is in control.</p>
<p>However, there are stuff that are beyond developer's control. It is hard to continue to be a good citzen when other members don't feel the same way and when your boss is holding your neck against a timeline. This is where managers can play a role.</p>
<p><strong>Why do manager care about code ownership?</strong><br />
A manager cares about the quality of deliverable, team morale, attrition and deadline. An agile project manager can remote obstacles that prevent such culture from growing. Managers need to cultivate a culture where developers are not hard pressed to deliver on timeline at the cost of quality, atleast not often. Managers need to develop a culture of trust where developers are free to over-estimate stuff (atleast from their point of view). Hire team players overs smart but solo players.</p>
<p><strong>What's a Architect to do?</strong><br />
Managers can't judge the quality of code and hence success of code ownership culture. Yes, there are code metrics like code coverage that attempt to quantify the code quality but those are not precise measures. Here is where architects can make a different. By architect, I mean anybody how has the direct or indirect authority to influence other developers and modify their behavior. Install tools like continuous integration, testing, code coverage and various other metrics. Encourage pair programming to reduce bus number and prevent knowledge silos (the bad side of code-ownership).</p>
<p>In summary, it could be a good thing when a team feels <em>responsible</em> when the project when in it and <em>proud</em> that they were part of a project that completed successfully. They owned the outcome of it, good or bad.</p>
<p>Related Services:  <a href="http://www.pathf.com/services/how-we-do-it/" rel="nofollow" >Agile Development</a>, <a href="http://www.pathf.com/services" rel="nofollow" >Custom Software Development</a></p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/does-your-project-have-code-ownership-culture/">Does your project have Code Ownership Culture?</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2008/11/what-makes-a-good-requirement-document-for-an-agile-project/' rel='bookmark' title='Permanent Link: What makes a good requirement document for an agile project'>What makes a good requirement document for an agile project</a></li><li><a href='http://www.pathf.com/blogs/2009/03/data-driven-design-and-the-culture-at-google/' rel='bookmark' title='Permanent Link: Data Driven Design and the Culture at Google'>Data Driven Design and the Culture at Google</a></li><li><a href='http://www.pathf.com/blogs/2009/05/code-coverage-why/' rel='bookmark' title='Permanent Link: Code Coverage &#8211; Why?'>Code Coverage &#8211; Why?</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/09/does-your-project-have-code-ownership-culture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile 2009: A reminder of why each team needs leadership</title>
		<link>http://www.pathf.com/blogs/2009/09/agile-2009-reminded-team-leadership-2/</link>
		<comments>http://www.pathf.com/blogs/2009/09/agile-2009-reminded-team-leadership-2/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 14:44:25 +0000</pubDate>
		<dc:creator>Michael Walkden</dc:creator>
				<category><![CDATA[Agile Coaching]]></category>
		<category><![CDATA[Agile Project Management]]></category>
		<category><![CDATA[Business Rules Engines]]></category>
		<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Development Best Practices]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[high-performance teams]]></category>

		<guid isPermaLink="false">http://www.pathf.com/blogs/?p=3879</guid>
		<description><![CDATA[ Last week I presented at Agile 2009 a workshop for those new to Agile entitled: The Agile Game: An Experiential Workshop.  I love this workshop because it allows those new to Agile to experience the rhythm of an agile project in action and learn first hand many of the practices in a non-threatening, [...]<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/agile-2009-reminded-team-leadership-2/">Agile 2009: A reminder of why each team needs leadership</a></p>



Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/08/building-high-performance-agile-team-assume-hit/' rel='bookmark' title='Permanent Link: Building a High Performance Agile Team:  Assume You Will Be a One Hit Wonder'>Building a High Performance Agile Team:  Assume You Will Be a One Hit Wonder</a></li><li><a href='http://www.pathf.com/blogs/2009/09/team-hump-daily-scrums/' rel='bookmark' title='Permanent Link: Getting a team over the fear of daily scrums'>Getting a team over the fear of daily scrums</a></li><li><a href='http://www.pathf.com/blogs/2010/01/whats-agile-box/' rel='bookmark' title='Permanent Link: What’s the value of Agile out of the box?'>What’s the value of Agile out of the box?</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img class="right" title="Throw the book out!" src="http://www.pathf.com/blogs/wp-content/uploads/2009/08/kdk_0691.jpg" alt="Throw the book out!" width="323" height="251" /> Last week I presented at Agile 2009 a workshop for those new to Agile entitled: <a href="http://www.agile2009.org/node/476" rel="nofollow" >The Agile Game: An Experiential Workshop</a>.  I love this workshop because it allows those new to Agile to experience the rhythm of an agile project in action and learn first hand many of the practices in a non-threatening, non-technical, and fun way.  I have used this workshop for clients a number of times and it works.  The feedback from this session was overwhelmingly positive too.  Comments such as, “Fun game, good to demonstrate how teams do and don’t work together” and “Very, very, practical way to get concept through” are always great to see.</p>
<p>Recently I had been wondering if Project Management was a questionable career choice.  I have spent the last couple of years surrounded by talented individuals who seemed to be able to work fine without me.  The test is always when the project manager (me) goes on vacation.  Has the team fallen apart? Are they forgetting all of the practices they were doing?  Is stuff getting delivered to clients?  I was finding that I had a backlog of chores when I came back, but overall things were still humming along.</p>
<p><span id="more-3879"></span></p>
<p>The Agile 2009 session reminded me of the road I took from software developer to a project manager and why.  Early in career I generally found project managers provided little value.  I asked a lot of questions and I caused a lot of trouble for those “managing” me. Eventually somebody said the equivalent of, “If you think you could do it better, do it.”  No introduction to the subject tells you that, simply, good project managers are good leaders.  They optimize what resources they have available, point out areas for improvement, and occasionally carry a stick.  An Agile project manager, freed from the burdens of heavy process, can’t stay busy with chores long and must produce a good team quickly.   I found that through focusing on how the team could work best together and gently pushing during <a href="http://www.pathf.com/blogs/2009/06/agile-fundamentals-the-feedback-loop/">retrospectives</a>,  I left a trail of happy teams on successful projects.</p>
<p>It may not be the most glamorous job, but each team needs one.  To continue the sports theme from <a href="http://www.pathf.com/blogs/2009/08/building-high-performance-agile-team-assume-hit/">my last post</a>:  Most teams populated by very talented athletes.  However, its take a good coach to help each of them reach potential together as a team.  Now, back to leading my team.</p>
<p>Related Services:  <a href="http://www.pathf.com/services/how-we-do-it/" rel="nofollow" >Agile Development</a>, <a href="http://www.pathf.com/services" rel="nofollow" >Custom Software Development</a></p>
<p><hr>
<a href="http://www.pathf.com/">Pathfinder Development - creating innovative software that builds business value. </a>
<br/><br/><a href="http://www.pathf.com/blogs/2009/09/agile-2009-reminded-team-leadership-2/">Agile 2009: A reminder of why each team needs leadership</a></p>


<p>Related posts:<ol><li><a href='http://www.pathf.com/blogs/2009/08/building-high-performance-agile-team-assume-hit/' rel='bookmark' title='Permanent Link: Building a High Performance Agile Team:  Assume You Will Be a One Hit Wonder'>Building a High Performance Agile Team:  Assume You Will Be a One Hit Wonder</a></li><li><a href='http://www.pathf.com/blogs/2009/09/team-hump-daily-scrums/' rel='bookmark' title='Permanent Link: Getting a team over the fear of daily scrums'>Getting a team over the fear of daily scrums</a></li><li><a href='http://www.pathf.com/blogs/2010/01/whats-agile-box/' rel='bookmark' title='Permanent Link: What’s the value of Agile out of the box?'>What’s the value of Agile out of the box?</a></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pathf.com/blogs/2009/09/agile-2009-reminded-team-leadership-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 2.310 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-12 05:10:37 -->
