<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Declan Whelan</title>
	
	<link>http://dpwhelan.com/blog</link>
	<description>Delivering better software</description>
	<lastBuildDate>Tue, 08 Sep 2009 19:39:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/DeclanWhelan" /><feedburner:info uri="declanwhelan" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Building a Learning Culture on Agile Teams</title>
		<link>http://feedproxy.google.com/~r/DeclanWhelan/~3/KlinoiVnSu4/</link>
		<comments>http://dpwhelan.com/blog/agile/building-a-learning-culture-on-agile-teams/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 20:11:39 +0000</pubDate>
		<dc:creator>dwhelan</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Leadership]]></category>

		<guid isPermaLink="false">http://dpwhelan.com/blog/?p=71</guid>
		<description><![CDATA[I was thrilled to present at Agile 2009 on building a learning culture on agile teams. This post is a short summary of the presentation. You can view the presentation on slideshare. The image below is a mindmap of the presentation:

The main point is that in order to embrace change:
We should strive not only to [...]]]></description>
			<content:encoded><![CDATA[<p>I was thrilled to present at Agile 2009 on building a learning culture on agile teams. This post is a short summary of the presentation. You can view <a title="Learning is key to agile success" href="http://www.slideshare.net/dwhelan/agile-learning-from-agile-2009">the presentation on slideshare</a>. The image below is a mindmap of the presentation:</p>
<p><img class="size-full wp-image-74" title="Building a Learning Culture Mindmap" src="http://dpwhelan.com/blog/wp-content/uploads/2009/09/Building-a-Learning-Culture-Mindmap.jpg" alt="Building a Learning Culture Mindmap" width="428" height="353" /></p>
<p>The main point is that in order to embrace change:</p>
<blockquote><p><em>We should strive not only to deliver value today but simultaneously increase our capacity to deliver value tomorrow.</em></p></blockquote>
<dl id="attachment_76" class="wp-caption alignleft" style="width: 316px;">
<dt class="wp-caption-dt"><a href="http://www.stevenmsmith.com/my-articles/article/the-satir-change-model.html"><img class="size-full wp-image-76 alignleft" title="satir change model" src="http://dpwhelan.com/blog/wp-content/uploads/2009/09/satir-change-model.jpg" alt="Source: http://www.stevenmsmith.com/my-articles/article/the-satir-change-model.html" width="306" height="222" /></a></dt>
</dl>
<p>There are so many dimensions we can learn: our products, our customers, our domain, new technologies and so on in order to embrace change and deliver value. Now, embracing change is supported by learning and so we can consider change models for insights.  Even though the change model from <a title="Viriginia Satir" href="http://en.wikipedia.org/wiki/Virginia_Satir">Virginia Satir</a> is modeled on dysfunctional families I believe the applicability to agile teams is sound. I often find the limiting factors in building high performance agile teams are the team members mental models and the team&#8217;s ability to work together effectively.<br />
</br><br />
To build our capacity to embrace change and achieve ever higher levels of performance we need to build <span style="text-decoration: underline;">learning teams</span>. This is one of the five disciplines that <a title="Peter Senge" href="http://en.wikipedia.org/wiki/Peter_Senge">Peter Senge</a> discusses in his classic text <a title="The Fifth Discipline" href="http://en.wikipedia.org/wiki/The_Fifth_Discipline">The Fifth Discipline</a>. I find two main challenges that the five disciplines present to agile teams. First, much of the book applies to larger organizations than agile teams and second the book is short on practical tools to help learning teams. The supporting text,  <a href="http://www.fieldbook.com/FDF/FDF.html">The Fifth Discipline Fieldbook</a> and other tools primarily from <a href="http://pragprog.com/titles/dlret/agile-retrospectives">Agile Retrospectives</a> and <a href="http://www.amazon.com/Fearless-Change-Patterns-Introducing-Ideas/dp/0201741571">Fearless Change</a> provide activities and simulations that you can use with agile teams.</p>
<p></br><br />
</br><br />
<img class="alignright size-full wp-image-86" title="Learning map" src="http://dpwhelan.com/blog/wp-content/uploads/2009/09/Learning-map1.jpg" alt="Learning map" width="345" height="196" /><br />
<br/><br />
Now, I want to bridge the game from the principles of team learning to the practices by way of an agile learning map. I built a learning map based on on the Chinese symbol for learning. It provides four key areas that are necessary for building a safe learning culture:</p>
<ol>
<li><strong>Intentional </strong>- Proactively plan and retrospect on learning activities</li>
<li><strong>Incremental </strong>- Focus on small incremental. progressive learning</li>
<li><strong>Infrastructure </strong>- Build a workspace structure that supports effective learning</li>
<li><strong>Individual Safety</strong> &#8211; Make sure people feel safe to learn</li>
</ol>
<p>The <a href="http://www.slideshare.net/dwhelan/agile-learning-from-agile-2009">presentation</a> provides a more detailed map of activities and patterns you can use in each of the above areas.</p>
<p>Building the teams learning muscle is key to long-term agile success!</p>
<img src="http://feeds.feedburner.com/~r/DeclanWhelan/~4/KlinoiVnSu4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dpwhelan.com/blog/agile/building-a-learning-culture-on-agile-teams/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://dpwhelan.com/blog/agile/building-a-learning-culture-on-agile-teams/</feedburner:origLink></item>
		<item>
		<title>What I Learned Programming With the Stars</title>
		<link>http://feedproxy.google.com/~r/DeclanWhelan/~3/VBFTu6XP7n0/</link>
		<comments>http://dpwhelan.com/blog/agile/what-i-learned-programming-with-the-stars/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 00:56:21 +0000</pubDate>
		<dc:creator>dwhelan</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://dpwhelan.com/blog/?p=52</guid>
		<description><![CDATA[I had a great experience pairing with Patrick Wilson-Welsh at Programming with the Stars at Agile 2009 in Chicago. We were ousted in the first round but we had a blast. And I learned a few things along the way:
You should make your tests expressive
We were deducted points for not including the word &#8220;should&#8221; in [...]]]></description>
			<content:encoded><![CDATA[<p>I had a great experience pairing with <a title="Patrick Wilson-Welsh blog" href="http://patrickwilsonwelsh.com/">Patrick Wilson-Welsh</a> at <a href="http://agile2009.agilealliance.org/programmingwiththestars">Programming with the Stars</a> at Agile 2009 in Chicago. We were ousted in the first round but we had a blast. And I learned a few things along the way:</p>
<p><strong>You <em>should</em> make your tests expressive</strong></p>
<p>We were deducted points for not including the word &#8220;should&#8221; in our tests. I do strive for this but find that this &#8220;rule&#8221;, as with any rule, can be too restrictive. Liz Keough suggests that the word &#8220;should&#8221; should be the first word in your test method name. Getting tired of the word &#8220;should&#8221; yet?</p>
<p>I strive for expressive test method names that clearly state a design criteria for the class under test. So my preference is to make the test method name a full sentence. And of course I try to include the word &#8220;should&#8221; in it. Using this approach I find it hard to craft a test name beginning with the word &#8220;should&#8221; that reads like an assertion rather than a question. So, I rarely start my tests with the word &#8220;should&#8221;. Also, I break from production code styling and use underscores so that test method names are as readable as possible:</p>
<p>As Brian Marick would say, &#8220;an example would be good right about now&#8221;. So, if we have a test like this:</p>
<div class="codesnip-container" >
<div class="java codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1">@Test</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">public</span> <span class="kw4">void</span> handleZero<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; assertEquals<span class="br0">&#40;</span>0, Closest.<span class="me1">closestToZero</span><span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw4">int</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="br0">&#123;</span>0,<span class="sy0">-</span>2,4<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
</div>
<p>Then a refactoring like shown below provides a more expressive test:</p>
<div class="codesnip-container" >
<div class="java codesnip" style="font-family:monospace;">
<ol>
<li class="li1">
<div class="de1">@Test</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">public</span> <span class="kw4">void</span> zero_should_be_closer_to_zero_than_any_other_integer<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; assertEquals<span class="br0">&#40;</span>0, Closest.<span class="me1">closestToZero</span><span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw4">int</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="br0">&#123;</span>0,<span class="sy0">-</span>2,4<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
</div>
<p><strong>Don&#8217;t write new conditional production logic without a new failing test</strong></p>
<p>Jim Newkirk deducted a point because we added an &#8216;if&#8217; statement without a new failing test. This was new to me although it makes perfect sense and I appreciate the insight from Jim.</p>
<p>So, if you are about to write new conditional production code without a new failing test &#8230; stop! If you are currently trying to make an existing test pass then try to get it to pass without a conditional statement. Otherwise, update the test so that the new conditional logic is not required. Once you get green with this you should then write the failing test that will require the conditional logic you were about to add. Now, you can add the conditional logic sufficient to get the test green.</p>
<p><strong>You can&#8217;t write much code in 3.5 minutes</strong></p>
<p>Patrick and I were test-driving a method that would return the integer that was closest to zero in an input array. We knew from writing the initial code and refactoring it what a clean code implementation could look like. And, as if often the case, the refactored code looked obvious in hindsight. We decided that given the time restrictions we would write our initial code towards the refactored code as it reflected an <a href="http://en.wikipedia.org/wiki/Intentional_programming">intentional programming</a> approach. Bad idea, we were deducted points for thinking too far ahead and then not having any significant refactoring.</p>
<p>So, if you are in this position, write some really, really simple code and allow time for simple refactoring &#8230; and let intentional programming code emerge from the refactoring.</p>
<p><strong>Don&#8217;t go first</strong></p>
<p>Just sayin&#8217; &#8230;</p>
<p><strong>Hanging out with agile journeymen is mental adrenalin</strong></p>
<p>Having an opportunity to talk code with people like Liz Keough, Jim Newkirk, Brian Marick and some top-notch agile coders was a real buzz. Hanging out with Patrick Wilson-Welsh and the cool <a href="http://www.pillartechnology.com/">Pillar</a> dudes was also a blast. If you get a chance sign-up for this at Agile 2010!</p>
<p>Many thanks to Joshua Kerievsky, Jeff Nielsen and <a href="http://www.industriallogic.com/">Industrial Logic</a> for sponsoring this event.</p>
<img src="http://feeds.feedburner.com/~r/DeclanWhelan/~4/VBFTu6XP7n0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dpwhelan.com/blog/agile/what-i-learned-programming-with-the-stars/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://dpwhelan.com/blog/agile/what-i-learned-programming-with-the-stars/</feedburner:origLink></item>
		<item>
		<title>Parallel Tracks for Agile and User Experience</title>
		<link>http://feedproxy.google.com/~r/DeclanWhelan/~3/VSxXJBCJ1wQ/</link>
		<comments>http://dpwhelan.com/blog/agile/parallel-tracks-for-agile-and-user-experience/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 21:51:43 +0000</pubDate>
		<dc:creator>dwhelan</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://dpwhelan.com/blog/?p=46</guid>
		<description><![CDATA[Earlier this year I participated on a panel hosted by the IxDA Toronto Group. There were some great insights into getting Agile and User Experience (UX) practices working together. In this post I just want to mention one of them.
Consider having a parallel track for UX work such as prototyping that gathers information for upcoming [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier this year I participated on a <a href="http://groups.google.com/group/ixda-toronto/browse_thread/thread/bc63236dab134c10">panel</a> hosted by the IxDA Toronto Group. There were some great insights into getting Agile and User Experience (UX) practices working together. In this post I just want to mention one of them.</p>
<div id="attachment_48" class="wp-caption alignnone" style="width: 510px"><a href="http://dpwhelan.com/blog/wp-content/uploads/2009/02/development-and-ux-tracks1.jpg"><img class="size-full wp-image-48" title="Parallel Tracks" src="http://dpwhelan.com/blog/wp-content/uploads/2009/02/development-and-ux-tracks1.jpg" alt="Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Copyright 2006, ACM." width="500" height="213" /></a><p class="wp-caption-text">Parallel Tracks</p></div>
<p>Consider having a parallel track for UX work such as prototyping that gathers information for upcoming iterations. You can also use this track to evaluate the output from the previous development sprint.</p>
<p>Desirée Sy from Autodesk (formerly Alias) describes this eloquently in an article she wrote for the Journal of Usability Studies, “<a href="http://upassoc.org/upa_publications/jus/2007may/agile-ucd.html">Adapting Usability Investigations for Agile User-centered Design</a>”. This paper is intended for a User Experience professional looking to adopt Agile practices. The above image is from Desirée&#8217;s paper (see notes below).</p>
<p>Lynn Miller, also from Autodesk, pointed to paper she wrote for  the Agile 2005 conference, “<a href="http://agileproductdesign.com/useful_papers/miller_customer_input_in_agile_projects.pdf">Case Study of Customer Input For a Successful Product</a>”. This paper is intended for Agile teams looking to benefit from User Centered Design practices. It also discusses the parallel track concept.</p>
<hr />
Image above is from The Journal of Usability Studies, Vol. 2, Issue 3, May 2007, pp. 118 and reuse is subject to the following:</p>
<blockquote><p><em>Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Copyright 2006, ACM.</em></p></blockquote>
<img src="http://feeds.feedburner.com/~r/DeclanWhelan/~4/VSxXJBCJ1wQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dpwhelan.com/blog/agile/parallel-tracks-for-agile-and-user-experience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://dpwhelan.com/blog/agile/parallel-tracks-for-agile-and-user-experience/</feedburner:origLink></item>
		<item>
		<title>Berteig Consulting Agile Clinic</title>
		<link>http://feedproxy.google.com/~r/DeclanWhelan/~3/TcEk59jf3A8/</link>
		<comments>http://dpwhelan.com/blog/agile/berteig-consulting-agile-clinic/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 21:15:52 +0000</pubDate>
		<dc:creator>dwhelan</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Coaching]]></category>

		<guid isPermaLink="false">http://dpwhelan.com/blog/?p=42</guid>
		<description><![CDATA[Berteig Consulting has recently launched the Agile Clinic (TM) for companies to diagnose their Agile implementation and provide customized remedies. The goals of the one day clinic are to help organizations:


fine tune its agile practices and become effective and more efficient
become hyper-effective by overcoming some of your hardest challenges
determine which agile practices will help you [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.berteigconsulting.com/">Berteig Consulting</a> has recently launched the <a href="http://www.agileclinic.com/">Agile Clinic</a> (TM) for companies to diagnose their Agile implementation and provide customized remedies. The goals of the one day clinic are to help organizations:</p>
<ul>
<blockquote>
<li>fine tune its agile practices and become effective and more efficient</li>
<li>become hyper-effective by overcoming some of your hardest challenges</li>
<li>determine which agile practices will help you the most</li>
<li>find existing barriers in the current situation, offer solutions for your specific needs</li>
<li>examine your teams, your processes and your organization to find opportunities for improvement</li>
</blockquote>
</ul>
<p>This is an interesting approach as it leverages the expertise of external independent agile gurus without the expense of an agile coaching engagement. Companies could schedule periodic clinics and would provide regular &#8220;agile checkups&#8221; in a cost-effective way.</p>
<p>Of course, the challenge here will be for the clinic coaches to garner sufficient context prior to the clinics to make sure that their diagnoses and remedies are tuned to the situation at hand. The model includes some case analysis prior to the clinic so the success will in part depend on how well the situation is communicated and appreciated by the coaches prior to the clinic.</p>
<p>I am very interested to see if this model works both from a client perspective and from a coaches perspective.</p>
<img src="http://feeds.feedburner.com/~r/DeclanWhelan/~4/TcEk59jf3A8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dpwhelan.com/blog/agile/berteig-consulting-agile-clinic/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://dpwhelan.com/blog/agile/berteig-consulting-agile-clinic/</feedburner:origLink></item>
		<item>
		<title>Adopting or Adapting Agility</title>
		<link>http://feedproxy.google.com/~r/DeclanWhelan/~3/83JuwExwnIA/</link>
		<comments>http://dpwhelan.com/blog/agile/adopting-or-adapting-agility/#comments</comments>
		<pubDate>Tue, 07 Oct 2008 04:36:22 +0000</pubDate>
		<dc:creator>dwhelan</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[adaption]]></category>
		<category><![CDATA[adoption]]></category>

		<guid isPermaLink="false">http://dpwhelan.com/blog/?p=35</guid>
		<description><![CDATA[I often come across people who wonder how they can adopt agile practices. This is a fair question and I often spend some time explaining that agility is not really an important goal. Agility is just a means to an end and that end is to deliver better business value. I like this goal because [...]]]></description>
			<content:encoded><![CDATA[<p>I often come across people who wonder how they can adopt agile practices. This is a fair question and I often spend some time explaining that agility is not really an important goal. Agility is just a means to an end and that end is to <em><strong>deliver better business value</strong></em>. I like this goal because it is can never be fully realized &#8211; there are always ways to get better.</p>
<p>I recently listened to a webinar by ThoughtWorks on <a href="http://agilemanager.blogspot.com/2008/09/agile-readiness-assessment-webinar-19.html">agile readiness assessment</a> and I am reading <a href="http://www.amazon.com/Agile-Adoption-Patterns-Roadmap-Organizational/dp/0321514521">Agile Adoption Patterns: A Roadmxap to Organizational Success</a>, by Amr Elssamadisy, © 2009 Pearson Education Inc.. Both of these are excellent resources and I decided to write a white paper that combines agile assessment with adoption and adaption. I included adaption because some agile teams reach a plateau and need an approach that pushes them through to the next level.</p>
<p class="MsoNormal" style="MARGIN: 0in 0in 10pt"><span style="font-size: small; font-family: Calibri;">Adopting or adapting agile practices requires a strategy that aligns your team’s agile goals with your overall business goals. </span></p>
<p><a href="http://dpwhelan.com/blog/wp-content/uploads/2008/10/agile-adoption-and-adaption.jpg"><img class="alignnone size-medium wp-image-36" title="agile-adoption-and-adaption" src="http://dpwhelan.com/blog/wp-content/uploads/2008/10/agile-adoption-and-adaption-300x199.jpg" alt="" width="300" height="199" /></a></p>
<p>Please feel free to download the <a href="http://dpwhelan.com/services/transitions.htm">white paper</a> and let me know what you think!</p>
<img src="http://feeds.feedburner.com/~r/DeclanWhelan/~4/83JuwExwnIA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dpwhelan.com/blog/agile/adopting-or-adapting-agility/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://dpwhelan.com/blog/agile/adopting-or-adapting-agility/</feedburner:origLink></item>
		<item>
		<title>Agile Product Design and Development Workshop with Jeff Patton</title>
		<link>http://feedproxy.google.com/~r/DeclanWhelan/~3/Gh_sgNRGOMw/</link>
		<comments>http://dpwhelan.com/blog/agile/agile-product-design-and-development-workshop-with-jeff-patton/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 04:02:56 +0000</pubDate>
		<dc:creator>dwhelan</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[agile product design]]></category>
		<category><![CDATA[Jeff Patton]]></category>

		<guid isPermaLink="false">http://dpwhelan.com/blog/?p=34</guid>
		<description><![CDATA[I am really looking forward to helping Jeff deliver his workshop on Agile Product Design and Development on September 10th in Kitchener.
Jeff brings a fresh perspective on agile development focusing more on product definition and user experience; areas that are not usually well covered in agile books and training materials. He advocates passionately for end [...]]]></description>
			<content:encoded><![CDATA[<p>I am really looking forward to helping Jeff deliver his workshop on Agile Product Design and Development on September 10th in Kitchener.</p>
<p>Jeff brings a fresh perspective on agile development focusing more on product definition and user experience; areas that are not usually well covered in agile books and training materials. He advocates passionately for end users and weaves insightful user experience practices with agile practices to arrive at a solid approach to agile product design and development.</p>
<p>If you would like to find out more about the workshop or register for it please check out the event website at: <a title="Agile Product Design and Development Workshop with Jeff Patton" href="http://agileproductdesign.eventbrite.com/">http://agileproductdesign.eventbrite.com</a>.</p>
<p>If you can&#8217;t make the workshop but would like to hear Jeff, he will also be providing a 90 talk entitled <em><strong>Embrace Uncertainty:Strategies for an on-time delivery in an uncertain world</strong> </em>which you can register for at the <a title="Jeff Patton Talk : Embrace Uncertainty:Strategies for an on-time delivery in an uncertain world" href="http://www.communitech.ca/en/events/event_list.aspx">Communitech Events web site</a>.</p>
<img src="http://feeds.feedburner.com/~r/DeclanWhelan/~4/Gh_sgNRGOMw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dpwhelan.com/blog/agile/agile-product-design-and-development-workshop-with-jeff-patton/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://dpwhelan.com/blog/agile/agile-product-design-and-development-workshop-with-jeff-patton/</feedburner:origLink></item>
		<item>
		<title>PostRank – A .NET API for AideRSS PostRank</title>
		<link>http://feedproxy.google.com/~r/DeclanWhelan/~3/mAXmPU96-k8/</link>
		<comments>http://dpwhelan.com/blog/software-development/postrank-a-net-api-for-aiderss-postrank/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 22:02:01 +0000</pubDate>
		<dc:creator>dwhelan</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[AideRSS]]></category>
		<category><![CDATA[PostRank]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Simple Design]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://dpwhelan.com/blog/?p=26</guid>
		<description><![CDATA[AideRSS provides a service that ranks online content such as RSS feeds, blog posts and so on. I have always been impressed with AideRSS and wanted to educate myself with writing REST interface logic, ASP.Net and Web 2.0 in general. AideRSS also provides a PostRank API to their service so I decided to write a [...]]]></description>
			<content:encoded><![CDATA[<p><a title="AideRSS" href="http://www.aiderss.com/">AideRSS</a> provides a service that ranks online content such as RSS feeds, blog posts and so on. I have always been impressed with AideRSS and wanted to educate myself with writing REST interface logic, ASP.Net and Web 2.0 in general. AideRSS also provides a <a title="PostRank" href="http://www.postrank.com/home.html">PostRank API</a> to their service so I decided to write a .NET client wrapper for this API to make it easier to use. You can download the API including source and binaries from here:</p>
<p><a href="http://dpwhelan.com/blog/wp-content/uploads/2008/09/postrank-10.zip"><img class="alignnone size-medium wp-image-33" title="download" src="http://dpwhelan.com/blog/wp-content/uploads/2008/09/download.jpg" alt="Download" width="42" height="38" />postrank-10.zip</a></p>
<h3>Why Did I Write This?</h3>
<p>My goal with the API beyond learning some new stuff was to leverage <a title="TDD - Wikipedia" href="http://en.wikipedia.org/wiki/Test-driven_development">TDD</a> and allow emergent design to surface an underlying domain model. I wanted to avoid a simple static functional wrapper for the API and instead provide a design that would allow more powerful usages of the PostRank API. I wanted TDD to help evolve a reasonable domain model which would include classes to represent feeds, posts and so on. To do this I systematically applied the XP rules of simplicity:</p>
<ol>
<li>Testable &#8211; has a test</li>
<li>Communicative &#8211; classes and methods are intent revealing</li>
<li>Factored &#8211; no duplication of logic or structure</li>
<li>Minimal &#8211; minimum number of classes and methods</li>
</ol>
<p>While I am not an expert on RSS or the PostRank API I am quite happy with the resulting API. The classes that emerged make sense, at least to me! There is also a safety net of 105 unit tests that I can use for future refactoring and enhancements.</p>
<h3>What Does it Do?</h3>
<p>The API provides full access to the underlying PostRank API. Besides creating unit tests for the code I also included a demo command line application and a demo ASP.Net project.</p>
<p>The demo command line program takes a single command line argument which is the RSS feed you are interested in and defaults to Ilya Grigorik&#8217;s blog:</p>
<p><a href="http://dpwhelan.com/blog/wp-content/uploads/2008/09/postrank-command-line-output1.jpg"><img class="alignnone size-full wp-image-28" title="PostRank Command Line Output" src="http://dpwhelan.com/blog/wp-content/uploads/2008/09/postrank-command-line-output1.jpg" alt="PostRank Command Line Output" width="500" height="331" /></a></p>
<p>The ASP.Net project provides an interactive UI allowing you to enter an RSS feed and see AideRSS PostRank features such as top posts in a given time period. The screen shots below show some of the features of the API:</p>
<p><a href="http://dpwhelan.com/blog/wp-content/uploads/2008/09/top-posts-of-the-year.jpg"><img class="alignnone size-thumbnail wp-image-29" title="Top Posts of the Year" src="http://dpwhelan.com/blog/wp-content/uploads/2008/09/top-posts-of-the-year-150x150.jpg" alt="Top Posts of the Year" width="150" height="150" /> </a><a href="http://dpwhelan.com/blog/wp-content/uploads/2008/09/top-posts-of-the-month.jpg"><img class="alignnone size-thumbnail wp-image-30" title="Top Posts of the Month" src="http://dpwhelan.com/blog/wp-content/uploads/2008/09/top-posts-of-the-month-150x150.jpg" alt="Top Posts of the Month" width="150" height="150" /> </a><a href="http://dpwhelan.com/blog/wp-content/uploads/2008/09/great-posts.jpg"><img class="alignnone size-thumbnail wp-image-31" title="Great Posts" src="http://dpwhelan.com/blog/wp-content/uploads/2008/09/great-posts-150x150.jpg" alt="Great Posts" width="150" height="150" /></a></p>
<p>Note that there is an alternate .NET API written by William Spaetzel that you can get from <a href="http://spaetzel.com/postranksharp">http://spaetzel.com/postranksharp</a>.</p>
<p>I welcome any feedback you may have on this API.</p>
<img src="http://feeds.feedburner.com/~r/DeclanWhelan/~4/mAXmPU96-k8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dpwhelan.com/blog/software-development/postrank-a-net-api-for-aiderss-postrank/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://dpwhelan.com/blog/software-development/postrank-a-net-api-for-aiderss-postrank/</feedburner:origLink></item>
		<item>
		<title>Zoomii – A Refreshing Way to Buy A Book Online</title>
		<link>http://feedproxy.google.com/~r/DeclanWhelan/~3/zxQNRhIVozM/</link>
		<comments>http://dpwhelan.com/blog/uncategorized/zoomii-a-refreshing-way-to-buy-a-book-online/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 17:33:12 +0000</pubDate>
		<dc:creator>dwhelan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dpwhelan.com/blog/?p=25</guid>
		<description><![CDATA[I recently bought a book at Zoomii.ca (in the US you can use Zoomii.com) and it was the most refreshing online purchase I ever made. This is because of the elegant simplicity and usability of the site.
The goal of the website to emulate a bricks and morter bookstore. Other online  bookstores that have attempted this [...]]]></description>
			<content:encoded><![CDATA[<p>I recently bought a book at <a href="http://zoomii.ca">Zoomii.ca</a> (in the US you can use <a href="http://zoomii.com">Zoomii.com</a>) and it was the most refreshing online purchase I ever made. This is because of the elegant simplicity and usability of the site.</p>
<p>The goal of the website to emulate a bricks and morter bookstore. Other online  bookstores that have attempted this went for a 3D virtual reality approach. Zoomii took a different approach. Instead there is a large zoomable image of all books in the store arranged into sections and bookshelves.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="src" value="http://www.youtube.com/v/bHuMbNzFKmw&amp;hl=en&amp;fs=1" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/bHuMbNzFKmw&amp;hl=en&amp;fs=1" allowfullscreen="true"></embed></object></p>
<p>You can easily zoom in and out and pan around. Of course, you can do the normal search and checkout stuff but it is the simple metaphor that grabs your attention. Since the site was developed by Chris Thiessen, a local software developer in the Waterloo area that I had run into a few times, I decided to call him up for lunch and find out how he built Zoomii.</p>
<p>Chris has a simple vision: to reproduce the bookstore experience with an online bookstore. And he chose a simple business model; namely a referral fee through the <a href="http://affiliate-program.amazon.com/gp/associates/join">Amazon affiliate program</a>. Next is the interesting part: Chris built the entire site single-handedly using Java, JavaScript and the <a href="http://www.amazon.com/AWS-home-page-Money/b?ie=UTF8&amp;node=3435361">Amazon Web Services</a> stack. And the result is a revenue generating site with a compelling user experience. Despite rendering over 20,000 titles the site is responsive and smooth.</p>
<p>Now what did I get out my experiences with Zoomii and my lunch with Chris?</p>
<ul>
<li><strong>Smaller teams are better</strong>. Now, Chris is an exceptional developer, extremely disciplined and stubborn and and a team size of 1 would not work for developers lacking these attributes.</li>
<li><strong>Choose your technologies carefully</strong>. Chris selected Amazon Web Services but everything else was built in-house using Java and JavaScript.</li>
<li><strong>Above all, focus on simplicity</strong>. Chris had a simple vision, a simple business model and was able to deliver a simple but powerful user experience.</li>
</ul>
<img src="http://feeds.feedburner.com/~r/DeclanWhelan/~4/zxQNRhIVozM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dpwhelan.com/blog/uncategorized/zoomii-a-refreshing-way-to-buy-a-book-online/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://dpwhelan.com/blog/uncategorized/zoomii-a-refreshing-way-to-buy-a-book-online/</feedburner:origLink></item>
		<item>
		<title>Truthfulness on Software Teams</title>
		<link>http://feedproxy.google.com/~r/DeclanWhelan/~3/GevRHdTh3Do/</link>
		<comments>http://dpwhelan.com/blog/agile/truthfulness-on-software-teams/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 04:38:48 +0000</pubDate>
		<dc:creator>dwhelan</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Leadership]]></category>
		<category><![CDATA[agility]]></category>
		<category><![CDATA[honesty]]></category>
		<category><![CDATA[integrity]]></category>
		<category><![CDATA[truth]]></category>

		<guid isPermaLink="false">http://dpwhelan.com/blog/?p=24</guid>
		<description><![CDATA[A short while back I invited Mishkin Berteig to come to Waterloo to talk about agility. I was looking for something that would have a broad appeal to developers, testers and so on but would also have depth. Mishkin drew a full house and gave a great presentation on delivering successful agile projects. He covered [...]]]></description>
			<content:encoded><![CDATA[<p>A short while back I invited Mishkin Berteig to come to Waterloo to talk about agility. I was looking for something that would have a broad appeal to developers, testers and so on but would also have depth. Mishkin drew a full house and gave a <a href="http://www.berteigconsulting.com/sites/default/files/Delivering%20Successful%20Agile%20Projects%20-%20A%20Team%20Approach.pdf">great presentation</a> on delivering successful agile projects. He covered the agile bases with a good overview of agile values and practices. Things got deeper and more interesting when he talked about truth. I know he is sincere about this because of the Scrum Master training I received from him. Mishkin&#8217;s email signature is:</p>
<blockquote><p>&#8220;Truthfulness is the foundation of all human virtues&#8221; &#8211; Baha&#8217;u'llah</p></blockquote>
<p>Mishkin pointed out that agile methods rely on people speaking the truth and acting with integrity. I thought this was very insightful since most agilists focus on either technical aspects of agility such as TDD, refactoring or they focus on team and leadership issues. But what Mishkin is talking about is a deep personal honesty to see things how they really are and to act accordingly.</p>
<p>You see, I have from time to time in my career told little white lies to my peers and managers. And I almost always got away with it. For example, once when I was developing a financial application I made what I thought was a good design decision but really struggled to get it to work. I did not want to appear as if I had made a mistake. I basically lead everyone to believe all was well and meanwhile I worked insane hours to get it all working. I was letting pride get in my way and was lying to cover up a bad technical decision. And this lack of truthfulness prevented me from seeking help. I resented the long hours I had to put in and I was unhappy. It was unfair of me to hide the reality from my peers and managers. I suspect I am not alone.</p>
<p>Now, I think it should be obvious that on an agile team you simply could not get away with such behavior for any length of time. There is collective code ownership, daily stand-ups, task and story tracking, sustainable pace; all of which make the whole process much more transparent. So, on the one hand I agree with Mishkin that agile methods rely on people speaking and acting truthfully. But in practice agile methods make it hard to say anything but the truth!</p>
<p>But we are devious creatures and so I would like to leave you with some questions to ponder:</p>
<p><img class="alignleft alignnone" style="float: left; margin-left: 30px; margin-right: 30px;" src="http://www.wringhim.co.uk/weblog/st_cecilia.jpg" alt="Developer with halo" width="100" /></p>
<ul>
<li>Are you honestly expressing your doubts and concerns in retrospectives?</li>
<li>If something is bothering you with another member of the team do you act in a direct but respectful way to resolve it?</li>
<li>Are you able to freely admit when someone has a better idea or design than yours?</li>
<li>Are you willing to admit when you make a mistake?</li>
<li>Do you say the same things about someone when you are face-to-face with them to do you say something different behind their back?</li>
</ul>
<p>If you can&#8217;t <em>honestly</em> answer yes to the above questions then maybe you&#8217;re not as honest as you should be. Start by being honest with yourself. Pick one apsect of your behavior that that is not as truthful as you would like and strive to be more truthful.</p>
<p>Truthfulness really is the foundation of all human virtues &#8230; and agile teams.</p>
<img src="http://feeds.feedburner.com/~r/DeclanWhelan/~4/GevRHdTh3Do" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dpwhelan.com/blog/agile/truthfulness-on-software-teams/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://dpwhelan.com/blog/agile/truthfulness-on-software-teams/</feedburner:origLink></item>
		<item>
		<title>Agile Coaching and Leadership Retreat</title>
		<link>http://feedproxy.google.com/~r/DeclanWhelan/~3/hmH0-8lYJLw/</link>
		<comments>http://dpwhelan.com/blog/coaching/agile-coaching-and-leadership-retreat/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 04:18:16 +0000</pubDate>
		<dc:creator>dwhelan</dc:creator>
				<category><![CDATA[Coaching]]></category>
		<category><![CDATA[Leadership]]></category>
		<category><![CDATA[agile coaching leadership]]></category>

		<guid isPermaLink="false">http://dpwhelan.com/blog/?p=23</guid>
		<description><![CDATA[The need for a more enlightened leadership style was drilled home to me at one client&#8217;s site. I was continually frustrated when brainstorm sessions and meeting that I planned were complete failures. I had a hard time getting the team to come out of their cubicles let alone participate in retrospectives. At the peak of my frustration the team [...]]]></description>
			<content:encoded><![CDATA[<p>The need for a more enlightened leadership style was drilled home to me at one client&#8217;s site. I was continually frustrated when brainstorm sessions and meeting that I planned were complete failures. I had a hard time getting the team to come out of their cubicles let alone participate in retrospectives. At the peak of my frustration the team was profiled using <a href="http://en.wikipedia.org/wiki/Myers-Briggs_Type_Indicator">Myers-Briggs</a> personality typing. I was typed as an extrovert and <em>every other person on the team was typed as an introvert</em>. Well no wonder I was getting nowhere, I was trying to get the team to work like I did, as an extrovert rather than adapting to how they wanted to work. So, I made a real effort to prepare information ahead of meetings so the team had time to reflect, used more democratic techniques for retrospectives and so on. The result was a much improved team interaction. I realized then that effective agile teams require enlightened coaching and leadership to steer the team through challenges like this.</p>
<p>When I ran into Deb Hartman at <a title="Agile Coach Camp" href="http://wiki.agilecoachcamp.org/tiki-index.php">AgileCoachCamp</a> it was clear that her focus is very much on coaching and leadership for agile teams. I find this refreshing because there is a lot of focus on the technical aspects of agile such as TDD, refactoring, continuous integration and so on. I sometimes feel this &#8220;software&#8221; side of agility gets short shrift. She ran some great workshops on effective listening, powerful questions and agile games.</p>
<p>Now Deb has put together an agile coaching and leadership retreat with Michael Spayd and Lyssa Adkins:</p>
<blockquote><p><span style="color: #660000;"><strong>Co-Active Coaching Fundamentals for Agile Leaders</strong><span style="color: #660000;"> is designed to provide Agile Coaches with fundamental professional coaching skills. Based on the “Co-Active Coaching Fundamentals” course of The Coaches Training Institute, it is taught through participation, using practical skills you can apply right away,and offers extensive opportunities to coach and to receive feedback on your own coaching.</span></span></p>
<p>In particular, <span style="font-weight: bold;">you will learn to:</span><br />
   •   Use the four cornerstones of <a style="color: #000000;" href="http://www.cpp.com/detail/detailitem.asp?ic=7795">Co-Active Coaching</a><br />
   •   Communicate with clients using the 5 contexts of Co-Active Coaching<br />
   •   Use the Professional Wheel of Life assessment tool with clients<br />
   •   Distinguish and use the three levels of listening<br />
   •   Demonstrate the most often used coaching skills</p></blockquote>
<p>The retreat is planned for August 1-3, 2008 in Toronto to accommodate agile coaches and leaders planning to attend Agile2008. Learn more at <a href="http://www.agilecoachtraining.com">www.agilecoachtraining.com</a>.</p>
<img src="http://feeds.feedburner.com/~r/DeclanWhelan/~4/hmH0-8lYJLw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://dpwhelan.com/blog/coaching/agile-coaching-and-leadership-retreat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://dpwhelan.com/blog/coaching/agile-coaching-and-leadership-retreat/</feedburner:origLink></item>
	</channel>
</rss>
