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
ResourcesTopicsCommunityPowerPassBlogs
Home  >  Detail: Predicting Iterative Projects



A StickyMinds.com Original
Article Picture
Predicting Iterative Projects
How the "Manufacturing" Analogy Confuses the Estimation Process

By Bill Walton

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

Summary: Despite the fact that iterative approaches to software development are increasingly used, most of the people paying for MIS software still have an expectation that we should be able to tell them, before coding starts, “what’s it going to do, what’s it going to cost, and when’s it going to be ready?” This column shows why that's an unattainable expectation and corrects the misleading "product-lifecycle-model" for estimating.


ThoughtWorks
Fixing the misunderstandings about estimating iterative projects requires a look at a language issue. At least part of the problem can be traced to the words and models we use to explain our work. First, we typically present the software-development-lifecycle model without putting it in the context of the software product lifecycle. Second, when we talk about the development lifecycle, we use words that lead the listener to compare what we're describing to other product lifecycle models, not other development lifecycle models. Worse yet, we use language that causes users to compare our development lifecycle model to the wrong industry.

To clarify the misunderstanding, we need to place the development lifecycle into the context of the product lifecycle. Why? Because any misunderstanding at this level virtually guarantees false expectations. Product lifecycles are inherently sequential. To use a manufacturing analogy, when PCs come off the assembly line they're supposed to go to customers, not back to engineering. Development lifecycles, on the other hand, are inherently iterative. The engineering groups in a PC manufacturer typically produce several iterations of a product before the design is called final and released to the manufacturing  
group.

Iterations in a development lifecycle represent learning. Iterations in a product lifecycle represent waste. We need to make sure that our customers understand the difference between product lifecycle models and development lifecycle models and, when it comes to expectations about predictability, that they are using the appropriate concept. Why would business people think we're talking about a product lifecycle rather than a development lifecycle? In presenting the SDLC we use words that almost automatically lead the listener into that trap. Have you seen SWEBOK? The IEEE recently released the trial version of the Software Engineering Body of Knowledge. You can download it at www.swebok.org.

What does it call the coding phase? Construction. The presentation of the SDLC as "Requirements Design-> Construction-> Test->" corresponds all too closely to the product lifecycle for the building industry. Google "building lifecycle" and you'll find a paper on "Sustainable Design" by the University of Minnesota College of Architecture and Landscape Architecture, which characterizes the building lifecycle phases as Pre-design; Design; Construction; Occupancy. Both the model and the words we use to present the SDLC make it easy for business people to make the mistake of comparing it to a product lifecycle model. What happens when they do? They expect coding to be like laying bricks. They think, "All we need to do is estimate the number of bricks (or lines of code) we'll need and, voila, out will pop a reliable estimate!" Flawed analogies lead to flawed expectations.

As if it's not damaging enough to make inappropriate comparisons between the wrong models, the use of the word construction in the SDLC leads the listener to compare the wrong industries. The examples from the building industry that come to mind for a typical businessperson are much too simple. The manufacturing industry, especially PC manufacturers, provides much more appropriate analogies. Both computer hardware and software are logic-based. They're obviously related since software runs on hardware. And when you compare the design phases of the product lifecycles, you get very good analogies.

Hardware engineering groups typically produce a multitude of designs, several of which are actually manufactured and tested, before a design is called final and released to manufacturing. The design or engineering phase in the hardware business is very iterative. This is the analogy to which we should be steering the business consumers of software. The words we use to describe what we do are probably too firmly ingrained to change. But we can, at least, start presenting the SDLC in the context of the product lifecycle to bring home the point that all of software development is a design activity. We need to start presenting something like the picture below.

Requirements-> Design-> Manufacturing-> Ship 

This is by no means a perfect representation of reality. No model is. But it gets us closer and gets us talking about the right things. Requirements show up in both places. That's because once we enter design we begin getting much more detailed requirements. Requirements gathering and management is an ongoing, learning process.

What about manufacturing? We don't have to do that for MIS software. Exactly. But that doesn’t mean it's valid to treat part of the design phase as though it were a manufacturing activity. We need to correct the invalid and unattainable expectations of predictability that too many people have of MIS software development. Such expectations follow from the misnomer: "construction." Presenting a more accurate model, and emphasizing that some of the words may be misleading, is a step in the right direction.



About the Author
Bill Walton has fifteen years of experience in mostly large, software development organizations. He now works as an independent IT consultant specializing in requirements engineering and software test management. He believes that advances in these areas are necessary to turn software development into a true engineering discipline. He can be reached at bill.walton@jstats.com.

Back to Top
 

