<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Just for Show</title><subtitle type="html">This blog is Trent's outlet for his interest in technology, software development, software process, Visual Studio Team System, and Team Foundation Server.</subtitle><id>http://teamsystemrocks.com/blogs/trent_nix/atom.aspx</id><link rel="alternate" type="text/html" href="http://teamsystemrocks.com/blogs/trent_nix/default.aspx" /><link rel="self" type="application/atom+xml" href="http://teamsystemrocks.com/blogs/trent_nix/atom.aspx" /><generator uri="http://communityserver.org" version="2.0.60217.2664">Community Server</generator><updated>2007-09-04T21:19:00Z</updated><entry><title>Dallas Team System User's Group Meeting</title><link rel="alternate" type="text/html" href="http://teamsystemrocks.com/blogs/trent_nix/archive/2008/08/04/31047.aspx" /><id>http://teamsystemrocks.com/blogs/trent_nix/archive/2008/08/04/31047.aspx</id><published>2008-08-05T01:48:00Z</published><updated>2008-08-05T01:48:00Z</updated><content type="html">I'll be speaking at the &lt;A href="http://www.dallasvsts.com"&gt;Dallas Team System User's Group&lt;/A&gt; on Tuesday, August 5th (that's tomorrow)&amp;nbsp;about Managing Software Quality with Team System.&amp;nbsp; My hope is to demystify how to use Team System reports and software metrics to assess and manage the quality of a software project.&amp;nbsp; Also, I intend to dive into some of the development tools including Code&amp;nbsp;Metrics, Static Analysis,&amp;nbsp;the code profiler, and using build to assess code quality.&amp;nbsp; &lt;A href="http://maps.live.com/?v=2&amp;amp;where1=15950%20Dallas%20Pkwy%2C%20Dallas%2C%20TX%2075248-6629&amp;amp;encType=1"&gt;Improving Enterprises&lt;/A&gt; is graciously hosting the event, &lt;A href="http://www.notionsolutions.com"&gt;Notion&lt;/A&gt; is paying for the food, and we'll get the party started at 6 PM.&amp;nbsp;&amp;nbsp;I'll see you there!&lt;img src="http://teamsystemrocks.com/aggbug.aspx?PostID=31047" width="1" height="1"&gt;</content><author><name>trent_nix</name><uri>http://teamsystemrocks.com/members/trent_nix.aspx</uri></author></entry><entry><title>Dallas Team System User's Group - June 3rd</title><link rel="alternate" type="text/html" href="http://teamsystemrocks.com/blogs/trent_nix/archive/2008/06/02/17865.aspx" /><id>http://teamsystemrocks.com/blogs/trent_nix/archive/2008/06/02/17865.aspx</id><published>2008-06-02T18:56:00Z</published><updated>2008-06-02T18:56:00Z</updated><content type="html">&lt;P&gt;Team System junkies and interested parties are invited to this month's &lt;A href="http://www.dallasvsts.com"&gt;Dallas Visual Studio Team System User's Group&lt;/A&gt; Meeting on Tuesday, June 3rd at 6:00 PM at the &lt;A href="http://www.notionsolutions.com"&gt;Notion Solutions &lt;/A&gt;office &lt;A href="http://maps.live.com/?v=2&amp;amp;sp=Point.pgg1zw6xhrxg_6230%20N%20Belt%20Line%20Rd.%20suite%20130%2C%20Irving%2C%20TX%2075063-2601%2C%20United%20States___&amp;amp;encType=1"&gt;in Irving, TX&lt;/A&gt;.&amp;nbsp; My friend and colleague &lt;A href="http://weblogs.asp.net/vblasberg"&gt;Vince Blasberg&lt;/A&gt; will be speaking about Reporting in Team Foundation Server.&amp;nbsp; Reporting in TFS tends to be a difficult topic to get one's head around and Vince intends to demystify some of the complexities about how reporting works and how to write your own custom reports against Team System data.&lt;/P&gt;&lt;img src="http://teamsystemrocks.com/aggbug.aspx?PostID=17865" width="1" height="1"&gt;</content><author><name>trent_nix</name><uri>http://teamsystemrocks.com/members/trent_nix.aspx</uri></author></entry><entry><title>Dallas Techfest</title><link rel="alternate" type="text/html" href="http://teamsystemrocks.com/blogs/trent_nix/archive/2008/05/02/14452.aspx" /><id>http://teamsystemrocks.com/blogs/trent_nix/archive/2008/05/02/14452.aspx</id><published>2008-05-02T16:43:00Z</published><updated>2008-05-02T16:43:00Z</updated><content type="html">&lt;P&gt;I'll be speaking at &lt;A href="http://www.dallastechfest.com/"&gt;Dallas Techfest&lt;/A&gt; tomorrow, May 3rd at the &lt;A href="http://www.addisontx.gov/departments/conf_theatre/"&gt;Addison Conference and Theatre Center&lt;/A&gt;, just north of big D.&amp;nbsp; I'll be covering &lt;STRONG&gt;&lt;A href="http://www.silverlight.net/"&gt;Silverlight&lt;/A&gt;&lt;/STRONG&gt; in a talk at 10:00 AM in the &lt;EM&gt;Emerging Technologies&lt;/EM&gt; track.&amp;nbsp; I promise it'll have a bit more meat than the powerpoint beatdowns you've seen before and if it doesn't, then be sure to complain and let me know.&amp;nbsp; I think this Silverlight thing is going to be a big deal and am really excited about it.&lt;/P&gt;&lt;IMG alt=Techfest src="http://www.dallastechfest.com/Portals/0/DallasTechFestBanner.jpg"&gt; 
&lt;P&gt;Big thanks go out to &lt;A href="http://www.timrayburn.net/"&gt;Tim Rayburn&lt;/A&gt; and all the others who poured so much energy into putting Techfest together.&amp;nbsp; There's a &lt;A href="http://www.dallastechfest.com/Agenda/tabid/55/Default.aspx"&gt;great lineup of topics&lt;/A&gt; being presented by great speakers coming in from all over and best of all, it's free.&lt;/P&gt;&lt;img src="http://teamsystemrocks.com/aggbug.aspx?PostID=14452" width="1" height="1"&gt;</content><author><name>trent_nix</name><uri>http://teamsystemrocks.com/members/trent_nix.aspx</uri></author></entry><entry><title>Dallas VSTS User's Group Meeting - Thursday April 10th</title><link rel="alternate" type="text/html" href="http://teamsystemrocks.com/blogs/trent_nix/archive/2008/04/08/11270.aspx" /><id>http://teamsystemrocks.com/blogs/trent_nix/archive/2008/04/08/11270.aspx</id><published>2008-04-08T20:20:00Z</published><updated>2008-04-08T20:20:00Z</updated><content type="html">&lt;P&gt;I'll be speaking at the Dallas Visual Studio Team System User's Group&amp;nbsp;delivering a presentation titled&amp;nbsp;&lt;EM&gt;Scrum and Team System&lt;/EM&gt; on Thursday, April 10th at 6 p.m. at the Notion Solutions office in Irving.&amp;nbsp; Here's the abstract:&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Garamond&gt;Scrum is an iterative incremental process of software development commonly used with Agile software development. Scrum is a process skeleton that includes a set of practices and predefined roles. Microsoft Visual Studio Team System has an active community of users that have used Team System to manage their Scrum projects and has a set of mainstream process templates that are Scrum-based . Join us for an examination of the process templates available for Team System that implement Scrum (including Conchango Scrum for Team System, eScrum, and Light Weight Scrum) and for a discussion the merits of using Scrum to manage your software projects. This topic is intended to be accessible for people who are new to agile software development and intended to be informative even for the most seasoned Scrum advocate.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;More details about the group and the meeting (including directions) can be found at the &lt;A href="http://www.dallasvsts.com"&gt;Dallas VSTS User's Group web site&lt;/A&gt;.&amp;nbsp; Feel free to join us!&lt;/P&gt;&lt;img src="http://teamsystemrocks.com/aggbug.aspx?PostID=11270" width="1" height="1"&gt;</content><author><name>trent_nix</name><uri>http://teamsystemrocks.com/members/trent_nix.aspx</uri></author></entry><entry><title>Work Item Customization:  Set a Field Value That Cannot Change</title><link rel="alternate" type="text/html" href="http://teamsystemrocks.com/blogs/trent_nix/archive/2007/09/25/2024.aspx" /><id>http://teamsystemrocks.com/blogs/trent_nix/archive/2007/09/25/2024.aspx</id><published>2007-09-26T01:38:00Z</published><updated>2007-09-26T01:38:00Z</updated><content type="html">&lt;P&gt;I was doing a bit of work item customization today when I ran into an interesting, but common problem.&amp;nbsp; The client wanted a field, specifically the 'Work Remaining' field on&amp;nbsp;a Sprint Backlog Item,&amp;nbsp;a work item in the &lt;A href="http://www.scrumforteamsystem.com/"&gt;Conchango Scrum template&lt;/A&gt;, to automatically be set to 0 when the work item state is set to&amp;nbsp;&lt;STRONG&gt;Done&lt;/STRONG&gt;.&amp;nbsp; Easy enough.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#808080 size=2&gt;&amp;lt;STATE value="Done"&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;FIELDS&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;FIELD refname="Conchango.VSTS.Scrum.WorkRemaining"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COPY from="value" value="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/FIELD&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/FIELDS&amp;gt;&lt;BR&gt;&amp;lt;/STATE&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;But really, they wanted to make sure that the value is both set to 0 and read only so that the value never changes when the work item is marked as &lt;STRONG&gt;Done&lt;/STRONG&gt;.&amp;nbsp; If the work is complete, there should be no remaining work and if any additional work is identified, the item should be set to be &lt;STRONG&gt;In Progress&lt;/STRONG&gt;.&amp;nbsp; So the obvious choice is to add&amp;nbsp;&lt;FONT face="Courier New" size=2&gt;&amp;lt;READONLY /&amp;gt;&lt;/FONT&gt; or &lt;FONT face="Courier New" size=2&gt;&amp;lt;FROZEN /&amp;gt;&lt;/FONT&gt; inside the &lt;FONT face="Courier New" size=2&gt;FIELD&lt;/FONT&gt; tag.&amp;nbsp; As obvious as this seems, it won't work.&amp;nbsp; The result of the&amp;nbsp;&lt;FONT face="Courier New" size=2&gt;COPY&lt;/FONT&gt; doesn't stick or doesn't happen, depending on which you do.&amp;nbsp; Either way, it's not what was ordered.&lt;/P&gt;
&lt;P&gt;The get around this problem, I needed to duplicate a situation where I could set the value for the Work Remaining field to 0 and create a situation where the value could not be changed, so I just turn the Work Remaining field into a drop down when the work item is in the &lt;STRONG&gt;Done&lt;/STRONG&gt; state and allow only a single value, 0!&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#808080 size=2&gt;&amp;lt;STATE value="Done"&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;FIELDS&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;FIELD refname="Conchango.VSTS.Scrum.WorkRemaining"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;COPY from="value" value="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ALLOWEDVALUES&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LISTITEM value="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ALLOWEDVALUES&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/FIELD&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/FIELDS&amp;gt;&lt;BR&gt;&amp;lt;/STATE&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;It's a hack, but it manages to overcome an unfortunate limitation.&lt;/P&gt;&lt;img src="http://teamsystemrocks.com/aggbug.aspx?PostID=2024" width="1" height="1"&gt;</content><author><name>trent_nix</name><uri>http://teamsystemrocks.com/members/trent_nix.aspx</uri></author></entry><entry><title>Beat Analysis Paralysis: Don't Let Good Projects Go Bad</title><link rel="alternate" type="text/html" href="http://teamsystemrocks.com/blogs/trent_nix/archive/2007/09/14/1986.aspx" /><id>http://teamsystemrocks.com/blogs/trent_nix/archive/2007/09/14/1986.aspx</id><published>2007-09-14T05:29:00Z</published><updated>2007-09-14T05:29:00Z</updated><content type="html">&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Prepare yourself, this one is a doozy.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;In a world where software projects commonly suffer from poor requirements, the very idea that a project team can "overthink" requirements sounds absurd.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Hey, if it didn't happen would I be writing about it?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Very interesting projects with very well-intentioned aspirations have outright failed because it never even got off the ground.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;The proper term for this is analysis paralysis, a state in which a project suffers because the planning and requirements elicitation phase is more expensive than the benefit that is derived.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;This might be because planning takes too long and the opportunity for the project has passed, the personnel cost of the requirements phase exceeds the budget allowed, or some team members are under-utilized waiting for the planning activities to finish.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;In the 'real world', what does analysis paralysis look like?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Let's see if this scenario rings a bell.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;So someone super important greenlights project X and the subject matter experts are organized into a team.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;A 'first' meeting is planned, but the most important planning team members (i.e., the really good ones) are busy because they are wanted in a million other places.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Important people are in demand!&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;They decline the meeting and thus, it is rescheduled for a few days later.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Planning is a little behind schedule now, but nothing that can't be made up through diligence and hard work.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Eventually, the 'first' meeting actually takes place (yay!) and half of the meeting is spent reviewing some document everyone was supposed to have read before they showed up (boo!).&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The second half is spent producing results and the citizens rejoice.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;That said, one important team member, let's call him bigwig A, can't show up because he's really, really busy.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Some crises at some client site caused some horrible failure that required his full attention.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;While everyone else is warm and fuzzy because the team is making progress, bigwig A finally gets around reviewing what was accomplished and identifies all sorts of issues.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The 'first' meeting is then held again, rehashing what went wrong in the first...er…I mean second 'first' meeting.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;So yeah, I'm sure all sorts of bells are going off.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;This project is already thrashing and if the trend isn't drastically improved, the project will be paralyzed.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;So how does this affliction come about?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It usually comes in one of two ways, each of which sends a cold chill up my spine.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;The first is common in smaller organizations.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Most projects have poorly understood requirements.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;A few of these types of projects demoralize good teams and leadership swears it will never happen again in order to prevent a mutiny.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;They place a lot of emphasis on the planning process and project managers say absurd things like "My team won't start until we have all of the requirements!"&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I live in a glass house, so don't worry about the flying rocks.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Anyways, now everybody that's anybody is now required to fully participate in some elaborate planning process (in addition to all of their other responsibilities), and the nightmare begins.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;The second is common in larger organizations where projects have inter-organizational dependencies.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Management and teams are set up in a matrix, and teams are expected to provide resources and expertise to other teams that have specific needs.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Some large software project comes along that is being managed by team A, and some manager in team B is asked to provide a resource to help team A.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Said manager looks over his roster and identifies a really good resource that will do a great job.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;But wait!&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;That resource is needed to satisfy team A's responsibilities.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;After all, he or she is really good at what they do, and team B simply cannot afford to lose them&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Another resource is selected instead, one team B can live without, and that resource doesn't have the expertise, capability, and maybe even time to provide team A with quality help.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Planning starts, team A realizes they have the wrong resource and they have more work to make up for the poor help they've received from team B, and the nightmare begins.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;S&lt;/SPAN&gt;&lt;SPAN&gt;ome champion the idea that bureaucracy is to blame for analysis paralysis, but I think that's just a cover for the real catalyst:&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;poor leadership.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Now let me qualify by saying poor leadership can be blamed for all the evil in the world.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It's an easy target that makes the masses happy.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;So we throw more process and more bureaucracy down to cover for this poor leadership, and we find ourselves in a situation where we blame the bureaucracy instead of the reasons that bureaucracy blocks our way.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;So how do we prevent analysis paralysis?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Do a better job of leading our projects!&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;But that copout isn't enough, so let's concentrate on three major components that can help your project team avoid analysis paralysis.&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;First, you &lt;B&gt;must&lt;/B&gt; manage the resources involved in project planning.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Major projects usually require a large number of people to be involved in the planning process, and many of those resources are not owned by the team responsible for leading the project.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;This situation is precarious because &lt;B&gt;a resource whose time you don't own is a resource you probably don't have&lt;/B&gt;.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It’s impossible to have the full attention of all necessary resources, so the person managing the requirements phase of the project must clearly communicate the expectations of how these individuals will be involved and, most importantly, there must be &lt;B&gt;real consequences if any resources are not providing adequate value&lt;/B&gt;.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;This can mean different things in different organizations and you can figure out the details.&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Even the smartest, most well-intentioned people can be very busy and their priorities may not be in line with yours, so it isn't necessarily only a matter of battling incompetence.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It's just that a resource that is unavailable or distracted is no better than a resource that is outright incompetent.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;In either case, you aren't getting what you need.&lt;BR&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Second, someone must lead the planning and requirements elicitation process.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Managing the requirements phase and leading the requirements phase are two different things.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Managers simply have to handle logistics, track progress, and make adjustments if the project is off track.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;But some measure of quality must be met, so someone who truly understands what needs to be built should lead planning and elicitation activities.&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN&gt;This person needs to be capable of making hard decisions and mediating conflict&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN&gt;.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;People will have different opinions on what types of things are important in a project and how those things should defined, and many times they will have &lt;I&gt;strong&lt;/I&gt; opinions.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I'm of the opinion that this type of disagreement can be a good thing for a project, as the end result is usually strengthened by this haggling.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;In fact, you should probably be worried if this isn't the case, or at least get rid of the redundant resources.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;You need different points of view, not several people with the same point of view.&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN&gt;A strong leader will foster this type of discussion while making sure the team stays on task.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;A strong leader will also be able to make a sound, well-reasoned decision if a conflict does not resolve itself in order to move the process forward.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Without a strong leader, teams get bogged down and their schedule slips, and this is the first sign of numbness.&lt;BR&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;My last recommendation is my most specific:&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;teams should employ a Scrum-like model to managing requirements.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I've participated in a Scrum project from end-to-end, and some I'm not exactly the biggest Scrum fan in the world (a topic for another day).&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;That said, the model Scrum uses to manage requirements is genius.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It is simple, effective, and really hard to screw up if you follow the rules.&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN&gt;In Scrum, requirements are kept in a list, called the product backlog.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The product backlog lists the requirements with the most important at the top and the least important at the bottom.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Each requirement has some weight, being the resource cost expected to implement that requirement.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Before each project iteration, take the requirements from the top of the list and drop them into your iteration until you have consumed all of the available resources in that iteration.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It’s just like shopping.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Things have a cost and you have only so much money, so you have to be selective about what you buy so that your money is well spent.&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN&gt;The hard and fast rule in a Scrum project is that once a requirement finds its way into an iteration, it should not change.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;If it needs to change, that change should be dropped on the product backlog as a new requirement and managed as such.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The requirements team, or anyone in the organization for that matter, can add requirements to the product backlog at any time.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;However, only project principals should be able to prioritize the product backlog, and this prioritization should take place before the beginning of each iteration.&lt;BR&gt;&lt;BR&gt;T&lt;/SPAN&gt;&lt;SPAN&gt;o manage requirements using the same model that Scrum employs, you must be develop your software using fixed-length iterations and you must right-size requirements so that they are always smaller than the total resource allotment for an iteration.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;That's it.&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN&gt;How does this prevent analysis paralysis?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I'm glad I asked.&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Managing requirements in a product backlog prevents analysis paralysis by creating a situation where the design and construction phases of a project can move forward before requirements elicitation is complete.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The most important components of a software project are the easiest to identify and define.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It's the peripheral components that tend to send a project on a tangent.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Once enough work has been identified to cover an iteration, the development team can cut loose.&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN&gt;The Scrum requirements management model keeps the requirements and planning teams, and all stakeholders really, involved in the project from start to finish.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The waterfall model of requirements gathering that so many organizations insist upon will be gone and you will now have a project that is effectively agile, in that it can effectively accommodate change&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;That's enough of a drubbing for one post, so I'll conclude things there.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Just know that &lt;B&gt;how one manages the&lt;SPAN&gt; requirements and planning phase of a project is critically important to the success of a project&lt;/SPAN&gt;&lt;/B&gt;.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I wouldn't prattle on about it if I didn't think so.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;If you want to learn a little more about scrum then you can find a lot of great sources out on the great interweb.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;To keep this relevant to Team System, there are a couple of Scrum-based process templates available:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;A href="http://www.scrumforteamsystem.com/"&gt;Conchango Scrum Template&lt;/A&gt; - I've worked on a project that employed the Conchango template and while there were a few things I didn't like, they were a lot more about Scrum than about the Conchango template.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;One warning, the process guidance teaches you a lot more about Scrum than it does about the process template that is provided.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;SPAN&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=55a4bde6-10a7-4c41-9938-f388c1ed15e9&amp;amp;displaylang=en"&gt;Microsoft eScrum&amp;nbsp;Template&lt;/A&gt; - I haven't taken a look at this Microsoft-provided template yet but I have heard good things from people who know what they are talking about.&amp;nbsp; I'll take a look soon and give my thoughts in this space.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://teamsystemrocks.com/aggbug.aspx?PostID=1986" width="1" height="1"&gt;</content><author><name>trent_nix</name><uri>http://teamsystemrocks.com/members/trent_nix.aspx</uri></author></entry><entry><title>Tracking Project Status - Quit Making This Difficult</title><link rel="alternate" type="text/html" href="http://teamsystemrocks.com/blogs/trent_nix/archive/2007/09/07/1923.aspx" /><id>http://teamsystemrocks.com/blogs/trent_nix/archive/2007/09/07/1923.aspx</id><published>2007-09-07T17:44:00Z</published><updated>2007-09-07T17:44:00Z</updated><content type="html">&lt;P&gt;"&lt;EM&gt;What is the status of the current project?&lt;/EM&gt;"&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;This question haunts the dreams of project managers.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;We give answers like "&lt;EM&gt;we are on track&lt;/EM&gt;", "&lt;EM&gt;we are 60% there&lt;/EM&gt;" or "&lt;EM&gt;hold on I'll go find out&lt;/EM&gt;".&amp;nbsp; Too often, these statements translate into "&lt;EM&gt;the team will work ridiculous hours to make up it look like we will ship on time&lt;/EM&gt;", "&lt;EM&gt;here is a number I just made up that 'feels' right&lt;/EM&gt;", or "&lt;EM&gt;I will go ask the developers to make up numbers that I'll pass along, but I'll pass them along confidently&lt;/EM&gt;".&amp;nbsp;&amp;nbsp; As a whole,&amp;nbsp;project teams&amp;nbsp;are not very good at tracking progress in a meaningful way and, in turn, we aren't very good at managing software projects.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;As the great &lt;A href="http://www.stevemcconnell.com/"&gt;Steve McConnell&lt;/A&gt; points out in his book &lt;A href="http://stevemcconnell.com/psd/introduction.htm"&gt;Professional Software Development&lt;/A&gt;, at least 50% of software projects are late, over budget, or under scope while 25% fail outright, and one of the chief culprits is the inability to identify project challenges until it is too late.&lt;BR&gt;&lt;BR&gt;The rate of project&amp;nbsp;failure is&amp;nbsp;really astounding if you think about it.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The primary purpose of a project manager is to track progress and handle the logistics that promote and impede that progress.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;If we can't adequately assess project status, we aren't doing our jobs.&lt;SPAN&gt;&amp;nbsp; Yet, w&lt;/SPAN&gt;e get caught up with all of the other rat killing implicit with managing a software project and take our focus away from the primary initiative.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Projects are challenged and we don't figure this out until those challenges have snowballed.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The result?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Projects fail.&lt;BR&gt;&lt;BR&gt;But hey, tracking the status of a project in a meaningful way is hard, right?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I don't buy it.&lt;BR&gt;&lt;BR&gt;The key to managing the status of a project lies in how each individual project task, some unit of work that has a well-defined output that contributes to project completion, is managed.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;A project is simply a collection of tasks.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;These tasks have to be well understood so that we understand the impact the completion of an individual task has on project completion.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Unfortunately, this never seems to be the case.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Let me give you an example of what I mean.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR&gt;I've worked on projects where it was not uncommon to get three tasks for a month's worth of work.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Task 1 would be something pretty small.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It might require a couple of days to finish if I loaf, or a day to finish if I hustle.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Task 2 would be something a bit bigger, maybe requiring a week's worth of work, but it would still be fairly well understood.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Then there would be task 3, a blob of a task so poorly defined that no one could reasonably say when it could be done and often it would be impossible to say what 'done' even meant.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I could say 'this will take me a month' or 'this will take me 2 hours' and nobody would even bat an eyelash.&lt;BR&gt;&lt;BR&gt;So a week later, I might report to management that task 1 was complete, task 2 was 90% complete, and I'm about 25% of the way through with task 3.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;With task 1, one could reliably assume that a contribution to the project's overall success had been made.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It was done.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I had washed my hands of it.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The ball is now in someone else's court.&lt;BR&gt;&lt;BR&gt;With task 2, 90% is obviously made up, but it's a number that adequately expresses that the bulk of the work has been done.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Sometimes that last 10% can really stretch out, but when I say I'm 90% done, I'm at least putting my own neck out there to say task 2 will be wrapped up soon.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;If I don't deliver soon, I'll look bad and I definitely don't want that.&lt;BR&gt;&lt;BR&gt;And now on to the albatross that is task 3.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;What does 25% mean?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;In Trent-speak, it means I've looked at it and maybe even created a few stub classes.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;However, don't bother assuming I'm anywhere near being done, as I still have a lot of waffling room in that remaining 75%.&lt;BR&gt;&lt;BR&gt;So it's reported up the chain that I'm almost done with 2 of my 3 tasks and that the last item should be done 'soon'.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;When pressed, 'soon' is usually explained with a made up date optimistically based on the perceived quick completion of the first two items.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;When this occurs, the project is already in disarray.&lt;BR&gt;&lt;BR&gt;Experience has probably bludgeoned most of us with this scenario more than once, so it has to be more than a unique phenomenon.&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;So what do we do to get out of this hole?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It's simple:&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;put together a plan for tracking status and follow it.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Be disciplined.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Notice, I did not say run out and buy some snazzy tool.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;A tool is not a solution.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;A hammer doesn't do anything unless you swing it.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It's not that great project management tools don't help, it's just that a project can be managed with the best tools money can buy just as poorly as a project managed using no tools at all.&lt;BR&gt;&lt;BR&gt;The key, as hinted in the example I gave earlier, is in how we track individual tasks.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;This involves being methodical in how we break down tasks and in how we assess task completion.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Your project can be vastly improved if you just follow this set of guidelines&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Tasks should be broken down into units of similar 'weight'.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;This means that the effort required to complete tasks should be as similar as possible.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;If tasks are all similar in size, the effect of completing a task will be universally understood in terms of how it affects the status of a project.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Tasks are either done or they are not.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;The idea that a task is 'half done' should be stricken from your organization.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It's all or nothing.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;A task that is not fully complete does not contribute to project completion, so quit pretending that it does.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Tasks should be small.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I strongly recommend that tasks be expected to require no more than a day's worth of a given team resource.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;This will allow you to get a day-to-day understanding of the current status of a software project.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Additionally, breaking tasks down to a more granular level improve estimates and make sure developers are somewhat detailed in their design.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Tasks should always represent a unit of work.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Never break tasks into a sequence of steps.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;This means no tasks like "Implement feature X - day 1" and "Implement feature X - day 2".&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I've seen trolls like these before and they are utterly useless.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;How does one know when the first task is complete?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It's usually when the estimated time given to that task has elapsed instead of when some meaningful work has been done.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Avoid this at all costs.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;People should not do any work that isn't fully described in a task.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;This will help the team clearly understand why a project might be challenged because you will have immediate visibility to whether new work is being introduced and what kind of work is being done.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Is a project challenged because our estimates were bad?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Is it because the problem was poorly understood?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Is it because work external to the project keeps stealing resources?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;You will be able to clearly answer these questions with hard evidence.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;These guidelines are simple and effective.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;They just usually require a level of effort during the design and planning stages of software lifecycle that most haven't been disciplined enough to invest.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;They are in too big of a hurry to lay down code for fear that every second someone isn't coding is a second the team is behind schedule.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It's just a thorny problem (affectionately coined by McConnell as &lt;A href="http://informationmanglement.blogspot.com/2006_05_01_archive.html"&gt;WIMP, or Why Isn't Mary Programming?&lt;/A&gt;) we have all fallen prey to it at least once.&lt;/P&gt;&lt;img src="http://teamsystemrocks.com/aggbug.aspx?PostID=1923" width="1" height="1"&gt;</content><author><name>trent_nix</name><uri>http://teamsystemrocks.com/members/trent_nix.aspx</uri></author></entry><entry><title>Requirements Make My Head Hurt</title><link rel="alternate" type="text/html" href="http://teamsystemrocks.com/blogs/trent_nix/archive/2007/09/05/1920.aspx" /><id>http://teamsystemrocks.com/blogs/trent_nix/archive/2007/09/05/1920.aspx</id><published>2007-09-06T04:19:00Z</published><updated>2007-09-06T04:19:00Z</updated><content type="html">&lt;P&gt;In my experience, when challenged to improve the quality of their software development efforts, so many software companies put excessive focus on software process methodology.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;They read about Agile, Scrum, or some other flavor of iterative development and convince themselves that implementing some specific methodology is going to 'fix' their problems when their primary problems aren't process at all but instead center around their inability to manage requirements and track project status.&lt;/P&gt;
&lt;P&gt;For now, let's focus on requirements.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Every software project, no matter how large or small, is catalyzed by a need.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;This need is elicited, described, and organized formally or informally into requirements.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Then those requirements are communicated to a development team responsible for actually producing something tangible via a specification.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Unfortunately, a specification usually is a set of documents that read like a drunken stream of consciousness or a set of vague statements someone threw onto a paper to check off the 'we have a specification' box.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;I'm nice in saying that this specification inadequately describes software that needs to be built or the modification of existing software, but improving the specification itself is a subject &lt;A href="http://i.f.alexander.users.btopenworld.com/reviews/jackson.htm"&gt;others have&lt;/A&gt;&amp;nbsp;&lt;A href="http://www.joelonsoftware.com/articles/fog0000000036.html"&gt;written about&lt;/A&gt; more intelligently than I ever could.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;My focus is on what the development team does with that specification once it has been inherited.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Typically, development teams&amp;nbsp;just run with whatever they&amp;nbsp;receive regardless of quality&amp;nbsp;(because taking the time to fix things would take too long/don't fit in the schedule/insert lame excuse here), confronting this lump of&amp;nbsp;a specification&amp;nbsp;in one of two ways.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Should the schedule be tailored to fit the requirements as they are?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Or should requirements be right-sized to fit the iteration plan (you do have an iteration plan, don't you)?&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;Resources are finite by definition, so it is imperative that requirements be structured in a way that lends them to be managed.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;This means the project team should work with the person or team responsible for the requirements and mold them into bite-sized chunks.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Bite-sized chunks can be scheduled, tasked, monitored, tracked, and managed.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;This process of organizing requirements is given far too little attention, and I would argue, at least where the development team is concerned, &lt;SPAN&gt;it may be the most important part of the requirements phase of a project&lt;/SPAN&gt;, and &lt;SPAN&gt;potentially the most important part of the project altogether&lt;/SPAN&gt;.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Without properly organized requirements, a team has very limited means by which to manage the scope and quality of a software project.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;If the project scope and quality cannot be managed, odds are the project will fail.&lt;/P&gt;
&lt;P&gt;I believe a few rules of thumb of how software requirements are organized can go a long way towards properly managing a software project:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;SPAN&gt;Requirements should not be too technical or architecturally focused.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Many software projects will have requirements such as 'Create Data Access Layer' and 'Create Business Objects'.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;This is inappropriate.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Requirements should illustrate a business need.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;SPAN&gt;Requirements should be relatively comparable.&amp;nbsp; Ideally, you should be able to say some requirement X is more important than requirements Y and Z.&amp;nbsp; This is critical when it comes to scheduling work and managing scope.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Requirements that are tightly-coupled should be combined into a single requirement.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Resist splitting a large set of tightly-coupled requirements if at all possible, and only split them if the methodology being employed provides no alternatives.&lt;/SPAN&gt; 
&lt;LI&gt;&lt;SPAN&gt;A large requirement that, when analyzed, is really a laundry list of needs should be split.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;If a project team is forced to trim scope, it will be easy to figure out what can be trimmed if requirements are organized into a reasonable level of granularity.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;SPAN&gt;Requirements should not, in my opinion, be separated by type (as some Agile pundits might argue).&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Consider the MSF for Agile process template that ships with Team Foundation Server.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;There are two requirement-like work items:&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Scenario and Quality of Service.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;A Scenario might be some business need 'Do X' and a Quality of Service would be 'Be able to do X one thousand times in an hour'.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Those requirements are implicitly coupled, so I think the simplicity of managing one requirement makes more sense.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Ditch separating qualitative requirements that are tightly coupled with a quantitative requirement.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Instead, have qualitative and quantitative descriptions for a single requirement.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;SPAN&gt;To borrow Einstein, requirements should be described as simple a manner as possible, but no simpler than is necessary.&amp;nbsp; Don't get bogged down in describing a requirement in every detail imaginable.&amp;nbsp; You'll never get it completely right up front, so don't be completely paralyzed by the fact that you don't know everything there is to know before you start laying down a design and code.&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;SPAN&gt;You should be able to estimate requirements to some level of comfort.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;If your requirements are so vague that the estimation process would be more accurate if estimates came out of a bingo hopper, you need more detail and more granularity.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;A software project that doesn't start organized will never get organized, so give your project a fighting chance by investing in the elicitation and organization of requirements.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Your project will be easier to manage and the overall goals will be transparent to everyone involved.&amp;nbsp; This makes for a happy software company where smart people want to work.&lt;BR&gt;&lt;BR&gt;For more on software requirements, check out the following reads:&lt;BR&gt;&lt;A href="http://www.processimpact.com/pubs.shtml#reqs"&gt;Software Requirements by Wiegers&lt;/A&gt;&lt;BR&gt;&lt;A href="http://i.f.alexander.users.btopenworld.com/reviews/leffingwell_and_widrig.htm"&gt;Managing Software Requirements - A Unified Approach by Leffingwell and Widrig&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;The requirements phase of a software project is often a combination of sophistry and blind trust, and there is certainly no 'right' way of doing things.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I'm sure you have an opinion, so &lt;A href="mailto:tnix@notionsolutions.com"&gt;let me know&lt;/A&gt; whether I nailed it, I'm off my rocker, or I'm somewhere in between.&lt;BR&gt;&lt;BR&gt;So you might be asking, "I get all of that, but where does Team System enter the picture?"&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;We'll get to that in this space before I'm done.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://teamsystemrocks.com/aggbug.aspx?PostID=1920" width="1" height="1"&gt;</content><author><name>trent_nix</name><uri>http://teamsystemrocks.com/members/trent_nix.aspx</uri></author></entry><entry><title>It's about time I got the ball rolling...</title><link rel="alternate" type="text/html" href="http://teamsystemrocks.com/blogs/trent_nix/archive/2007/09/04/1918.aspx" /><id>http://teamsystemrocks.com/blogs/trent_nix/archive/2007/09/04/1918.aspx</id><published>2007-09-05T02:19:00Z</published><updated>2007-09-05T02:19:00Z</updated><content type="html">&lt;P&gt;I've waited long enough to get things going here, so I figured it's time to say hello and properly introduce myself.&amp;nbsp; My name is Trent and I'm a Software Process Consultant residing in Dallas, Texas.&amp;nbsp; I work for a company called &lt;A href="http://www.notionsolutions.com/"&gt;Notion Solutions&lt;/A&gt;&amp;nbsp;in Irving, Texas and we specialize in assisting companies all over North America with improving their software process and quality initiatives through &lt;A href="http://msdn2.microsoft.com/en-us/teamsystem/default.aspx"&gt;Microsoft Visual Studio Team System&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Now that might give you the idea that it is our job to know Team System and TFS backwards, forwards, and sideways, and you'd be right.&amp;nbsp; However, the real value we like to think we bring&amp;nbsp;to our customers is&amp;nbsp;great deal of knowledge and experience about how to manage a software project and really, expertise in all facets of &lt;EM&gt;&lt;U&gt;how&lt;/U&gt;&lt;/EM&gt; software is made.&amp;nbsp;&amp;nbsp;My colleagues and I&amp;nbsp;witnessed how a lot of companies manage (or don't manage) their software projects and how they utilize tools and process to improve both how they manage projects and how they write software.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I intend to use this blog to share and explore what I've learned about software project management, software process, and Visual Studio Team System.&amp;nbsp; So if you are interested in any of those things, you should find something of value if I've done my job.&lt;/P&gt;
&lt;P&gt;In addition to software process and Team System, I'm also interested in web development and emerging technologies in that space.&amp;nbsp; I'm also into a lot of other stuff,&amp;nbsp;so feel free&amp;nbsp;to &lt;A href="http://www.trentnix.net"&gt;wander over to my other website&lt;/A&gt; if you want to take a look at what that might be.&amp;nbsp; If you have any questions, comments, or flames, then by all means &lt;A href="mailto:tnix@notionsolutions.com"&gt;let me have 'em&lt;/A&gt;!&lt;/P&gt;&lt;img src="http://teamsystemrocks.com/aggbug.aspx?PostID=1918" width="1" height="1"&gt;</content><author><name>trent_nix</name><uri>http://teamsystemrocks.com/members/trent_nix.aspx</uri></author></entry></feed>