<?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>Propero Solutions</title>
	<atom:link href="http://properosolutions.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://properosolutions.com</link>
	<description>Helping organizations succeed with agile software development</description>
	<lastBuildDate>Sat, 29 May 2010 09:56:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Dynamic Team Estimation in Action</title>
		<link>http://properosolutions.com/2010/05/dynamic-team-estimation-in-action/</link>
		<comments>http://properosolutions.com/2010/05/dynamic-team-estimation-in-action/#comments</comments>
		<pubDate>Sat, 29 May 2010 09:43:04 +0000</pubDate>
		<dc:creator>Brad</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://properosolutions.com/?p=478</guid>
		<description><![CDATA[This week I coached a product team in Shanghai consisting of 3 Scrum teams (about 8 people per team) working on a single backlog. The challenge: how to estimate a backlog of 200 items for the team&#8217;s first release planning session, without taking all day?
The solution: Dynamic Team Estimation
I&#8217;ve blogged previously about Steve Bockman&#8217;s Team [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>This week I coached a product team in Shanghai consisting of 3 Scrum teams (about 8 people per team) working on a single backlog. The challenge: how to estimate a backlog of 200 items for the team&#8217;s first release planning session, without taking all day?</p>
<p>The solution: Dynamic Team Estimation</p>
<p>I&#8217;ve blogged previously about Steve Bockman&#8217;s <a title="Team Estimation Game" href="http://properosolutions.com/2009/05/team-estimation-game/">Team Estimation Game</a>. This is a great alternative to planning poker which I&#8217;ve found easier for teams to understand, and much faster than planning poker. My colleague Björn Jensen and I presented some adaptations to the Team Estimation Game at the 2010 Shanghai Scrum Gathering that we call <em>Dynamic Team Estimation</em>. (Our presentation is available on the <a title="Resources" href="http://ProperoSolutions.com/resources">Resources</a> page under <em>Agile Estimating 2.0</em>). We used Dynamic Team Estimation in this case and it worked very well.</p>
<p>First, we considered having the three teams divide the backlog and have each estimation their own subset of items. The teams, however, preferred considering the whole backlog together. Since it wouldn&#8217;t be effective to have 20+ people all trying to estimate at the same time, we asked each team to select 3 representatives who would do the estimating, being sure that we had a good cross-section of skill sets included.</p>
<p>Our team of 9 estimators plus Scrum Masters and Product Owner gathered in a room with a large table. Since the teams were in their 3rd sprint, we started by laying out the completed user stories on the table based on their size to serve as our basis &#8211; small items on one end of the table, large item at the other end. These stories already had story point values. The product owner printed the backlog items on half-sheets of paper and brought them in a stack ordered by priority. We laid out the top 10 or so backlog items on one end of the table and began by using the structured rules of the Team Estimation Game. One person at a time could estimate one item placing it on the table according to size, or could choose to change an estimate made previously. Players proceed in round-robin fashion, with each player explaining his or her rationale. Other players are allowed to ask <em>clarifying </em>questions, but not to debate the estimate &#8211; they will have that chance on their own turn. Rather than proceed in strict priority order, we allowed each player to choose any story from the 10-or-so top-ranked items we set out.</p>
<p>Before we could even get one time around the table, the team was wanting to bend the rules. They were having discussions about each item, and while one person was placing an item, others were looking at the yet-to-be-estimated items. We asked them to remember the rules, and to get around the table at least one time before we considered relaxing the rules.</p>
<p>After the first round, we asked the team if they wanted to relax the rules and instead use Dynamic Team Estimation. They quickly agreed and immediately swarmed the table. Pairs and small groups had discussions about out items, and 2-3 items were under consideration concurrently at most times. We asked the team to follow one rule now: whenever someone estimated an item (by placing it on the table), he/she would get the whole groups&#8217; attention and explain the rationale for the estimate; this gave everyone a chance to provide input or disagree. This was important &#8211; without it, estimates might not be considered by the whole team.</p>
<p>We split the session into <a href="http://www.pomodorotechnique.com">pomodoros</a> (25 minutes of work followed by a 5-minute break). During each pomodoro, the teams invited a few other members to attend so that everyone could observe the process and contribute if needed. The Product Owner answered questions and clarified the user stories.</p>
<p>After 3 and a half pomodoros, the team finished estimating 200 items with smiling faces. Just a few days earlier, many team members said they didn&#8217;t think they&#8217;d be able to estimate most items, and no one (including myself) thought we could do it in less than 2 hours. Success!</p>
<p>The backlog is not posted on a large wall, arranged by sprint based on the team&#8217;s velocity and estimates. The whole team now has visibility into the scope of the project and can use this tool for look-ahead planning (as described by Mike Cohn).</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 21px; width: 1px; height: 1px; overflow: hidden;">http://properosolutions.com/wp-content/uploads/2010/05/agile_estimation_2.0-for-pdf.pdf</div>
]]></content:encoded>
			<wfw:commentRss>http://properosolutions.com/2010/05/dynamic-team-estimation-in-action/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Potential Dysfunctions of Sprint Commitments</title>
		<link>http://properosolutions.com/2010/03/potential-dysfunctions-of-sprint-commitments/</link>
		<comments>http://properosolutions.com/2010/03/potential-dysfunctions-of-sprint-commitments/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 16:57:43 +0000</pubDate>
		<dc:creator>Brad</dc:creator>
				<category><![CDATA[estimation]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://properosolutions.com/?p=459</guid>
		<description><![CDATA[Many Scrum teams subscribe to the following set of rules, which are the prevailing guidance in the Scrum community and literature.

At the beginning of a sprint, the team commits to delivering some number of backlog items
Teams should not start work on a backlog item unless it can be finished in the same sprint
Sprints should never [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Many Scrum teams subscribe to the following set of rules, which are the prevailing guidance in the Scrum community and literature.</p>
<ol>
<li>At the beginning of a sprint, the team <em>commits </em>to delivering some number of backlog items</li>
<li>Teams should not start work on a backlog item unless it can be finished in the same sprint</li>
<li>Sprints should never be extended</li>
</ol>
<p>The reasoning behind these rules are that the time pressure of a short, fixed sprint helps a team focus and get more done than they otherwise would, and that extending a sprint is a slippery slope toward anarchy. While I understand this logic, in practice I&#8217;ve seen two dysfunctions result from these tenets of Scrum.</p>
<p>First, in many organizations the word <em>commitment</em> invokes fear in the team: <em>if we don&#8217;t deliver our commitment, we&#8217;ll be punished</em>. As a result, teams are likely to <em>under-commit </em>and bring less work than they otherwise would into the Sprint. &#8220;But then they can bring in more work if they finish early,&#8221; goes the argument. But rules #2 and #3 tell them to do this only if they can finish the work by a fixed date, and the same fear factor makes them very reluctant to do this. I have actually seen teams with idle time at the end of the sprint as a result.</p>
<p>On teams without the fear of commitment, an entirely different dysfunction can result from these rules. While speaking to an audience of about 50 people at <a href="http://agiledenver.org">Agile Denver</a> recently, I asked two questions.</p>
<ol>
<li>How many of you believe sprint deadlines are a positive motivation?</li>
<li>How many of you have cut corners with quality to meet a sprint deadline?</li>
</ol>
<p>To my surprise, only a handful of people timid raised their hands in response to the first question. To my further surprise, almost every hand in the room shot up emphatically in response to the second question. The evidence indicates that this combination of rules is having unintended consequences.</p>
<p>So what should we do? A few things I would recommend.</p>
<p>First, replace the phrase <em>Sprint commitment</em> with <em>Sprint estimate</em>. Be sure to have the crucial conversation with your team, Product Owner and stakeholders about what it means when the team accepts a set of user stories in sprint planning, and what it means if they are unable to complete all the items they estimated; particularly that no punishment will be doled out as a result. This is a good opportunity to stress the importance of limiting WIP and focusing on the highest priority items within the sprint, so that if anything isn&#8217;t finished it will be the lowest priority item.</p>
<p>Secondly, be sure to have good <a href="http://properosolutions.com/2009/07/metrics-for-agile-projects/">quality metrics as compensating measures</a> for your velocity metrics. While velocity metrics give an incentive for the team to go faster, they also can result in pressure to cut quality. Effective quality metrics, such as code complexity and code coverage of automated tests, combined with practices like pair programming or code reviews, provide a balancing incentive to keep quality high.</p>
<p>Third, I believe it&#8217;s ok for a team to start a new backlog item even if they don&#8217;t think it can be finished by the end of the sprint, assuming that all the higher priority items are truly done and accepted by the product owner, and the team has established practices to ensure a sustainable pace with high quality. Some people might suggest that rather than starting a new story that can&#8217;t be finished by the end of the sprint, the team should do &#8220;extra&#8221; refactoring or work on resolving impediments. In my view, the team&#8217;s Definition of Done and working agreements should already ensure there is adequate time for these activities. If you wait until you have &#8220;extra&#8221; time, it&#8217;s likely that you&#8217;ll never have time.</p>
<p>Kanban eliminates the sprint deadline, which is another way to possibly reduce the motivations that lead to this dysfunction. But beware that kanban should not be used as an excuse to be undisciplined; perhaps that&#8217;s a topic for a separate post.</p>
]]></content:encoded>
			<wfw:commentRss>http://properosolutions.com/2010/03/potential-dysfunctions-of-sprint-commitments/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Jira and GreenHopper for agile project management</title>
		<link>http://properosolutions.com/2009/12/jira-and-greenhopper-for-agile-project-management/</link>
		<comments>http://properosolutions.com/2009/12/jira-and-greenhopper-for-agile-project-management/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 05:18:00 +0000</pubDate>
		<dc:creator>Brad</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[jira]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://accelerateagile.com/2009/12/jira-and-greenhopper-for-agile-project-management/</guid>
		<description><![CDATA[I previously blogged about using Jira with some open source tools for managing agile projects, and concluded that it was not a great solution &#8211; without GreenHopper. I&#8217;ve been using the latest version of Jira with the GreenHopper agile plugin extensively now, and I like it. It is lacking some features, which I&#8217;ll describe later, [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I previously blogged about <a href="http://agileadvocate.blogspot.com/2009/01/jira-not-so-great-for-agile.html">using Jira with some open source tools for managing agile projects</a>, and concluded that it was <i>not </i>a great solution &#8211; without GreenHopper. I&#8217;ve been using the latest version of Jira with the GreenHopper agile plugin extensively now, and I like it. It is lacking some features, which I&#8217;ll describe later, but here is an overview of the main functionality.</p>
<p>The first thing I like is the Planning Board view, which is aimed at Product Owners who spend lots of time ranking and re-ranking backlog items. The GreenHopper planning board allows you to drag and drop items to either change their rank or to move them from the backlog into a particular iteration or sprint (version, in Jira lingo).</p>
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/_RKQgVkLLIO8/SysNMjL7sAI/AAAAAAAAAbI/dHxVcvFISPQ/s1600-h/planning+board.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/_RKQgVkLLIO8/SysNMjL7sAI/AAAAAAAAAbI/dHxVcvFISPQ/s400/planning+board.jpg" /></a></div>
<div style="text-align: center;">Above: dragging a user story from the backlog to a sprint. (Click image to see it full-size.)</div>
<p>For the development team, GreenHopper&#8217;s Task Board view is just that &#8211; it simulates the physical task board that so many co-located teams use. It&#8217;s easy to drag the virtual cards to columns to update their status, just like you would do with a physical board. Very nice. It also does something you can&#8217;t quite do with sticky notes; double click to see more information, or click on the item ID to see all the detail.</p>
<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/_RKQgVkLLIO8/SysNRkLQyuI/AAAAAAAAAbY/HqarWx5BpP0/s1600-h/task+board+summaries.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/_RKQgVkLLIO8/SysNRkLQyuI/AAAAAAAAAbY/HqarWx5BpP0/s400/task+board+summaries.jpg" /></a></div>
<div style="text-align: center;">Above: The Task Board in summary view mode (Click image to see it full-size.)</div>
<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/_RKQgVkLLIO8/SysNQFxSzMI/AAAAAAAAAbQ/JqN-pIRLnJo/s1600-h/task+board+list+view.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/_RKQgVkLLIO8/SysNQFxSzMI/AAAAAAAAAbQ/JqN-pIRLnJo/s400/task+board+list+view.jpg" /></a></div>
<div style="text-align: center;">Above: See more of the task board without scrolling &#8211; the List view (Click image to see it full-size.)</div>
<p>
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_RKQgVkLLIO8/SysNHkw15LI/AAAAAAAAAa4/CKRVF5OFhjw/s1600-h/drag+and+drop+task+status.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_RKQgVkLLIO8/SysNHkw15LI/AAAAAAAAAa4/CKRVF5OFhjw/s400/drag+and+drop+task+status.jpg" /></a></div>
<div style="text-align: center;">Above: Dragging a card from &#8220;To Do&#8221; to &#8220;In Progress&#8221;</div>
<p>
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/_RKQgVkLLIO8/SysNGF_YEzI/AAAAAAAAAaw/C3BC9-2sCIk/s1600-h/double+click+card+to+expand.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/_RKQgVkLLIO8/SysNGF_YEzI/AAAAAAAAAaw/C3BC9-2sCIk/s320/double+click+card+to+expand.jpg" /></a></div>
<div style="text-align: center;">Above: Double click to see this expanded view of any card on the board.</div>
<p>An advantage of GreenHopper over sticky notes on the wall is that your burn down charts are calculated automatically: in hours, number of items, and story points. The screen images below show these. The red line is the ideal burn down and the green line is the actual.</p>
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_RKQgVkLLIO8/SysNKb_-OaI/AAAAAAAAAbA/nfWIQ3gjQIA/s1600-h/hour+burndown.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_RKQgVkLLIO8/SysNKb_-OaI/AAAAAAAAAbA/nfWIQ3gjQIA/s400/hour+burndown.jpg" /></a></div>
<div style="text-align: center;">Above: Burn down in hours (Click image to see it full-size.)</div>
<p>Are you a bleeding-edge adopter of kanban? GreenHopper is decent for that. The columns on your kanban board are customizable, so you can create any columns you want. You can also set a WIP limit for each column. You <i>can&#8217;t</i>, however, set up horizontal &#8220;swim lanes&#8221; for different service level agreements (SLAs), such as a row for items that need to be expedited.</p>
<p>
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/_RKQgVkLLIO8/SysOWagfLTI/AAAAAAAAAbg/WZDw6m8smNo/s1600-h/kanban.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/_RKQgVkLLIO8/SysOWagfLTI/AAAAAAAAAbg/WZDw6m8smNo/s400/kanban.png" /></a></div>
<div style="text-align: center;">Above: The column turns red when the WIP limit is exceeded</div>
<p>The Jira dashboard also offers a reasonable approximation of the cumulative flow diagram (CFD) that replaces burn downs in a lean / kanban process. It does show items created vs. resolved, but it doesn&#8217;t graph items in-progress. The chart also counts sub-tasks as items, which you may not want.</p>
<p>
<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/_RKQgVkLLIO8/SysNEP8-8xI/AAAAAAAAAao/z7G94U2v-5A/s1600-h/CFD.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/_RKQgVkLLIO8/SysNEP8-8xI/AAAAAAAAAao/z7G94U2v-5A/s320/CFD.jpg" /></a></div>
<p>Above: Almost a cumulative flow diagram. Close, but no cigar.</p>
<p>GreenHopper is an add-in to Jira, so you still get all of the Jira functionality unchanged. Like Jira itself, GreenHopper is extensively configurable; almost annoyingly so because there are so many options it&#8217;s hard to know what to do with them. Fortunately the default configuration is reasonable, although there are some setup steps required to enable item ranking, which is so fundamental that it should have been done out-of-the-box.</p>
<p>What is it lacking?
<ol>
<li>If you&#8217;re a large organization with a portfolio of inter-related projects, Jira + GH doesn&#8217;t do much to show you the big picture across multiple projects.</li>
<li>Although you have a hierarchy of versions, such as a release containing multiple sprints (described <a href="http://confluence.atlassian.com/display/GH/Setting+Up+a+Version+Hierarchy">here</a>), it doesn&#8217;t do much; the planning board simply indicates that one version is a &#8220;master&#8221; of the other. GreenHopper doesn&#8217;t offer a timeline view showing the version hierarchy.</li>
<li>You can create a hierarchy of backlog items, for example to have large-scale epics that contain many user stories, as described <a href="http://confluence.atlassian.com/display/GH/Working+with+Epics">here</a>. However, this feature isn&#8217;t enabled by default and requires an adminstrator to configure it. As an alternative, or in addition to the &#8220;epic&#8221; feature, you can create associations between items for this purpose, but there is no easy way to visualize the relationships. There is free task hierarchy plug-in that will show the hierarchy, but only for one top-level item at a time.&nbsp; </li>
</ol>
<p>Overall, especially for smaller teams without portfolio management needs, I give the tool high marks.</p>
]]></content:encoded>
			<wfw:commentRss>http://properosolutions.com/2009/12/jira-and-greenhopper-for-agile-project-management/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Definition of Ready (DoR)</title>
		<link>http://properosolutions.com/2009/12/definition-of-ready-dor/</link>
		<comments>http://properosolutions.com/2009/12/definition-of-ready-dor/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 04:10:00 +0000</pubDate>
		<dc:creator>Brad</dc:creator>
				<category><![CDATA[definition of done]]></category>
		<category><![CDATA[definition of ready]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://accelerateagile.com/2009/12/definition-of-ready-dor/</guid>
		<description><![CDATA[All good agile teams have a Definition of Done (DoD) &#8211; the common set of criteria that every feature must meet before it&#8217;s considered complete. I wrote about the DoD previously in this post. But what about a Definition of Ready? How do you know when your backlog items are ready for the team to [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>All good agile teams have a Definition of Done (DoD) &#8211; the common set of criteria that every feature must meet before it&#8217;s considered complete. I wrote about the DoD previously in <a href="http://agileadvocate.blogspot.com/2008/12/definition-of-done.html">this post</a>. But what about a Definition of Ready? How do you know when your backlog items are ready for the team to accept them?</p>
<p>Serge Beaumont spoke on this topic among others at the 2009 Scrum Gathering in Munich in his presentation <a href="http://www.scrumalliance.org/resources/1249">Practical Tools for the Product Owner: Focus, Value, Flow</a>. He describes the Definition of Ready as a negotiation between the Product Owner and the team, where the team ultimately decides if a backlog item (user story) is defined well enough for the team to estimate and implement. His checklist for the DoR for backlog items includes:
<ul>
<li>Why? Business Value</li>
<li>What? Outcome vision</li>
<li>How? Implementation strategy &amp; cost</li>
<li>Does the backlog have enough items for 1 and half to 2 sprints?</li>
<li>Is the size (granularity) of the backlog items acceptable?</li>
</ul>
<p>I would personally aim for a smaller number of items in the &#8220;ready&#8221; state; 2 sprints worth of items increases the risk that time will be spent analyzing items that end up in the trash heap.</p>
<p>Serge also advocates using a kanban board with 4 phases to track the readiness of backlog items:
<ul>
<li> New</li>
<li>Preparing (going through analysis)</li>
<li>Ready</li>
<li>In sprint</li>
</ul>
<p>I&#8217;ll be adding the DoR as a standard part of my Scrum implementations.</p>
]]></content:encoded>
			<wfw:commentRss>http://properosolutions.com/2009/12/definition-of-ready-dor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SourceMonitor for .NET code quality metrics</title>
		<link>http://properosolutions.com/2009/11/sourcemonitor-for-net-code-quality-metrics/</link>
		<comments>http://properosolutions.com/2009/11/sourcemonitor-for-net-code-quality-metrics/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 03:54:00 +0000</pubDate>
		<dc:creator>Brad</dc:creator>
				<category><![CDATA[metrics]]></category>
		<category><![CDATA[technical]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://accelerateagile.com/2009/11/sourcemonitor-for-net-code-quality-metrics/</guid>
		<description><![CDATA[A tip of the hat to Paul Rayner for recommending SourceMonitor for .NET code quality metrics. I gave this freeware tool a spin today on a C# project I&#8217;m working on for a large client, and was very happy. It&#8217;s easy to use and within a few minutes I had it installed and ran the [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>A tip of the hat to <a href="http://virtual-genius.com/">Paul Rayner</a> for recommending <a href="http://www.campwoodsw.com/sourcemonitor.html">SourceMonitor</a> for .NET code quality metrics. I gave this freeware tool a spin today on a C# project I&#8217;m working on for a large client, and was very happy. It&#8217;s easy to use and within a few minutes I had it installed and ran the analysis on the whole project, gathering these metrics for the whole solution, and for each C# file within the solution:
<ul>
<li>number of statements</li>
<li>methods per class</li>
<li>calls per method</li>
<li>statements per method</li>
<li>average and maximum complexity</li>
<li>average and maximum block depth (number of levels of indentation/curly braces)</li>
</ul>
<p>This is a great tool to quickly find potential problem spots within the solution, so you can identify the components that would likely benefit the most from some refactoring and additional testing.</p>
]]></content:encoded>
			<wfw:commentRss>http://properosolutions.com/2009/11/sourcemonitor-for-net-code-quality-metrics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile vs. Waterfall: The NetFlix analogy</title>
		<link>http://properosolutions.com/2009/10/agile-vs-waterfall-the-netflix-analogy/</link>
		<comments>http://properosolutions.com/2009/10/agile-vs-waterfall-the-netflix-analogy/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 03:40:00 +0000</pubDate>
		<dc:creator>Brad</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[waterfall]]></category>

		<guid isPermaLink="false">http://accelerateagile.com/2009/10/agile-vs-waterfall-the-netflix-analogy/</guid>
		<description><![CDATA[The following is a fable to compare traditional waterfall projects to agile/lean projects&#8230;

Announcing my new movie rental service, NetPix! Here&#8217;s how it works.

You get 60 movies each year, delivered on DVD in the mail.
When you first sign up, choose 60 movies you want. When you finish choosing your movies, we&#8217;ll confirm that it&#8217;s really the [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>The following is a fable to compare traditional waterfall projects to agile/lean projects&#8230;<br />
<hr />
<blockquote>Announcing my new movie rental service, NetPix! Here&#8217;s how it works.
<ul>
<li>You get 60 movies each year, delivered on DVD in the mail.</li>
<li>When you first sign up, choose 60 movies you want. When you finish choosing your movies, we&#8217;ll confirm that it&#8217;s really the list you want.</li>
<li>Over the next 12 months, NetPix will tirelessly collect your 60 DVDs, and at the end of the year, we&#8217;ll deliver all 60 movies to your home!</li>
<li>Price: $60 per year (just $5 per month!) </li>
</ul>
<p>The fine print:
<ul>
<li>DVDs will be delivered 12 months after you complete and confirm your list of 60 movies.&nbsp; </li>
<li>After confirming your movie list, any changes you make to the list in the first 6 months will incur a charge of $2 per movie.&nbsp;</li>
<li>Any changes in your movie list during months 7-12 will result in a charge of $3 per movie, and a delivery delay of 1 month per movie changed. (We have to lock down the list at some time, after all!) </li>
</ul>
</blockquote>
<p>
<hr />Now suppose I order, say &#8220;Weekend at Bernie&#8217;s&#8221;, both I and II, on the advice of my high school buddy, Steve. A year later, I watch &#8220;Weekend at Bernie&#8217;s&#8221; (the first one), and I hate it! Steve usually has good taste, so I trusted him, but he must have been smoking crack when he recommended this one. I don&#8217;t even wanna watch &#8220;Weekend at Bernie&#8217;s 2&#8243;, but I already paid for it and it&#8217;s sitting in a cardboard box next to my DVD player. Damn!</p>
<p>And to top it off, eight months into the year the studio released a remastered, Director&#8217;s cut, collector&#8217;s edition of my all-time favorite movie &#8220;Blazing Saddles&#8221;, with never-before-seen outtakes! If I want that it&#8217;ll cost me an extra $3 (5% more) and I&#8217;ll have to wait an extra month for <i>all </i>of my DVDs! Double damn!</p>
<p>Would you buy this? &#8220;No,&#8221; you say? Well why not? This is the way software customers have been buying software for decades! Customers have to figure out everything we want before we even start working on it, and they can&#8217;t change their minds later without paying dearly for it!</p>
<p>Alas, much to the chagrin of NetPix, along comes an upstart disruptor, NetFlix! Now customers can get the features (DVDs) they want every month instead of waiting a year! And they can change their priorities (movie list) at any time! And they can watch &#8220;Weekend at Bernie&#8217;s I&#8221; before deciding if they want to invest 90 irrecoverable minutes of their lives watching the sequal. The demise of NetPix is written on the wall!</p>
]]></content:encoded>
			<wfw:commentRss>http://properosolutions.com/2009/10/agile-vs-waterfall-the-netflix-analogy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>More tips for better retrospectives</title>
		<link>http://properosolutions.com/2009/09/more-tips-for-better-retrospectives/</link>
		<comments>http://properosolutions.com/2009/09/more-tips-for-better-retrospectives/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 19:57:00 +0000</pubDate>
		<dc:creator>Brad</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[people]]></category>
		<category><![CDATA[retrospectives]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://accelerateagile.com/2009/09/more-tips-for-better-retrospectives/</guid>
		<description><![CDATA[At last night&#8217;s Agile Denver meeting, I facilitated an open space discussion and one of the topics was conducting more effective retrospective meetings. The group had some great insights and advice that I&#8217;d like to share here. Thanks to everyone who participated!

 Rotate responsibility for facilitating the retrospective. Get fresh perspectives and creative ideas. Don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>At last night&#8217;s <a href="http://www.agiledenver.org/">Agile Denver</a> meeting, I facilitated an open space discussion and one of the topics was conducting more effective retrospective meetings. The group had some great insights and advice that I&#8217;d like to share here. Thanks to everyone who participated!</p>
<ol>
<li> Rotate responsibility for facilitating the retrospective. Get fresh perspectives and creative ideas. Don&#8217;t let it get stale.</li>
<li>Hold your retrospective over a happy hour.</li>
<li>Read <a href="http://www.amazon.com/Agile-Retrospectives-Making-Teams-Great/dp/0977616649/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1254253793&amp;sr=8-1">Agile Retrospectives</a> by Esther Derby and Diana Larsen</li>
<li>Instead of asking &#8220;what were the problems&#8221;, ask &#8220;what could we have done better.&#8221;</li>
<li>Follow through with an action plan. If you have lots of improvements, rank them and work on the top priority issue.</li>
<li>Have a virtual buyer/seller transaction at the end of your iteration to determine if stakeholders are willing to &#8220;pay&#8221; for what you delivered.</li>
<li>Do shorter iterations &#8211; fewer issues to discuss</li>
<li>Set the stage with expectation that it&#8217;s not about blaming. Participants must describe the effect of the problem, not the person they believe caused the problem.</li>
<li>Take collective team ownership over problems. It&#8217;s the team&#8217;s job to help every person on the team.</li>
<li>Start the meeting by having participants write issues on cards, then post them on a wall and group them. This can effectively elicit input from shy people who are hesitant to speak in a group.</li>
<li>Ask creative questions, like &#8220;if this iteration were a car, what model would it be?&#8221;</li>
<li>Keep a retrospective board where team members can at any time write down issues they want to discuss in the retro.</li>
<li>Is there an elephant in the room that nobody wants to talk about? If so, get it out!</li>
<li>End on a positive note. Everyone must say one positive thing.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://properosolutions.com/2009/09/more-tips-for-better-retrospectives/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open source agile project management tools</title>
		<link>http://properosolutions.com/2009/09/open-source-agile-project-management-tools/</link>
		<comments>http://properosolutions.com/2009/09/open-source-agile-project-management-tools/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 14:26:00 +0000</pubDate>
		<dc:creator>Brad</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://accelerateagile.com/2009/09/open-source-agile-project-management-tools/</guid>
		<description><![CDATA[I authored a comparison of five open source agile project management tools: Agilefant, IceScrum, Agilo, eXPlainPMT, and XPlanner. The article is posted on Open Logic&#8217;s Wazi site. I welcome your feedback!
]]></description>
			<content:encoded><![CDATA[<p></p><p>I authored a comparison of five open source agile project management tools: Agilefant, IceScrum, Agilo, eXPlainPMT, and XPlanner. The article is posted on <a href="http://olex.openlogic.com/wazi/2009/comparing-open-source-agile-project-management-tools/">Open Logic&#8217;s Wazi site</a>. I welcome your feedback!</p>
]]></content:encoded>
			<wfw:commentRss>http://properosolutions.com/2009/09/open-source-agile-project-management-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seven tips for distributed agile teams</title>
		<link>http://properosolutions.com/2009/08/seven-tips-for-distributed-agile-teams/</link>
		<comments>http://properosolutions.com/2009/08/seven-tips-for-distributed-agile-teams/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 15:54:00 +0000</pubDate>
		<dc:creator>Brad</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[distributed teams]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://accelerateagile.com/2009/08/seven-tips-for-distributed-agile-teams/</guid>
		<description><![CDATA[Agile methods were originally intended for small co-located teams. Can they work for geographically distributed teams? In fact, due to the challenges of working with distributed teams, I believe the fast feedback and validation afforded by agile methods provide a distinct advantage for distributed teams because problems are found sooner. I have experienced great success [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Agile methods were originally intended for small co-located teams. Can they work for geographically distributed teams? In fact, due to the challenges of working with distributed teams, I believe the fast feedback and validation afforded by agile methods provide a distinct advantage for distributed teams because problems are found sooner. I have experienced great success with teams split between the US, India and China. In this post I share some tips on making distributed agile teams succeed.</p>
<p>For a more in-depth treatment of this topic, see my <a href="http://www.properosolutions.com/resources.html">presentation on Distributed &amp; Offshore Agile Teams</a>.</p>
<p><span style="font-size:180%;">1. Prepare your collaboration infrastructure<br /></span><br />You may need phone, web, &amp; video conferencing, wiki/intranet, source control, VPN, remote desktop tools, SFTP for large file transfer, testing and integration environments, and project management software. Obtain high quality full-duplex speaker phones, headsets, and webcams.</p>
<p><span style="font-size:180%;">2. Have an agile coach or agile champion at each location<br /></span><br />In addition to providing agile training to every team member, you want ongoing guidance at each location from an experienced agile practitioner who can establish an effective team culture.</p>
<p><span style="font-size:180%;">3. Be extra disciplined in your technical practices<br /></span><br />The technical practices from XP (pair programming, TDD, refactoring, continuous integration, coding standard, simple design) are fundamental for any high-performing agile team, but when people are scattered across the globe, they become even more important. These practices ensure that quality is built in from the start, they enable knowledge sharing, and ensure rapid feedback.</p>
<p><span style="font-size:180%;">4. Do cross-location travel throughout the project<br /></span><br />Get the entire team together in one location at the beginning of the project and again at each release. Establish a rotating travel schedule so each team member visits another location for 1-2 iterations. This face time will reap big returns in establishing trust, sharing knowledge, and maintaining an effective team culture.</p>
<p><span style="font-size:180%;">5. Maximize opportunities for real-time communication and collaboration<br /></span><br />Even with a time zone difference, find at least a few hours every day when all team members are available by IM &amp; phone for real-time communication. Share time zone burdens fairly between locations. Hold daily stand-ups and iteration planning meetings with the entire team using video and web conferencing. Many studies have shown that the majority of information shared in a conversation is non-verbal, so use video chat &amp; conferencing often. Google, Yahoo and Skype offer free 2-way video, and Paltalk has free video for up to 10 parties. Webex and many other commerical services offer multi-party video conferencing.</p>
<p><span style="font-size:180%;">6. Facilitate cross-cultural communication: speak slowly, avoid jargon and idioms</span></p>
<p>If your team members don&#8217;t all share the same primary language and culture, be sure that everyone speaks slowly and avoid using jargon, idioms or expressions &#8211; they usually don&#8217;t translate well. Announce your name each time you speak on a conference call: &#8220;This is Sally&#8230;&#8221; Start each meeting with a virtual seating chart as described by Jean Tabaka in her book <span style="font-style: italic;">Collaboration Explained</span>. Appoint a facilitator to ensure each meeting is effective.</p>
<p><span style="font-size:180%;">7. Find effective, lightweight tools for distributed collaboration<br /></span><br />Intranets, wikis and source control systems allow easy information sharing. Virtual white boards such as scriblink, skrbl, and dabbleboard enable remote collaboration. Many web conferencing systems such as ReadyTalk have drawing tools allowing free-form annotation of a shared screen. Instant messaging supports both one-on-one and group chat. VNC, remote desktop and similar tools even allow cross-continent pair programming. For iteration planning and task tracking, share photos or video of your physical task board, or make the leap to an electronic tool. There are numerous open source agile tools plus commercial tools, most with trial or free editions, but choose a lightweight tool unless you truly need the more advanced features.</p>
]]></content:encoded>
			<wfw:commentRss>http://properosolutions.com/2009/08/seven-tips-for-distributed-agile-teams/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eight tips for better retrospectives</title>
		<link>http://properosolutions.com/2009/08/eight-tips-for-better-retrospectives/</link>
		<comments>http://properosolutions.com/2009/08/eight-tips-for-better-retrospectives/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 21:00:00 +0000</pubDate>
		<dc:creator>Brad</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[retrospectives]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://accelerateagile.com/2009/08/eight-tips-for-better-retrospectives/</guid>
		<description><![CDATA[I am often surprised at how many self-described agile teams don&#8217;t hold retrospective meetings every iteration. For those team that do hold retrospectives, I often find they have a lot of room for making them more effective. An attitude of continuous improvement is fundamental to successful teams, and the retrospective is the primary mechanism for [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I am often surprised at how many self-described agile teams don&#8217;t hold retrospective meetings every iteration. For those team that do hold retrospectives, I often find they have a lot of room for making them more effective. An attitude of continuous improvement is fundamental to successful teams, and the retrospective is the primary mechanism for improving, so it follows that effective retrospectives are one of the key elements of a good agile team.</p>
<p>In this post, I offer five tips on how to conduct more effective retrospectives.</p>
<p><span style="font-size:180%;">1. Review notes &amp; actions from the previous retrospective</span></p>
<p>This is step #1 in the retrospective, which of course implies that you must first record notes from your retrospective meetings. (See tip #8) Use a projector to display notes &amp; action items from the past meeting. Keep it short &#8211; five minutes at most. If you have remote team members, use a webinar and/or video conferencing so everyone sees the same screen. If you find your team bringing up the same problems as in previous iterations, ask why &#8211; five whys, actually (see tip #5).</p>
<p><span style="font-size:180%;">2. Ask what problems, successes and opportunities you have with the team, the product, and the process</span></p>
<p>The facilitator will ask the team, &#8220;What did we learn about the team, the product, and the process? What were our problems, successes and opportunities to further optimize?&#8221; Capture these items in a grid as shown below. Use a white board if everyone is in the same room, or take notes in a wiki or other electronic document &#8211; preferably the same one you&#8217;ll use to archive your retrospective notes (See tip #8).</p>
<p>
<table border="1" bordercolor="black">
<tbody>
<tr>
<td></td>
<td>Problems</td>
<td>Successes</td>
<td>Opportunities</td>
</tr>
<tr>
<td>Team</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Product</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Process</td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p><span style="font-size:180%;">3. Let each team member speak without discussion<br /></span><br />The facilitator gives each team member the opportunity to speak <span style="font-style: italic;">without </span>any group discussion; no one else is allowed to comment on anyone&#8217;s opinion &#8211; yet. Only clarifying questions are allowed at this time. Discussion will come later when the team is discovering the root causes of problems. (See tip #5)</p>
<p><span style="font-size:180%;"></span><span style="font-size:180%;">4. Vote on the most important items to take action on</span></p>
<p>You may not be able to immediately address every concern raised in the meeting, but you certainly need to prioritize them. Every team member is allowed to vote for 3 items that he/she believes are most important to take action on. Tally the votes and add the items to your process improvement backlog based on priority.  Note that some items may not require any further action. Even successes may need action however; for example, a good pattern or practice may need to be documented in the Definition of Done or added to the coding standard.</p>
<p><span style="font-size:180%;">5. Use &#8220;five whys&#8221; to discover the root cause of problems<br /></span><br />For each of the highest-priority problems identified, the facilitator will ask &#8220;why did that happen?&#8221; Once an answer is given, ask the same question again, repeating the process five times. This should lead you to the true root cause of the problem.</p>
<p><span style="font-size:180%;">6. Create an action plan for your top priority items</span></p>
<p>For each top priority item, decide what to do, and who can do it &#8211; which may be more than one person. Any actions requiring work by team members should be planned and assigned during iteration planning. (See tip #7) Actions assigned to members outside the team must be coordinated and scheduled. Of course the action plans should address the root causes of problems, not just the symptoms.</p>
<p><span style="font-size:180%;">7. Explicitly allocate time for improvement actions<br /></span><br />Maintain a backlog of improvement actions. At each iteration planning, pull the top improvement actions into the iteration. Improvement items should be prioritized along with product backlog items based on overall value to the organization, but teams should reach an agreement with the product owner on a percentage of their time to be spent on improvements.</p>
<p><span style="font-size:180%;">8. Record your retrospectives &amp; actions</span></p>
<p>Maintain two artifacts: (1) a process improvement backlog and (2) retrospective notes. The notes may be captured in real-time during the meeting using a wiki, intranet, or other electronic document. Record just enough information to support a review at the next retrospective (tip #1). Appoint someone other than the facilitator to take notes. For the process improvement backlog you may use the same tool you use for product backlogs; this backlog can be owned by the scrum master.</p>
]]></content:encoded>
			<wfw:commentRss>http://properosolutions.com/2009/08/eight-tips-for-better-retrospectives/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