StickyMinds.com Weekly Column From 10/20/03 

Member Comments
Add Your CommentExpand Comments
 
Comment:    
by Francois Bachmann 11/12/2003

That's exactly why the Agile Alliance was formed - see agilealliance.com (Extreme Programming and Agile Modeling are flavors of this "new" paradigm). Essentially, all estimation is about managing RISK. We need to stop telling our customers that there is no risk involved, and to make them think how much they are ready to invest (analysis, prototyping) in order to reduce the risk associated with the end product. To take another analogy, that's basically what you do when you approach a no-visibility turn on the road: you slow down *a bit* in order to be better prepared for half-unexpected traffic. If a moose is on the road, you'll still have...Read On

 
 
Comment:    
by Frank Patrick 10/23/2003

The title of the article was "PREDICTING Iterative Projects." It caught my attention because I've recently written in my weblog a piece about prediction (www.focusedperformance.com/2003_10_01_blarch.html#106571035403696480) of complex projects. I contend that the biggest issue that needs to be addressed in trying to predict such efforts is in the too common desire to nail down estimates (of individual pieces of work, of iterations anticipated, or of the effort as a whole) to one illusory number... "Once the objectives, the major chunks of work required, and their interdependencies are understood, the time and cost aspects of prediction...Read On

Author's Response:
10/23/2003    
Hi Frank, Thanks for your comments. I read and enjoyed your article and never found myself in disagreement with your argument. I think, however, that we are talking about related but orthogonal aspects of the problem. The argument I am making here, despite the article's title (chosen by the editorial staff) is really not about estimating per-se. It is, rather, about what I believe is a root cause of the problem we experience with the level of precision people expect of software development estimates - people have a fundamentally different expectation for the level of precision /variability for a Design effort than they do for a Construction effort. It is correct to have a fundamentally different expectation for those two types of activities because they ARE fundamentally different types of activities. We have, by our own words, created a situation where our customers have unrealistic and unattainable expectations of the level of precision we can provide in our estimates. Only after we establish that all of software development, including coding and testing, is a Design activity, will we be able to have a constructive and productive conversation with our customers about what constitutes a reasonable level of estimating precision using appropriate analogies from other industries. In Software, Construction is done by compilers. Everything else is Design. Thanks again for your comments and for the link to your excellent article. Bill

 
 
Comment:    
by Tek Wallah 10/22/2003

Thanks for an article that made me think mightily. The difference between the PC-engineer and the software programmer is that the former is trained in where and how to use existing techniques and components, and the latter hand-codes everything that can’t be pulled off the component shelf. We would never allow a PC-engineer to switch around the color of the cables or the meaning of the ON/OFF symbol on the switch, but we place no restrictions whatsoever on the programmer. “Creativity” needs to be saved for areas which are truly new or unique. Given that most people don’t know how PC’s are designed and built, maybe we should use a more homely...Read On

 
 
Comment:    
by Darryl Hurmi 10/21/2003

I agree that the terminalogy is wrong but I don't think that it is significant factor in the failure of software development teams to accuratly estimate their own work. Take your own example of the hardware developers, they also have an iterative process, but unlike the software developers they take that into account when determining the time required to develop the hardware, the margin of error in the estimate is between 10 to 50 %. A lot of programmers when asked how long it will take to write the program give one of two answers: either they tell you how long it will take them to write the initial code, or they ask how long they have to...Read On

Author's Response:
10/21/2003    
Hi Darryl, I definitely agree with your comment about the problem stemming from training. We're taught, through the use of misleading words if nothing else, that we ought to be able to give a better answer than is possible. "How long will it take to complete the Construction phase?" "Well, let's see. We have 2000 bricks to lay (or lines of software to write), we can lay 50 bricks per hour, so it'll take us 40 hours." My point is that the language we use influences our thinking in subtle ways, drawing us into making false analogies that lead both us and our listeners into false expectations. In my younger days, I worked in both the Construction and Manufacturing industries. The expectations that engineers work under in those industries during the Design phase are the same expectations that software developers should be able to expect during the entire SDLC. Unfortunately, software developers may get some latitude during what we call the "Design" phase, but once we get into our "Construction" phase, the people funding our projects expect a degree of precision analogous to the "Construction" phases in those other industries. It's, an unrealistic expectation. We are its source.

 
 
Comment:    
by Mary Donovan 10/21/2003

1) Construction has aspects of development and of manufacturing, the former being roughly proportional to the degree of innovation involved. Roebling did a lot of development in building the Brooklyn Bridge, but the builders of cookie-cutter warehouses and strip malls don’t do much. The relevance of a construction project to software development is roughly in proportion to the amount of development involved. Similarly, different software development projects have differing degrees of innovation, which affects how radically they differ from manufacturing. 2) Anyone who has understood Taylor will recognize that when he writes of analysis, it...Read On

