<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Chris Flaat's WebLog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/cflaat/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/cflaat/feed.xml</link>
    <description>Discussion of software processes and MSFT developer technologies.</description>
    <lastBuildDate>Tue, 16 Apr 2019 04:52:22 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Trying out pair programming</title>
      <link>https://docs.microsoft.com/archive/blogs/cflaat/trying-out-pair-programming</link>
      <pubDate>Fri, 30 Dec 2005 13:34:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris Flaat, MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cflaat/2005/12/30/trying-out-pair-programming/</guid>
      <description><![CDATA[Greetings all –
&nbsp;
My team has been reporting success with pair programming, so I wanted to...]]></description>
      <content:encoded><![CDATA[<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Greetings all –</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">My team has been reporting success with pair programming, so I wanted to try it out myself.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>This week one of my reports and I paired up to do a bit of maintenance work where we’re moving some automated tests around and setting aside some to act as compatibility tests.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>So it wasn’t exactly pair “programming” in the strictest sense but it was still pairing on nontrivial technical work and so essentially the same.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">We had two pairing sessions this week, and then we’ll have another today to hopefully wrap the work item up.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">I’m happy to report that it has gone well, much better than I expected.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>My experiences matched those which my team and others in the industry have reported:</P>
<UL style="MARGIN-TOP: 0in" type=disc>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in">Many errors get caught immediately by the “navigator” (the person not typing at the time)</LI>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in">Work gets done in less elapsed time (clock time), although it may take longer in terms of “person hours” (clock time multiplied by # of people)</LI>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in">It’s more fun</LI>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in">It’s VERY mentally draining – I found that after 3 hours my productivity &amp; focus started to decline</LI>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in">Having another person there helps motivate you to get through mundane work, and also pushes you to the highest possible quality standards</LI></UL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">After having done pairing on this task, I now find it frightening to imagine any critical coding task being done alone by somebody.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">I still haven’t figured out a clean way to schedule pairing (in the sense of accounting for it in the sprint backlog).<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>We are finding that velocity is a superior way to predictably schedule sprint capacity (as opposed to top-down scheduling by “person days”), which frees you from trying to do wacky mathematical translations from individual person day costings into pair costings.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>But I still to wrap my head around the best way to explain the cost impact to management types.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">My advice: try out pair programming – it really is a great practice.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I feel about pair programming the same way I did after doing TDD the first time: for tasks where it makes sense, I wouldn’t want to go back to doing it “the old way”.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Over &amp; out!</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Chris</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"></o:p>&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Software metrics primarily useful as negative indicators?</title>
      <link>https://docs.microsoft.com/archive/blogs/cflaat/software-metrics-primarily-useful-as-negative-indicators</link>
      <pubDate>Fri, 30 Dec 2005 12:50:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris Flaat, MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cflaat/2005/12/30/software-metrics-primarily-useful-as-negative-indicators/</guid>
      <description><![CDATA[Dear Readers –
&nbsp;
I was thinking about metrics, and it occurred to me that most of the metrics...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Dear Readers –</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">I was thinking about metrics, and it occurred to me that most of the metrics we commonly use in the industry are really good as negative indicators of quality, efficiency, testing, etc. but lousy positive indicators.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>That is, most software metrics are really good at telling you when something is wrong with your project, but they don’t give you much assurance that the project is actually on the <I style="mso-bidi-font-style: normal">right</I> track.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>(I’m sure someone else has already thought of this, but I figured I’d pass on my random though nonetheless.)</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Code coverage is a classic example.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Code coverage can be viewed as a measure of what you’re <I style="mso-bidi-font-style: normal">not</I> testing.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I.e. if I have 60% code coverage then I know that 40% of my code is not being tested at all.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>However, the 60% code coverage gives me no assurance that the testing of that 60% is actually any good, because there can of course be a vast combination of different code paths through any piece of complex code.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Bug numbers are another example.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>A high rate of reported bugs is clearly a sign that something is amiss.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>However, a low rate of reported bugs doesn’t necessarily mean you’re on track.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>What if your QA team is off writing documents and not testing the product?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>In that case a low rate of reported bugs is simply reflecting a lack of testing activity.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Similarly, a very low rate of bug fixing is often (though not always) a sign that something is amiss.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>However, a high rate of bug fixing is not comforting – it may simply reflect that devs are rushing work in order to make the #’s look good.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Code complexity is another example.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>High code complexity is generally a bad sign for your code’s maintainability (with the exception of some specific code patterns like a parsing or message handling function).<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>However, low code complexity doesn’t mean that your code is necessarily “good” in any other respect.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>It could be utter trash, broken up into small functions.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Conformance of work estimates to actual time spent is another one.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>If the actual time spent on a task is way longer (or shorter) than the estimate, that tells you that your estimation process is not very accurate.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>However, if someone’s actual time spent on a task always closely jives with their estimates, that’s really not very comforting unless you’re absolutely, positively sure that no other aspect of their work has been compromised as a result (i.e. there’s no “distortion” as Robert D. Austin calls it in his excellent book <I style="mso-bidi-font-style: normal">Measuring and Managing Performance in Organizations</I>, which I highly recommend to anyone interested in metrics).</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">By these comments I don’t mean to bash these metrics – they are very useful as a way of identifying potential problems and fixing them.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>But they have to be viewed as specialized indicators, not numbers to be mindlessly met.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Most software metrics make great gauges but lousy controls.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Over &amp; out!</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Chris</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>People are not fungible resources</title>
      <link>https://docs.microsoft.com/archive/blogs/cflaat/people-are-not-fungible-resources</link>
      <pubDate>Fri, 16 Dec 2005 17:59:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris Flaat, MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cflaat/2005/12/16/people-are-not-fungible-resources/</guid>
      <description><![CDATA[Hi all –
&nbsp;
We are currently using both Scrum and more traditional project management on...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Hi all –</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">We are currently using both Scrum and more traditional project management on several efforts going on within our product unit, and I thought I’d share some learnings.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Something we’re running into is that getting people dedicated to one effort can be hard, depending on the management style of the relevant managers.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>For some parts of the team, the relevant leads &amp; managers dedicated people to one effort.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>For other parts of the team, the leads &amp; managers insisted on partial assignments, e.g. saying Boffo is 50% on team A and 50% on team B.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">This is a basic point of difference between task-based project management (where people are assumed to be fungible resources) and people-based project management (where the team of people is first determined, and their work items second).</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">As you might guess, so far it is apparent that partial assignment of people does not work very well (both for efforts using Scrum and for traditional projects).<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>It seems to me that a time split will seldom be 50/50 – instead it will be 80/20 or 90/10, depending on which task is more urgent or more interesting.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">On several projects where we aren’t using Scrum but where people are being loaned across teams in the division to do something, we heard again &amp; again that partial assignments are causing problems because the people aren’t fully dedicated (timewise) to the tasks, and it’s very hard to schedule.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Likewise, on the efforts where we have used Scrum, having someone partially available doesn’t jive well – hard to build cohesion and have smooth coordination with people who aren’t always around &amp; may have the tasks from your sprint on the back burner.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Moreover, it’s pretty obvious to most people that if you are working on 2 or more project simultaneously, there is a high price to be paid for context switches.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">So, based on what we’ve seen so far, my advice to my readers is that you should avoid assigning people fractionally – instead, pick one task and throw them fully at it.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>As has been said for a long time, people are not fungible resources.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Over &amp; out!</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Chris</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>]]></content:encoded>
    </item>
    <item>
      <title>Sprint 9 complete</title>
      <link>https://docs.microsoft.com/archive/blogs/cflaat/sprint-9-complete</link>
      <pubDate>Thu, 10 Nov 2005 12:37:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris Flaat, MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cflaat/2005/11/10/sprint-9-complete/</guid>
      <description><![CDATA[Hi all –
&nbsp;
Well, we did sprint 9 broken up into two subteams, and it went quite well...]]></description>
      <content:encoded><![CDATA[<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Hi all –</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Well, we did sprint 9 broken up into two subteams, and it went quite well overall.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>The tone of the team in the sprint retrospective was generally positive, and the “things that could be improved” were generally focused on the way we were executing on specific work items rather than focusing on the process.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>There was significant positive feedback about breaking the teams up to smaller, more focused Scrum teams, so that was definitely a win.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Moral of the story: having a Scrum team that’s too big (esp. &gt;10) is really bad.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">One other curious thing: every sprint there’s always at least one person who wants to change the daily scrum time (and this sprint, a chicken was also inexplicably pushing to change the time!).<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>For a long time we had it at 4pm, but then one person couldn’t do that for commute reasons, so we moved our dual daily scrums to the window between 11:45am &amp; 12:15pm.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Then, of course, some people complained that it’s in the middle of the day and makes it inconvenient to go out to lunch.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>My answer is always to deflect this back to the person raising the issue: “[X], if you can get the team to agree on a different time, then we’ll do it at that time”.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>So far they never have, but we’ll see.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">It occurs to me that there is perhaps one annoying aspect of the Scrum retrospective from the ScrumMaster’s perspective: it almost puts people into a whiny mood, complaining about things they otherwise wouldn’t bring up.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>This is of course a minor point, and the goodness of the retrospective is enormous and overwhelmingly positive.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>But it does point out one essential skill for a ScrumMaster: the ability to distinguish between unimportant complaints and truly important ones, and steer the conversation appropriately.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Chris</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></o:p></P>]]></content:encoded>
    </item>
    <item>
      <title>Bridging the Gap, etc.</title>
      <link>https://docs.microsoft.com/archive/blogs/cflaat/bridging-the-gap-etc</link>
      <pubDate>Mon, 17 Oct 2005 12:55:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris Flaat, MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cflaat/2005/10/17/bridging-the-gap-etc/</guid>
      <description><![CDATA[Greetings all –
&nbsp;
My apologies for being behind on posting.&nbsp; Things have been really...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Greetings all –</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">My apologies for being behind on posting.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Things have been really crazy around here with VS2005 shutting down and work on the next major release ramping up.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I’ve been tasked to help out with some engineering improvement initiatives going on in the division and this has soaked up much of my available time.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">During the last sprint (sprint 8), we put all the efforts of the MSBuild team on a Scrum team.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>This had one downside, which was that the team got too large (10+ people).<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I knew this would be an issue, but it turned out to be really big.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>The meetings got too big and the goal was too unfocused, and people definitely didn’t like it (the sprint retrospective had a very negative cast to it).</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">During the current sprint (sprint 9), we finally split into two separate teams, one doing more internal-focused work and the other doing more forward-looking work (although the entire team still comes together for design decisions, etc.).<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>This has so far worked quite well (or so it seems).<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>It will be interesting to see what the team thinks at the sprint retrospective.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">One of the more interesting phenomena is that during the last sprint a few team members were complaining about how they thought Scrum had too much overhead and they wanted to try something different.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>One of the really ironic things about this is that they were using Scrum data to argue this, and they were using the Scrum retrospective as the window into their issues!<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Whenever I start to drill into why people think we should use another process, they usually come back with an answer like “we have too many other distractions”, “so-and-so is too hard to work with”, etc. – generally things that have nothing to do with Scrum, but that Scrum has showed them.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Very bizarre.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Usually I’m pretty patient with this, but sometimes I want to pull my hair out and point out that if we weren’t using Scrum, the same issues would exist but there would simply be less visibility into them and less opportunity to fix them.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Another good one is that one or two of the people on the team will occasionally complain that they don’t like having a meeting every day, but these are often the same people who would otherwise complain that they didn’t have enough insight into what the rest of the team is doing.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Anyways, I’ve found that Scrum has been useful for us in “bridging the gap” between the end of one product cycle and the beginning of another.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>When other teams were trying to figure out their plans, we simply continued to execute against our product backlog and kept doing sprints, and the team stayed engaged, we have avoided analysis paralysis, and things are rolling pretty well.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Right now I really feel like the avoidance of analysis paralysis is an enormous benefit, but a hidden one – you don’t notice the benefit unless you’ve lived through the problematic situation from past experience and realize the joy in not going through it.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">That’s all for now!</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Chris</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p></o:p>&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Agile 2005</title>
      <link>https://docs.microsoft.com/archive/blogs/cflaat/agile-2005</link>
      <pubDate>Tue, 02 Aug 2005 14:09:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris Flaat, MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cflaat/2005/08/02/agile-2005/</guid>
      <description><![CDATA[Hi all -
&nbsp; Several people from MSBuild, the Developer Division, and Microsoft went to Agile...]]></description>
      <content:encoded><![CDATA[<P>Hi all -<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></P>
<P>&nbsp; Several people from MSBuild, the Developer Division, and Microsoft went to <A href="http://www.agile2005.org/">Agile 2005</A> last week in <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:City w:st="on"><st1:place w:st="on">Denver</st1:place></st1:City>.&nbsp; It was very worthwhile.&nbsp; I really enjoyed the keynotes and getting to meet a lot of others at MSFT doing agile methods as well as people from industry &amp; academia.&nbsp; I can now put a face with a lot of the agile gurus whose books I've read and that I've heard about.&nbsp; The next Agile conference is July 2006 in <st1:City w:st="on"><st1:place w:st="on">Minneapolis</st1:place></st1:City>.<o:p></o:p></P>
<P>&nbsp; I would say that about 50% of the talks I went to were really good, 25% were interesting but not necessarily useful or applicable, and 25% weren't very good.<o:p></o:p></P>
<P>&nbsp; For me, the top takeaway was the rise in prominence of automated acceptance testing (e.g. with Fit).&nbsp; This is something that would be most useful inside MSFT, as we often have complex integration scenarios with other teams, and having a clear set of acceptance tests would do wonders to help clarify up front scenarios that are &amp; aren't expected to work.&nbsp; After all, if you can't provide a dozen testable examples of things that should work, you don't really understand what you're trying to do.<o:p></o:p></P>
<P><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Another obvious takeaway was the utility of computing velocity, which I’ve done retroactively for our past sprints.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I’ll probably blog separately about that.</P>
<P><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Another obvious takeaway is the trend toward automating everything that you find useful: dev &amp; QA tests, metrics reporting, project status, etc.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>If it’s automated, it will happen; if it’s not, it may not – this is just human nature.</P>
<P><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I’m somewhat annoyed that they have the Agile conference in the summer, as this is when I (and many others) already have travel plans.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Plus, we’re inside all day so it’s not like you really get to enjoy the weather anyway.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>I would rather have it in the winter or fall.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>But, not a huge deal.</P>
<P>Over &amp; out!</P>
<P>Chris</P>
<P>
<P>&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Sprint 6 winding down</title>
      <link>https://docs.microsoft.com/archive/blogs/cflaat/sprint-6-winding-down</link>
      <pubDate>Fri, 01 Jul 2005 18:25:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris Flaat, MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cflaat/2005/07/01/sprint-6-winding-down/</guid>
      <description><![CDATA[Well, we finally kicked off sprint&nbsp;6 in June, and it finishes up next week.&nbsp; Being summer,...]]></description>
      <content:encoded><![CDATA[<P>Well, we finally kicked off sprint&nbsp;6 in June, and it finishes up next week.&nbsp; Being summer, there have been a lot of vacations plus a Microsoft-wide forum that ate up a lot of time.&nbsp; I expect that sprint 7 will have fewer randomizations, esp. since the core Whidbey work that the other part of our team is working on is winding down.&nbsp; However, for several reasons we will still be a bit short on people during sprint 7, so we probably won't start any kind of dual-sprint approach until sprint 8 (which would presumably start in mid/late August).</P>
<P>During this sprint the team has spent a lot of time talking about improving estimates, and tracking the time spent.&nbsp; Some people suggest that we track the time <STRONG>spent</STRONG> on each item, but of course some (myself included) think that's a bad and non-agile road to go down.&nbsp; My personal view is that the things that slow us down tend not to be massive underestimation of work items (although we're far from perfect in that regard), but rather getting hit by other things.&nbsp; We've tried to account for that in sprint 6 using a "risk reserve" as I've alluded to in prior postings.&nbsp; That has worked fairly well in terms of setting aside sufficient time to deal with randomizations, although it's hard to get people to account for overhead and materialized risks.</P>
<P>Another issue that keeps coming up is that we keep saying we'll deploy our stuff every other week or so, but invariably it gets pushed to the end, which of course increases pressure in the last week.&nbsp; Hopefully we can find a way out of this in future sprints.</P>
<P>I continue to see positive communication and team cohesion results from Scrum, which alone make me want to continue using it.&nbsp; In addition I feel it's a great way of organizing work and getting shared focus on a set of goals.</P>
<P>The really interesting stuff will happen with sprint 8 when we try to do "mainline" product work using Scrum...</P>
<P>Over &amp; out!</P>
<P>Chris</P>]]></content:encoded>
    </item>
    <item>
      <title>Pondering next steps</title>
      <link>https://docs.microsoft.com/archive/blogs/cflaat/pondering-next-steps</link>
      <pubDate>Thu, 05 May 2005 12:48:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris Flaat, MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cflaat/2005/05/05/pondering-next-steps/</guid>
      <description><![CDATA[Hi all -
&nbsp; With sprint 5 done, we are now in a quiet period, as we have balanced most of the...]]></description>
      <content:encoded><![CDATA[<P>Hi all -</P>
<P>&nbsp; With sprint 5 done, we are now in a quiet period, as we have balanced most of the resources on our project toward helping Whidbey get finished.&nbsp; We will probably pull some resources back soon, however.</P>
<P>&nbsp; I have been thinking about how to get the part of our team that isn't using Scrum onto the Scrum model.&nbsp; It's hard, because this other part of the team is working in a reactive mode, fixing newly found bugs and other last-minute issues that arise.&nbsp; This kind of thing is hard to model in a sprint backlog in any way other than sets of buffers.&nbsp; So, I'm not sure what to do.&nbsp; Maybe we will just wait until there's some "ordinary" work (that is, work that means forward progress on new capabilities) to be done, and include some of these reactive tasks via a buffer.</P>
<P>&nbsp; Our entire feature team is too big to fit into one Scrum team, but would split up into two nicely-sized ones.&nbsp; So I'm also thinking about how best to deal with this.&nbsp; As far as scheduling, maybe we will stagger the teams off by two weeks so we don't have sprint endings and the associated planning meetings happening during the same time periods (yikes!).&nbsp; Another issue is ensuring cross-team communication; we still want to operate as one feature team even though there is a split (but related) focus.&nbsp; Maybe we'll have to follow the advice I read somewhere (Schwaber's book?) to have 1-2 pigs always visit the other team meetings as chickens and report back.</P>
<P>&nbsp; If anyone has suggestions on dealing with two Scrum teams within a single conceptual "feature team", I'd be interested in hearing them.</P>
<P>Signing out!</P>
<P>Chris</P>
<P>&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Managing the Product Backlog</title>
      <link>https://docs.microsoft.com/archive/blogs/cflaat/managing-the-product-backlog</link>
      <pubDate>Mon, 18 Apr 2005 11:56:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris Flaat, MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cflaat/2005/04/18/managing-the-product-backlog/</guid>
      <description><![CDATA[There was a question from Dave Froslie on what we use to store our Product Backlog.&nbsp; We use an...]]></description>
      <content:encoded><![CDATA[<P>There was a question from Dave Froslie on what we use to store our Product Backlog.&nbsp; We use an internal wiki page.&nbsp; Wiki's are nice because they're easy to view, easy to edit (not only for the Product Owner but also for people with suggestions who can add them in a suggestion section at the bottom for the Product Owner to prioritize later), and you can easily see different versions.&nbsp; You can also track modifications and hunt down people who mess with prioritizations.&nbsp; :-)</P>
<P>For our Sprint Backlog we use an (ever more elaborate) Excel spreadsheet.</P>
<P>Take care,</P>
<P>Chris</P>
<P>&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Question about Scrum, waterfall, and more</title>
      <link>https://docs.microsoft.com/archive/blogs/cflaat/question-about-scrum-waterfall-and-more</link>
      <pubDate>Wed, 13 Apr 2005 12:58:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris Flaat, MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cflaat/2005/04/13/question-about-scrum-waterfall-and-more/</guid>
      <description><![CDATA[Hi all –
&nbsp;
A reader named Steve Henke writes with some questions:
&nbsp;
First, you...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal>Hi all –</P>
<P class=MsoNormal><o:p>&nbsp;</o:p></P>
<P class=MsoNormal>A reader named Steve Henke writes with some questions:</P>
<P class=MsoNormal><o:p>&nbsp;</o:p></P>
<P class=MsoNormal>First, you mentioned your concern about waterfall being used in the next major division release but with even more centralized control than before. Why do you expect more centralized control? Because of results from your team's Scrum efforts or other external factors?<BR><SPAN>&nbsp;</SPAN><BR>Second, how do code reviews fit into your practices, if at all?</P>
<P class=MsoNormal><o:p>&nbsp;</o:p></P>
<P class=MsoNormal>[…]</P>
<P class=MsoNormal><o:p>&nbsp;</o:p></P>
<P class=MsoNormal>P.S. Have you blogged before about the most useful books on Scrum?</P>
<P class=MsoNormal><o:p>&nbsp;</o:p></P>
<P class=MsoNormal>Let me first address the question about waterfall &amp; centralized processes.<SPAN>&nbsp; </SPAN>Most MSFT products are developed in a quasi-waterfall model where a bunch of planning is done (driven by PM’s), then a bunch of implementation milestones (driven by devs), and then a bunch of stabilization (driven by QA).<SPAN>&nbsp; </SPAN>In reality we take a slightly more iterative approach by breaking the product up into milestones (but it’s certainly not “iterative” to the extent people use the term in the Agile community).<SPAN>&nbsp; </SPAN>Of course, different groups can take a different approach (e.g. some internal MSFT teams exclusively use Scrum, some use XP, etc. – however most use a variation of the quasi-waterfall I described earlier).</P>
<P class=MsoNormal><o:p>&nbsp;</o:p></P>
<P class=MsoNormal>I don’t know if there will be more centralized control in the next release, but it’s certainly a risk.<SPAN>&nbsp; </SPAN>You never really know in a big organization.<SPAN>&nbsp; </SPAN>However, I try to emphasize to some of the movers-n-shakers the desirability of letting each team make progress in its way (whether they will listen to me or not, I dare not guess).<SPAN>&nbsp; </SPAN>To be fair, shipping a product that has thousands of people working on it introduces many challenges of scope, so there has to be a balance between centralized assessment of overall progress and local flexibility to make progress in the most locally efficient way.</P>
<P class=MsoNormal><o:p>&nbsp;</o:p></P>
<P class=MsoNormal>Regarding code reviews, on my team they are mandatory for all checkins.<SPAN>&nbsp; </SPAN>However, we do not prescribe the code review process very precisely; it is left up to the code reviewer’s discretion to decide how much time to spend analyzing someone else’s changes before signing off on them (or sending them back for changes).</P>
<P class=MsoNormal><o:p>&nbsp;</o:p></P>
<P class=MsoNormal>As for useful books about Scrum, the one I recommend is <A href="http://www.microsoft.com/MSPress/books/6916.asp">Agile Project Management with Scrum</A> by Ken Schwaber.</P>
<P class=MsoNormal><o:p>&nbsp;</o:p></P>
<P class=MsoNormal>Over &amp; out!</P>
<P class=MsoNormal>Chris</P>]]></content:encoded>
    </item>
  </channel>
</rss>