<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Software Development is a Team Sport! : Teams</title><link>http://blogs.msdn.com/aridle/archive/tags/Teams/default.aspx</link><description>Tags: Teams</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Agile Prioritization</title><link>http://blogs.msdn.com/aridle/archive/2007/04/27/agile-prioritization.aspx</link><pubDate>Sat, 28 Apr 2007 04:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2306557</guid><dc:creator>aridle</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/aridle/comments/2306557.aspx</comments><wfw:commentRss>http://blogs.msdn.com/aridle/commentrss.aspx?PostID=2306557</wfw:commentRss><wfw:comment>http://blogs.msdn.com/aridle/rsscomments.aspx?PostID=2306557</wfw:comment><description>&lt;P&gt;Joel Spolsky and Dmitri Zimine mixed it up last November over whether or not to interrupt a team in the middle of an iteration.&amp;nbsp; I'm pretty late to this thread.&amp;nbsp; But, I think I have something to add.&amp;nbsp; So, here goes...&lt;/P&gt;
&lt;P&gt;Dmitri &lt;A href="http://www.agileadvice.com/archives/2006/11/how_two_hours_c.html" mce_href="http://www.agileadvice.com/archives/2006/11/how_two_hours_c.html"&gt;started the thread&lt;/A&gt; by arguing on behalf of never interrupting an iteration once it starts.&amp;nbsp; Basically, he's just parroting the party line from the Scrum doctrine: Management is not allowed to interfere with the operation of a team during a sprint.&amp;nbsp; If they do, the team can cancel the sprint.&lt;/P&gt;
&lt;P&gt;Joel &lt;A href="http://www.joelonsoftware.com/items/2006/11/15.html" mce_href="http://www.joelonsoftware.com/items/2006/11/15.html"&gt;countered&lt;/A&gt;&amp;nbsp;that you should consider the nature of the interruption before blindly preventing it.&amp;nbsp; He argues in his&amp;nbsp;inimitable&amp;nbsp;way&amp;nbsp;that&amp;nbsp;the financial independence of the individuals involved could very well be at stake.&amp;nbsp; He may as well have been&amp;nbsp;yelling: "Take door number 3!"&lt;/P&gt;
&lt;P&gt;What both guys missed is that they are arguing the opposing sides of a pendulum, and that the real truth probably lies somewhere in the middle.&amp;nbsp; (Ironic considering the tagline on Dmitri's blog.)&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Here's my advice when faced with the decision of whether or not to accept new work after an iteration has started:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Take five minutes to estimate the newly requested work.&lt;/LI&gt;
&lt;LI&gt;Communicate this estimate to the person who requested the change in scope.&lt;/LI&gt;
&lt;LI&gt;Explain the concept of velocity (if necessary).&lt;/LI&gt;
&lt;LI&gt;Ask them to stack rank the new work into the remaining backlog of unfinished work for the current iteration.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;There, now.&amp;nbsp; Everyone has visibility into the process.&amp;nbsp; And, the person in the best position to make the call as to priorities - the one who knows both the benefits and (now) the costs of swapping in new work - is the one responsible for making the decision.&amp;nbsp; That's what I call Agile Prioritization.&lt;/P&gt;
&lt;P&gt;For further study, I recommend that Dmitri and Joel (and everyone else)&amp;nbsp;read&amp;nbsp;Mike Cohn's excellent book: &lt;EM&gt;&lt;A href="http://www.amazon.com/gp/product/0131479415?ie=UTF8&amp;amp;tag=alaridsblo-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0131479415" mce_href="http://www.amazon.com/gp/product/0131479415?ie=UTF8&amp;amp;tag=alaridsblo-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0131479415"&gt;Agile Estimating and Planning&lt;/A&gt;.&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2306557" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/aridle/archive/tags/Agile/default.aspx">Agile</category><category domain="http://blogs.msdn.com/aridle/archive/tags/Teams/default.aspx">Teams</category><category domain="http://blogs.msdn.com/aridle/archive/tags/Recommended/default.aspx">Recommended</category><category domain="http://blogs.msdn.com/aridle/archive/tags/Books/default.aspx">Books</category><category domain="http://blogs.msdn.com/aridle/archive/tags/Planning/default.aspx">Planning</category></item><item><title>Capacity vs. Velocity</title><link>http://blogs.msdn.com/aridle/archive/2007/04/03/capacity-vs-velocity.aspx</link><pubDate>Wed, 04 Apr 2007 02:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2021690</guid><dc:creator>aridle</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/aridle/comments/2021690.aspx</comments><wfw:commentRss>http://blogs.msdn.com/aridle/commentrss.aspx?PostID=2021690</wfw:commentRss><wfw:comment>http://blogs.msdn.com/aridle/rsscomments.aspx?PostID=2021690</wfw:comment><description>&lt;P&gt;My team&amp;nbsp;just completed a discussion - at times a rather passionate discussion - about what work items we should be tracking in TFS.&amp;nbsp; &lt;A href="http://blogs.msdn.com/sanjeg" mce_href="http://blogs.msdn.com/sanjeg"&gt;Sanjeev&lt;/A&gt;, our PM, argued in favor of tracking everything we do - except meetings.&amp;nbsp; I, lead dev and agile purist that&amp;nbsp;I am, argued in favor of only tracking those work items that directly contributed functionality to the software we are building.&amp;nbsp; But, ultimately, we decided to track both.&amp;nbsp; Here's why:&lt;/P&gt;
&lt;P&gt;The argument for tracking everything is that unless we track all activity, we might miss some task that we are required to do.&amp;nbsp; For example, the development process used in Developer Division at Microsoft requires us to pass several "quality gates" (such as a security review) before we integrate our work into the central repository.&amp;nbsp; This work must be done, in order to satisfy the process.&amp;nbsp; And, there are several different tasks that fall out of this work.&amp;nbsp; Tracking them all makes sure we don't miss any required steps.&lt;/P&gt;
&lt;P&gt;The argument for tracking only those things that directly contribute to the software is that by tracking everything, we will not be able to accurately predict when we will be done with our backlog.&amp;nbsp; Non-backlog items would be given equal weight to backlog items.&amp;nbsp; So, it would be impossible to set priorities.&amp;nbsp; And, it would be impossible to accurately predict when we will be "done" with our backlog.&lt;/P&gt;
&lt;P&gt;Needless to say, both Sanjeev and I felt strongly about our positions.&amp;nbsp; (We had to break out the "talking stick" in order to keep from talking over each other.)&amp;nbsp; But, ultimately, we decided that we were both right.&amp;nbsp; So, we're going to track everything (capacity) and flag those items that directly contribute to reducing the backlog (velocity).&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Our hope is that this will give us meaningful information about the taxes our development process imposes on us, as well as a way of prioritizing work that directly relates to reducing the backlog.&amp;nbsp; Once we have both numbers, we will begin trying to squeeze as much velocity into our capacity as possible.&amp;nbsp; Ultimately, I would like to see a burn-down chart that looks something like this:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/aridle/WindowsLiveWriter/Capacityvs.Velocity_E38C/image%7B0%7D%5B27%5D.png" atomicselection="true" mce_href="http://blogs.msdn.com/blogfiles/aridle/WindowsLiveWriter/Capacityvs.Velocity_E38C/image%7B0%7D%5B27%5D.png"&gt;&lt;IMG height=291 src="http://blogs.msdn.com/blogfiles/aridle/WindowsLiveWriter/Capacityvs.Velocity_E38C/image%7B0%7D_thumb%5B13%5D.png" width=483 border=0 mce_src="http://blogs.msdn.com/blogfiles/aridle/WindowsLiveWriter/Capacityvs.Velocity_E38C/image%7B0%7D_thumb%5B13%5D.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Where:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Total Work =&amp;nbsp;All work, including features &amp;amp; overhead&lt;/LI&gt;
&lt;LI&gt;Feature Work = All feature work (sans overhead)&lt;/LI&gt;
&lt;LI&gt;Overhead Work = All non-feature work, including "infrastructure" or "process" imposed work items that do not directly contribute functionality to the resulting software.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Calling attention to the overhead (as this chart does) allows the team (and their managers) to think about how much more productive they could be without it.&amp;nbsp; Some of it will be out of the team's control - like the "quality gates" here at Microsoft.&amp;nbsp; But, other bits of it will be within the team's control - like sending everyone to group status meetings when a single representative might suffice.&lt;/P&gt;
&lt;P&gt;In other words, the three trend lines could be restated as:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Projected Total = This is when we think we will finish everything.&lt;/LI&gt;
&lt;LI&gt;Projected Feature = This is when we think we will finish the features.&lt;/LI&gt;
&lt;LI&gt;Projected&amp;nbsp;Feature without Overhead = This is the soonest we could possibly finish the backlog, assuming all overhead items were to disappear.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;So, in the example chart, the team in question expects to be done in&amp;nbsp;iteration 14.&amp;nbsp; They also believe that they will be finished with their feature work in&amp;nbsp;iteration 12.&amp;nbsp; And, if they were to drop everything but the feature work, the soonest they could finish would be iteration 9.&amp;nbsp; So, the overhead is costing this team a full 5 iterations!&lt;/P&gt;
&lt;P&gt;Ultimately, what we hope to accomplish with this data is to understand what our overhead looks like, and what impact it is having on our ability to deliver.&amp;nbsp; We hope this will be incredibly useful feedback to the process about the process.&lt;/P&gt;
&lt;P&gt;Now, how do I get TFS to produce this chart?!?!&amp;nbsp; Where did I put that book on on MDX?&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2021690" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/aridle/archive/tags/Agile/default.aspx">Agile</category><category domain="http://blogs.msdn.com/aridle/archive/tags/TFS/default.aspx">TFS</category><category domain="http://blogs.msdn.com/aridle/archive/tags/Teams/default.aspx">Teams</category><category domain="http://blogs.msdn.com/aridle/archive/tags/Planning/default.aspx">Planning</category></item><item><title>Buckshot Brainstorming</title><link>http://blogs.msdn.com/aridle/archive/2007/03/24/buckshot-brainstorming.aspx</link><pubDate>Sun, 25 Mar 2007 09:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1945625</guid><dc:creator>aridle</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/aridle/comments/1945625.aspx</comments><wfw:commentRss>http://blogs.msdn.com/aridle/commentrss.aspx?PostID=1945625</wfw:commentRss><wfw:comment>http://blogs.msdn.com/aridle/rsscomments.aspx?PostID=1945625</wfw:comment><description>&lt;P&gt;When my team is stuck, I like to break the log jam with a bit of brainstorming.&amp;nbsp; I've had good luck with this well known technique.&amp;nbsp; Maybe you will, too.&amp;nbsp; I call the technique &lt;EM&gt;"Buckshot Brainstorming."&amp;nbsp; &lt;/EM&gt;Here's how it works:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Get the team together&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Pick a time and place where the team can concentrate uninterrupted on the task at hand.&amp;nbsp; Invite people to check their laptops at the door.&amp;nbsp; And, set the tone by welcoming everyone and explaining the goal of the session - to come up with as many ideas as possible.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Give everyone a pad of sticky notes and a pen&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Individuals will use the sticky notes to capture ideas - one idea per sticky.&amp;nbsp; If you can, give people brand new pads.&amp;nbsp; This tells them that you expect lots of ideas.&amp;nbsp; Tearing pads in half or quarters can work.&amp;nbsp; But, make sure that there are an adequate number of stickies in the room.&amp;nbsp; Running out of stickies sends a subtle message to the team that you aren't willing to listen to all of their ideas.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Brainstorm as individuals&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Take a few minutes to jot down as&amp;nbsp;many ideas as possible.&amp;nbsp; Time box&amp;nbsp;this effort to somewhere&amp;nbsp;between five and&amp;nbsp;ten minutes to&amp;nbsp;keep people&amp;nbsp;focused.&amp;nbsp; Discourage talking, as conversation distracts others and could potentially filter out ideas.&amp;nbsp; Encourage a little friendly competition to see who comes up with the most ideas (or the most unique ideas).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Group the stickies by author&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Once time is up, reconvene the group and ask&amp;nbsp;everyone to place their stickies on the wall.&amp;nbsp; Invariably, people will place their stickies in small groups.&amp;nbsp; It looks like someone shot up the wall with a giant sticky shotgun.&amp;nbsp; Thus the name &lt;EM&gt;"Buckshot Brainstorming."&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Brainstorm as a team&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Now comes the fun part!&amp;nbsp; Take turns presenting your stickies to the team.&amp;nbsp; As you take one of your&amp;nbsp;stickies off the wall and read it, explain what you meant to the team.&amp;nbsp; Encourage people to ask questions to make sure they understand the idea.&amp;nbsp; Often, reading one of your ideas will trigger another idea for someone else.&amp;nbsp; When this happens, capture the new idea and add it to the &amp;nbsp; And, allow people to add stickies to the wall throughout the meeting.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Group the stickies by category&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;As team members read their ideas, some will be duplicates and some will be closely related.&amp;nbsp; Place similar or related ideas into groups on a different wall.&amp;nbsp; Name the categories as you go.&amp;nbsp; These names represent the high level concepts people were trying to communicate.&amp;nbsp; The more stickies there are in a category, the more people were thinking about it.&amp;nbsp; This may indicate the importance of one area, or the need for additional thought in other areas.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Give it your own twist&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I recently&amp;nbsp;participated in&amp;nbsp;just such a brainstorming session with a team of about 12 people.&amp;nbsp; We were trying to come up with things we would like to see in Visual Studio Team System that required collaboration with other teams.&lt;/P&gt;
&lt;P&gt;The conditions were not ideal.&amp;nbsp; Some people came late.&amp;nbsp; Others had to leave early.&amp;nbsp; But, in about 2 hours, we brainstormed, discussed and categorized about 100 ideas.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The categories we came up with at first were things like "process," "development," "test," etc.&amp;nbsp; But, once we were done, we decided to matrix the ideas into three more categories - things we could do without another team, things another team could do without us, and things that required cross-group collaboration.&lt;/P&gt;
&lt;P&gt;In the end, we produced&amp;nbsp;about&amp;nbsp;15 high quality ideas that required cross-group&amp;nbsp;collaboration, which was the point of the exercise.&amp;nbsp; Further, these ideas were also categorized by the area of Visual Studio with which we would need to collaborate.&amp;nbsp; So, the matrix of categories worked great for us.&lt;/P&gt;
&lt;P&gt;Once we finished placing ideas into our matrix, we voted on the items in the collaboration category.&amp;nbsp; Up until that point, all ideas were considered equal.&amp;nbsp; After that, though, we had exactly what we wanted - a stack ranked list of opportunities for collaboration.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Why I like this approach&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The best thing about this approach is that it is so&amp;nbsp;inclusive.&amp;nbsp; Everyone gets to share their ideas.&amp;nbsp; And, no one is allowed to critique an idea.&amp;nbsp; Malformed or wacky ideas may actually trigger&amp;nbsp;a really good one for someone else.&amp;nbsp; So, everything gets equal time.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;In fact, right up until the end of the process, some pretty strange ideas were on our list.&amp;nbsp; Eventually, they either didn't involve collaboration (removing them from the list entirely), or they didn't receive any votes (placing them at the bottom of our stack-ranked list right where they belonged).&amp;nbsp; Even so, the authors of these particularly original ideas felt great about the fact that they had been included in the process.&amp;nbsp; And, as such, they'll be more willing to work on the ideas that ended up higher on the list.&amp;nbsp; That's what I call a win-win.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Drop me a line&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;If you are already using this technique, or you give it a try for the first time, &lt;A href="http://blogs.msdn.com/aridle/contact.aspx" mce_href="http://blogs.msdn.com/aridle/contact.aspx"&gt;drop me a line&lt;/A&gt; to let me know how it works for you...&lt;/P&gt;
&lt;P&gt;I wish you luck.&amp;nbsp; And, may all your ideas make the cut!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1945625" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/aridle/archive/tags/Agile/default.aspx">Agile</category><category domain="http://blogs.msdn.com/aridle/archive/tags/Teams/default.aspx">Teams</category></item></channel></rss>