Author's Response:
10/21/2003    
Hi Mary, Exactly. Design / Development activities are comparable from industry to industry. Problem is... we in software have been comparing, and through our words encouraging others to compare, the wrong things. If we compare the activities in the SDLC to the Design / Development activities in either a Construction or Manufacturing project with equal levels of product uniqueness, we get some very good analogies. I've seen folks use bridge building as as an example of something that software should be able to replicate. "You're trying to get from here to there. Plan the plan. Work the plan." It's an analogy I've had a hard time refuting until I realized the software was all Design and, to your point, the analogy hinged on just how much newness the project involved. I saw a show on the Discovery channel a couple of weeks ago about a bridge building effort to connect Siberia and Alaska. They're trying to build a bridge of unprecedented length that will stand up to unprecedented contitions. I think they said they've been in the Design phase for about 8 years. The predictability of the Design phase in any area of endeavor is, as you say, "roughly proportional to the degree of innovation involved." Thanks for your feedback.

 
 
Comment:    
by Alex Alexandropoulos 10/20/2003

Nice try Bill, unfortunately what most people seem to forget is that unlike Construction or Manufacturing where every detail can be planned to the nth degree, programming is essentially a creative process. Programmers unlike manufacturing workers do not follow a simple algorithm of ‘pick up screw, put screw in the hole, turn screw clockwise until tight’. Programming is a more complex process that requires the use of the creative part of the brain. The same specification given to two programmers is likely to yield the same user interface but the two programs controlling that interface are more than likely to be entirely unique. Each...Read On

Author's Response:
10/21/2003    
Hi Alex, Thanks for your feedback. My point, however, is that the Design phase in either Construction or Manufacturing projects can NOT be planned to the nth degree, and they don't try. I didn't realize this until recently, but the words we use to describe the SDLC are seductive. They trap us ever so gently into believing that there IS a Construction phase in software development that can be compared to what manufacturing or construction workers do. The truth is, there is not. Software development is COMPLETELY a design activity. In software, the manufacturing or construction activity, realizing the design, turning the design into a working thing, is done by a magic wand we call a compiler. What's fundamentally different about software isn't that it's more complex, or that requirements change, or any of the other things Brooks and others have told us. What's fundamentally different about software is that we can turn the design (our source code) into a working product automagically.

 
 
Comment:    
by Jim Hazen 10/20/2003

Agreed. The problem is that we myopically look at the SDLC when we need to look at the SLC (Software Life Cycle or Product Life Cycle). This bigger picture is needed so that realistic expecations can be set. I like how it was pointed out that Requirements are needed in both pieces. Also, how inside of one process another lives and that the inner one is an iterative process. I have to say though that the SLC is iterative, but it is on a larger scale (one version of product to the next) in comparison to the SDLC. This is the key point I see being made here. Now to really add impact we need to join in the money factors to show how this...Read On

Author's Response:
10/22/2003    
Hi Jim, Thanks for the feedback. You make very good points about the iterative nature of the Product Life Cycle and about the need to illustrate the financial consequences of the various choices within the various contexts. I've been thinking about both points and about how to fit something worthwhile into the 900 word limit I'm working with here. Thanks for the encouragement.

 
 
Comment:    
by Gerold Keefer 10/20/2003

1. development is not manufacturing. the manufacturing analogy does not hold. 2. the building analogy by and large does hold and people would be suprised about the rise in project success if they would consequently apply it. instead we use completely different raw material and structures for every new software building together with "experienced staff" on 6 month old languages. what a surprise that success is rare. 3. read your taylor: in "scientific management" you will read about a dozend times the word "training". taylor is not about infinite *division* of work but about systematic *analysis* of work. given the inability of many...Read On

 
 
Comment:    
by Andrew Raybould 10/20/2003

Bill, This is, in my opinion, one of the main reasons why three decades of 'process improvement' has had so little impact on how IT software is actually developed. These efforts have largely been attempts to apply Winslow Taylor's "Principles of Scientific Management" to software development, breaking it down into a series of tiny, almost mindless tasks. This works for manufacturing, but it ignores the essential nature of development work of any kind.

Author's Response:
10/22/2003    
Amen, Andrew. Thanks for your comments.

 
Back to Top



 
Ads By Google
What's This?
 
 



Home   |   Resources   |   Topics   |   Community   |   PowerPass



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


Avnet

HP Software




STAREAST 


Better Software Conference