TrainingConferencesAbout UsContact UsAdvertiseSQE.comRSS Feed

StickyMinds.com: brain food for building better software

Log In
 Clarify Your Search Criteria

Tips on Using Our Search Feature(s)
 
StickyMinds.com Home
ResourcesTopicsCommunityPowerPass
Home  >  Detail: Hold That Decision



A StickyMinds.com Original
Article Picture
Hold That Decision

By Mike Cohn

Send This Content to a FriendGet a Short Link to This ContentPrint This ContentSee User Comments About This Content

Summary: In the rush to complete a project, teams often make hasty decisions, including decisions about which features will be included when the product is released. Rather than making quick decisions, a team should defer a critical decision. Especially if they might learn more throughout the project that will help them make a better decision. In this week's column, Mike Cohn explains the importance of taking advantage of the new knowledge project teams acquire and how this allows them to make better decisions by deferring them.


Software Education
 

 
Almost every project I encounter has made a grand effort of sorting the system's requirements into various piles based on priority. Perhaps there are piles for High, Medium, and Low priorities. Or perhaps requirements are separated into Mandatory, Desirable, and Optional piles. The Dynamic Systems Development Methodology (DSDM) includes something it calls the "MoSCoW Rules," which derives its name from the categories into which its practitioners sort requirements: Must Have, Should Have, Could Have, and Won't Have.  

We use these multi-level prioritization schemes because doing so makes us feel better. When we prioritize something as "optional" we don't feel as though we're telling the customer "no." When we say that a product Could Have a particular feature included in it, we probably believe that it might. We convince ourselves of this even though our personal experience reminds us that on most projects we're happy just to deliver the Must Have requirements. 
Unfortunately for our customers and project sponsors, many of them still believe us when we say that a project may include the optional features. After all, the feature isn't "out." It's just optional, which means there's a chance it will be included. However, just as my mom put me off as a young child with a non-committal "We'll see," we all know that a feature relegated to the optional pile is extremely unlikely to be released with the product. 
The problem with prioritizing this way is that there is only Now and Not Now. Or, in project terms there is only In and Out. In most situations, there is no point in prioritizing work in any more detail than "here is what we'll work on now" and "that is what we won't work on now." To prioritize at a finer level or in more detail is to forego opportunities to adjust plans and priorities based on what we learn during the project. What the team learns in February may affect what should be worked on in July and August. If that's the case, why plan those months in January? 

Since every day on a project affords opportunities to acquire new knowledge, the better we can take advantage of that new knowledge, the better our projects will be. Sixty years ago Nobel laureate F. A. von Hayek wrote about the importance of the use of knowledge. He wrote, "If we possess all the relevant information, if we can start out from a given system of preferences, and if we command complete knowledge of available means, the problem which remains is purely one of logic." Hayek was addressing a different planning problem but his argument remains valid.

When undertaking a software project we suffer from each of the problems Hayek identified:
 

  • We do not possess all relevant information. We are often missing critical information about the domain, about the technology we will be using, about how well team members will work together, about specifically what it is that we are building, and so on. 
  • We cannot start from a given set of preferences. We often know remarkably little about the true preferences of our prospective customers and users.  
  • We do not have complete knowledge of available means. We do not know how productive each developer will be. We do not know the quality level each will attain. And we do not know to what extent (if any) the team will gel and individuals will transcend their normal levels of performance.
 

As Hayek says, if not for those problems, the challenge of planning could be reduced to purely one of logic. Because our knowledge is imperfect, knowledge and learning play important roles in how successful projects satisfy their customers and users. When a decision can be deferred without hurting a project, we should do so. The decision should be deferred until we have learned more so that we avoid making a mistake. A few years ago I was involved in a project that rushed to make a decision about its user interface. We knew we needed to make a decision someday and thought today might as well be the day. We discussed the issue too briefly and decided that a browser-based application would be best. Were we ever wrong! The details of the situation aren't important except that we could have easily deferred that decision while gathering additional marketing information that might have saved us from making a mistake. 

The knowledge we can gain on a project comes in two forms: knowledge about the product and knowledge about the project. Knowledge about the product provides insight into what the product should be, the features it should include (or not include), the likely customers and users, when the product should be released, the price of the product, and so on. We gain this type of knowledge by involving users in discussions about features, by frequently demonstrating the latest changes, by refining the product in small increments and getting feedback, by letting users get their hands on working software as often as they'll take it from us, and other similar techniques. 

Knowledge about the project educates us about our technology choices, how well our engineering practices are working, the quality level of the code being produced, how individual team members are meshing, our rate of progress through the list of desired functionality, and more. We get this type of knowledge by working in short iterations with frequent deliverables, targeting frequent zero-defect milestones and seeing what it takes to meet them, by examining and measuring the team’s progress, and by observing how well team members collaborate. 

