<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8281653055607626854</id><updated>2012-02-15T22:27:35.471-08:00</updated><category term='ruby'/><category term='partial'/><category term='ready'/><category term='capacity'/><category term='scrum'/><category term='powershell'/><category term='metrics'/><category term='scrum ready planning stories done'/><category term='agile2011'/><category term='focus-factor'/><category term='chef'/><category term='idempotence'/><category term='spikes'/><title type='text'>a deliver mind</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://delivermind.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8281653055607626854/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://delivermind.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Scott</name><uri>http://www.blogger.com/profile/08686700567546471850</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/-2XNnyKvj3Og/TfWdPhzgOMI/AAAAAAAAAEI/3GWvBQxmoWI/s220/TexasFlag.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8281653055607626854.post-5576078656131799673</id><published>2011-11-22T09:18:00.001-08:00</published><updated>2011-11-22T09:26:38.908-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scrum ready planning stories done'/><title type='text'>Maturing from Done to Ready</title><content type='html'>This isn't a new topic. It's been talked about for a few years now. I had a team lead ask me this week about maturing from getting your stories "done done" to getting them "ready." The source of his question was from an team assessment/test that a team completes each sprint. The test gives the team retrospective talking points that will allow them to Scrum the Scrum (as Sutherland would say).&lt;br /&gt;&lt;br /&gt;On our assessment we ask this question (the questioned are listed in order of maturity, most mature being listed last):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What are the team's standards for assessing "done" (completeness)?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Team has no Definition of Done&lt;/li&gt;&lt;li&gt;Team has a Definition of Done that doesn't include testing&lt;/li&gt;&lt;li&gt;Team has a Definition of Done which produces potentially shippable software&lt;/li&gt;&lt;li&gt;Definition of Done is augmented for each story with acceptance criteria&lt;/li&gt;&lt;li&gt;Team has a Definition of Ready&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;This team lead's was confused that "ready" was most mature. I explained to him that the intent behind this question is really to gauge a team's ability to flow value. Immature teams don't finish stories within a sprint, i.e. not "DONE." Once teams learn to get stories done within a sprint they start to flow value more consistently. When a team reaches that point, the next level is to make sure that every story that is planned for a sprint is adequately prepared so that the team has an even better chance to complete that story, and potentially flow more value.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This article by Sutherland and Jakobsen is a must read (and Jakobsen presented it at Agile 2009): &lt;a href="http://www.systematic.com/Files/IS%20files/Downloads/Articles/Articles%20in%20English/Scrum%20and%20CMMI%20-%20Going%20from%20Good%20to%20Great.pdf"&gt;Scrum and CMMI: Going from Good to Great&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ready stories:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Have been discussed by the product owner and team (maybe there are some wireframes, or mockups as part of the conversation)&lt;/li&gt;&lt;li&gt;Are clear to the team as to what is involved&lt;/li&gt;&lt;li&gt;Have clear acceptance criteria (maybe more than 1) to signal to the team when they have met the expectation of the product owner&lt;/li&gt;&lt;li&gt;Are estimated (estimation can only really be done when you have acceptance criteria)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;By the time a team and the product owner scrub and groom the backlog, the stories should match the above description to consider them ready. If a team only plans a sprint of ready stories then they are less likely to create waste in the sprint going back and forth getting clarification from the product owner.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8281653055607626854-5576078656131799673?l=delivermind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delivermind.blogspot.com/feeds/5576078656131799673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://delivermind.blogspot.com/2011/11/maturing-from-done-to-ready.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8281653055607626854/posts/default/5576078656131799673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8281653055607626854/posts/default/5576078656131799673'/><link rel='alternate' type='text/html' href='http://delivermind.blogspot.com/2011/11/maturing-from-done-to-ready.html' title='Maturing from Done to Ready'/><author><name>Scott</name><uri>http://www.blogger.com/profile/08686700567546471850</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/-2XNnyKvj3Og/TfWdPhzgOMI/AAAAAAAAAEI/3GWvBQxmoWI/s220/TexasFlag.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8281653055607626854.post-5867969050953901581</id><published>2011-10-04T08:54:00.000-07:00</published><updated>2011-10-04T08:54:57.755-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='idempotence'/><category scheme='http://www.blogger.com/atom/ns#' term='powershell'/><category scheme='http://www.blogger.com/atom/ns#' term='chef'/><title type='text'>Windows Registry-based Idempotence Check with Chef</title><content type='html'>&lt;b&gt;Problem&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You are using Chef with Windows (that is a problem in itself!) and are using &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;powershell&lt;/span&gt; to install programs using a specific user account with winrm.&lt;br /&gt;&lt;br /&gt;How do you ensure idempotence?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Solution&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;There are many possibilities, like using the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;windows&lt;/span&gt; cookbook from Opscode, but that doesn't handle installing and package as a specific user.&lt;br /&gt;&lt;br /&gt;Here is a hack that will use Ruby to check the Windows registry for an installed product and if found, prevent the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;powershell&lt;/span&gt; resource block from executing.&lt;br /&gt;&lt;br /&gt;Add this &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;registry_helper.rb&lt;/span&gt; to your cookbook's libraries directory:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;require 'win32/registry'&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;module RegistryHelper&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; INSTALLER_PRODUCTS = 'Installer\Products'&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; def RegistryHelper.is_in_classes_root?(path, product_name)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; found = false&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;Win32::Registry::HKEY_CLASSES_ROOT.open(path) do |reg|&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;reg.each_key do |key|&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;k = reg.open(key)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;if k['ProductName'] =~ /#{Regexp.quote(product_name)}/&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;found = true&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;break&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;end&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; end&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; return found&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In your recipe, include this library, and add a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;not_if&lt;/span&gt; block to the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;powershell&lt;/span&gt; resource statement:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;class Chef::Recipe&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; include RegistryHelper&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# The name to search for in the registry for idempotence&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;registry_name = 'Java(TM) SE Development Kit 6 Update 26'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;powershell "Install-jdk_6u26" do&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; ...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; # ensure idempotence&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; not_if do&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; RegistryHelper.is_in_classes_root?(RegistryHelper::INSTALLER_PRODUCTS, registry_name)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; end&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8281653055607626854-5867969050953901581?l=delivermind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delivermind.blogspot.com/feeds/5867969050953901581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://delivermind.blogspot.com/2011/10/windows-msi-idempotence-with-chef.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8281653055607626854/posts/default/5867969050953901581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8281653055607626854/posts/default/5867969050953901581'/><link rel='alternate' type='text/html' href='http://delivermind.blogspot.com/2011/10/windows-msi-idempotence-with-chef.html' title='Windows Registry-based Idempotence Check with Chef'/><author><name>Scott</name><uri>http://www.blogger.com/profile/08686700567546471850</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/-2XNnyKvj3Og/TfWdPhzgOMI/AAAAAAAAAEI/3GWvBQxmoWI/s220/TexasFlag.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8281653055607626854.post-4472751414691600031</id><published>2011-09-19T15:03:00.000-07:00</published><updated>2011-09-19T15:08:10.770-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='partial'/><category scheme='http://www.blogger.com/atom/ns#' term='metrics'/><category scheme='http://www.blogger.com/atom/ns#' term='capacity'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><category scheme='http://www.blogger.com/atom/ns#' term='focus-factor'/><title type='text'>Measuring Partial Points</title><content type='html'>I measure Scrum teams using a spreadsheet inspired by &lt;a href="http://rapidscrum.com/RoboScrum/index.php"&gt;Scott Downey's RoboScrum&lt;/a&gt;. One key indicator I watch for is partial work. To illustrate how this indicator is used, I will tell a story.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Sound Familiar?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A UI team of 6 members begins a sprint hoping to finish 35 story points worth of stories. They swarm effectively and near the end of their 2 week sprint, the team is so close to completing all of their stories. However, the team just knows two "in progress" stories are not going to get done.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The team shows up at the Sprint Review meeting bummed that they didn't get all their planned stories done. "I don't understand why we don't get credit for those stories, we were almost done!" the team complains to their ScrumMaster.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"Remember," the ScrumMaster reminds his team, "you do get credit!"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The ScrumMaster chuckles to himself as he reads the contorted faces of his team. "Velocity is the number we use to show how much we can get completely done. This is an important measurement for our product owner."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"But what about that 8 point story that only has a small amount of testing left? You mean we aren't going to get credit in our velocity for what we completed in that story? We probably only have 1 point left!"&lt;br /&gt;&lt;br /&gt;"I understand," the ScrumMaster accepts, "but did we get the story done? No."&lt;br /&gt;&lt;br /&gt;The ScrumMaster explains that credit for this partially done story is an important indicator that that team can use in future planning. Together with their velocity, the team can use partial points to determine their total capacity during the sprint as a goal for future sprints.&lt;br /&gt;&lt;br /&gt;Therefore, capacity is equal to a team's velocity plus the sum of partial points.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Capacity = Velocity + Partial Points&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Why Measure Partial Points?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Not only do partial points allow us to figure out a team's capacity, in story points, but they also help us measure a team's &lt;b&gt;focus factor&lt;/b&gt;. Scott Downey described focus factor in this way:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I, as a member of Leadership and not a member of a Scrum Delivery Team&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;Need a way to measure how much of each Team's bandwidth results in deployable product, &lt;i&gt;in a cross-team comparable way&lt;/i&gt;,&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;So that I can actively help sub-optimized teams intelligently allocate resources.&lt;/blockquote&gt;&lt;br /&gt;The formula for focus factor is:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Focus Factor = Velocity&amp;nbsp;÷ Capacity&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-fsbzNgx5I3E/Tne3Kyx-zdI/AAAAAAAAAHY/TFUkOac5Rpw/s1600/Deming.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-fsbzNgx5I3E/Tne3Kyx-zdI/AAAAAAAAAHY/TFUkOac5Rpw/s1600/Deming.png" /&gt;&lt;/a&gt;In summary, focus factor tells how close a team was to finishing 100% of their sprint. Teams that get around 80% in this category make me happy. Why 80%? Consider this statement by &lt;a href="http://en.wikipedia.org/wiki/W._Edwards_Deming"&gt;W. Edwards Deming&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;Attempts to force&amp;nbsp;non-deterministic systems&amp;nbsp;to operate at greater than&amp;nbsp;80% efficiency will cause&amp;nbsp;short bursts of stabilization&amp;nbsp;followed by extreme periods&amp;nbsp;of destructive and unpredictable variations&amp;nbsp;from that goal.&lt;/blockquote&gt;&lt;br /&gt;Besides, a team with a repeated focus factor of 100% tells me they probably need to take a sprint and stretch to new heights. A team consistently less than 80% may be taking on too much, or putting too many stories into progress at once.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;How do I Record Partial Points?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here is a sample from my metrics spreadsheet:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-sAuZFfzGB9k/Tne4BamkzjI/AAAAAAAAAHc/k9uyqwxFw8k/s1600/MetricsSnippet.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="132" src="http://4.bp.blogspot.com/-sAuZFfzGB9k/Tne4BamkzjI/AAAAAAAAAHc/k9uyqwxFw8k/s400/MetricsSnippet.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The "Actuals" section contains the results from each sprint (one sprint per row). The "Partial Done" column in the "Actuals" section contains the sum of all partial points from that sprint. This value of partial points automatically feeds into my Summary view to show the team's capacity (velocity + partial) and the team's focus factor.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-0krzpOo4fR4/Tne48izycLI/AAAAAAAAAHg/7fZexbuL97g/s1600/summary.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-0krzpOo4fR4/Tne48izycLI/AAAAAAAAAHg/7fZexbuL97g/s1600/summary.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;How do I Determine Partial Points?&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Recording them is the easy part! Getting a team to quantify partial points requires more work.&amp;nbsp;During a sprint review, I jump to stories that are not accepted as done and ask the team these questions:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;What is left to be done with this story?&lt;/li&gt;&lt;li&gt;What type of work is required to get the remainder done? Database work? Nagging? Test case verification?&lt;/li&gt;&lt;li&gt;What work was completed?&lt;/li&gt;&lt;li&gt;What type of work was the completed work? Coding? Automated tests? Design? Nagging?&lt;/li&gt;&lt;li&gt;Compared to our reference stories (you have them right?), how would the team estimate the work they completed?&lt;/li&gt;&lt;li&gt;Compared to our reference stories, how would the team estimate the remaining work?&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Question #5 tells you the number of partial points to capture for each story. The sum of these partial points is what is recorded above in the "Actuals" section.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8281653055607626854-4472751414691600031?l=delivermind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delivermind.blogspot.com/feeds/4472751414691600031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://delivermind.blogspot.com/2011/09/measuring-partial-points.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8281653055607626854/posts/default/4472751414691600031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8281653055607626854/posts/default/4472751414691600031'/><link rel='alternate' type='text/html' href='http://delivermind.blogspot.com/2011/09/measuring-partial-points.html' title='Measuring Partial Points'/><author><name>Scott</name><uri>http://www.blogger.com/profile/08686700567546471850</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/-2XNnyKvj3Og/TfWdPhzgOMI/AAAAAAAAAEI/3GWvBQxmoWI/s220/TexasFlag.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-fsbzNgx5I3E/Tne3Kyx-zdI/AAAAAAAAAHY/TFUkOac5Rpw/s72-c/Deming.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8281653055607626854.post-2965833354327080303</id><published>2011-09-07T08:25:00.000-07:00</published><updated>2011-09-07T08:25:07.157-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ready'/><category scheme='http://www.blogger.com/atom/ns#' term='spikes'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Follow-on stories to spikes</title><content type='html'>One of my ScrumMasters presented the following scenario about spikes:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Our team lead asked me about this and I wasn’t sure how to answer him. So I hope you can help.&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;We have a case where we have a spike story in our sprint. We have assigned some points to the story, say 3. After work on the spike is done we will create a new story based on what we learn from the spike. We don’t know the number of points to assign to the new story until the spike is done.&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;This isn’t a problem if we put the new story in the following sprint. The problem is what to do if the new story is in the same sprint as the spike.&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;Here’s my guess as to how we handle this situation and get all the ‘done’ credit we deserve: We assign the max amount of points we think the new story will take, say 8. Then if the story turns out to be less, say 3, then we pull in 5 points worth of stories from the back log. That will keep our total sprint points matched with our prediction.&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;Is there a better way to handle this situation?&lt;/blockquote&gt;&lt;br /&gt;So, a team has two stories A (the spike) and B. B should &lt;b&gt;NOT&lt;/b&gt; be pulled into a sprint until it is "ready." Remember, "ready" means that the story has acceptance criteria and an estimate in story points. Until A (the spike) is done, you don't know the acceptance criteria and estimate for B, and is therefore, not ready.&lt;br /&gt;&lt;br /&gt;&lt;div class="p1"&gt;For a great exposition on the impact of ready stories see this article by Carsten Jakobsen and Jeff Sutherland: &lt;i&gt;&lt;a href="http://www.systematic.com/Files/IS%20files/Downloads/Articles/Articles%20in%20English/Scrum%20and%20CMMI%20-%20Going%20from%20Good%20to%20Great.pdf"&gt;Scrum and CMMI - Going from Good to Great (Are you ready-ready to be done-done?)&lt;/a&gt;&lt;/i&gt;.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;If you want A and B done in the same sprint, the only logical strategy is to plan for A during your sprint planning and leave B on the product backlog. Once the spike is done, the team needs to work with the product owner to determine the acceptance criteria for B and put an estimate on it - making it "ready." Then, B will be "ready" and can be "adopted" into the sprint if the team feels like they can do B plus the rest of their planned stories.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Assigning the max amount of points to B is just sand-bagging an unknown risk. Avoid that. Teams are more productive when they plan stories that are ready because they don't have to go back and forth during the sprint to get more clarity on stories with the product owner.&amp;nbsp;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Teams that adopt stories consistently show that they should plan to do a higher target velocity. Teams that have consistent unplanned work show that they are not prepping the backlog effectively. There is a sweet spot you have to find as a team.&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;This A (spike)/B pattern is a rare occurrence for teams. Training the product owner to know that spikes run ahead of the real story implementation helps remedy this dysfunction.&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8281653055607626854-2965833354327080303?l=delivermind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delivermind.blogspot.com/feeds/2965833354327080303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://delivermind.blogspot.com/2011/09/follow-on-stories-to-spikes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8281653055607626854/posts/default/2965833354327080303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8281653055607626854/posts/default/2965833354327080303'/><link rel='alternate' type='text/html' href='http://delivermind.blogspot.com/2011/09/follow-on-stories-to-spikes.html' title='Follow-on stories to spikes'/><author><name>Scott</name><uri>http://www.blogger.com/profile/08686700567546471850</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/-2XNnyKvj3Og/TfWdPhzgOMI/AAAAAAAAAEI/3GWvBQxmoWI/s220/TexasFlag.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8281653055607626854.post-7119754259814231636</id><published>2011-08-12T15:43:00.000-07:00</published><updated>2011-08-13T16:00:03.294-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile2011'/><title type='text'>Agile 2011</title><content type='html'>The Agile 2011 conference is over. The content and networking were both amazing. Some take-aways are listed below:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Technologies&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I need to learn Ruby&lt;/li&gt;&lt;li&gt;Learn Cucumber&lt;/li&gt;&lt;li&gt;Play with Vagrant (thanks Patrick Debois and Julian Simpson)&lt;/li&gt;&lt;li&gt;Git (it's time to move on from subversion Scott!)&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;b&gt;Agile Practice&lt;/b&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Introduce games to help improve retrospectives. I learned the 5 Whys, timeline, and movie conversations games.&lt;/li&gt;&lt;li&gt;Develop a "kaizen mind" by creating and sizing kaizen stories with acceptance criteria (based on a lunch conversation with Jeff Sutherland)&lt;/li&gt;&lt;li&gt;Assume someone is trying to kill your project everyday. Use the daily scrum's self-organization to perform your evasive maneuvers. Jeff Sutherland compared this to his days as a fighter pilot.&lt;/li&gt;&lt;li&gt;Update my coaching material for self-organizing teams and introduce some new games (60 steps in 60 seconds and the single file line)&lt;/li&gt;&lt;li&gt;Update my coaching material for ScrumMasters - the ScrumMaster is the friend to the team. How many PMs can say that about themselves?&lt;/li&gt;&lt;li&gt;Explore how focusing on positive emotions can enhance sprint planning and backlog preparation, see&amp;nbsp;&lt;a href="http://www.unc.edu/peplab"&gt;http://www.unc.edu/peplab&lt;/a&gt;. Must counter each negative emotion with three positive emotions to maintain balance.&lt;/li&gt;&lt;li&gt;Read up on vagal tone&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;b&gt;Observations&lt;/b&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Jez Humble embodies his name: humble. Cool guy based on my 30 minute conversation with him.&lt;/li&gt;&lt;li&gt;Find @ernestmeuller from NI and talk with him about windows devops&lt;/li&gt;&lt;li&gt;Waterfall optimizes for utilization, lean optimizes for cycle time (with the slack going to kaizen)&lt;/li&gt;&lt;li&gt;"Great teams change people's lives" (Jeff Sutherland)&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8281653055607626854-7119754259814231636?l=delivermind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://delivermind.blogspot.com/feeds/7119754259814231636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://delivermind.blogspot.com/2011/08/agile-2011.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8281653055607626854/posts/default/7119754259814231636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8281653055607626854/posts/default/7119754259814231636'/><link rel='alternate' type='text/html' href='http://delivermind.blogspot.com/2011/08/agile-2011.html' title='Agile 2011'/><author><name>Scott</name><uri>http://www.blogger.com/profile/08686700567546471850</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://2.bp.blogspot.com/-2XNnyKvj3Og/TfWdPhzgOMI/AAAAAAAAAEI/3GWvBQxmoWI/s220/TexasFlag.png'/></author><thr:total>0</thr:total></entry></feed>