Without these areas of knowledge we cannot possibly hope to prioritize work in any meaningful manner. And because this knowledge is created while the project progresses we should defer any decisions that can be deferred until we know more. In fact, the amount of learning that will be generated by developing a feature needs to be an important factor in determining the priority of developing that feature.  

There has long been debate about whether projects should prioritize based on risk (as advocated by Barry Above's spiral model) or based on immediate value to the organization, which Tom Gilb referred to as the "juicy bits." There is no single winning factor in that debate. Both risk and value to the organization are important. However, to risk and business value we also need to add the amount and significance of new knowledge that will be generated by developing a particular feature. Only by considering all three dimensions can project teams make proper prioritization and sequencing decisions.

About the Author
Mike Cohn is the founder of Mountain Goat Software, a process and project management consultancy, which specializes in helping companies adopt and improve their use of Agile processes and techniques. His most recent book is User Stories Applied for Agile Software Development. In addition to speaking frequently at industry conferences, Mike is a founding member of the Agile Alliance and serves on its board of directors. He is a technical editor for Better Software magazine and a regular columnist for the magazine and StickyMinds.com. He can be reached at mike@mountaingoatsoftware.com.

Back to Top
 
 


Member Comments
Add Your CommentExpand Comments
 
Comment:    
by Robert Cowham 9/13/2005

I think this is similar to one of the principles of Lean Software Development as espoused by Mary Poppendieck. Delay Commitment – Make decisions at the last responsible moment. Quote from her site: A military officer who was about to retire once said: “The most important thing I did in my career was to teach young leaders that whenever they saw a threat, their first job was to determine the timebox for their response. Their second job was to hold off making a decision until the end of the timebox, so that they could make it based on the best possible data.” Mary quotes companies like Toyota doing this in...Read On

 
 
Comment:    
by John Daughety 5/11/2005

The best analogy I have found for a successful development project is an ICBM missle - the further it travels, the more accurately it can hit a target. This is because it assesses its position frequently, compares it to the target path and makes the necessary adjustments to its direction. Tom Gilb's EVO process and the more recent XP and Agile approaches all agree - the decisions made in the first iteration are meant to drive some amount of progress, but more imporantly they are meant to give us more information to use in our next round of decision-making. The reason we still have high failure rates for software projects is because we do...Read On

 
 
Comment:    
by James Bielak 5/10/2005

Very insightful observations on two topics: Prioritizing features, and when (or when not) to make decisions. I have repeatedly been confronted by unhappy stakeholders wondering where the "shoulds" or "coulds" features are in the finished product. I appreciate the advice to avoid the feel-good approach of a multi-tier classification, bite the bullet, and go with "in" or "out." Elegant in its simplicity, difficult for a stakeholder to mistake the message. Regarding when to make decisions: I agree that making decisions prematurely (without enough information) can lead to mistakes or regrets. ...Read On

Author's Response:
5/11/2005    
If you encounter resistance from someone who doesn't want to defer the decisions, have a discussion with him or her about what will be gained by deciding now (instead of later). Assess the risks of making an early decision. See if there are low-cost things you can do now that will keep your options open and allow you to delay committing until later. I've found that most people can be convinced in most situations that the risks are greater than the benefits.

 
Back to Top


Marketplace

Census: Web-based Bug Tracking and Defect Tracking
Track software bugs, defects, enhancements, support calls, and more. Issue tracking software that is scaleable, fully customizable and integrated with VSS. Includes e-mail notifications, role-based workflow, change history, and Crystal reporting.

Web based bug tracking - AdminiTrack.com
AdminiTrack offers an effective web-based bug tracking system designed for professional software development teams.

Check Out IT Certification Preparation Materials
Sign Up With SkillSoft & Get Access to Training Materials for Over 50 Professional Certifications.

The Very Best in Pairwise Test
Testcover.com - Compare our test case efficiency, response time, and ease of use. Simply the best!

New Webcast: How to Profit with Remote Support.
Discover how REMOTE SUPPORT can fuel your IT business in ways you've never thought of before.

Get your product or service listed here.
Subscribe to Better Software Magazine
Subscribe to Better Software Magazine

First Name:

Last Name:

Email Address:


Home   |   Resources   |   Topics   |   Community   |   PowerPass



© 2008 StickyMinds.com. All rights reserved.
StickyMinds.com is a division of Software Quality Engineering.
Privacy Policy    Terms & Conditions    Link to StickyMinds.com    Feedback


Red Gate Software

STARWEST 2008

 
Agile Development Conference 2008