~ By Tim Bryce
Remember, it's Ready, Aim, Fire; any other sequence is counterproductive.Bryce's Law
Having been involved with the systems methodologies field for over 30 years I have been occasionally asked what percentage of time in a project should typically be devoted to a specific phase of work, for example a Phase 1 Feasibility Study, Phase 2 Systems Design, etc. Basically, the reason the person wants to know this is to use it as a means for estimating the remainder of the project. For example, if I were to say Phase 1 represents 10% of the overall project, they would simply multiply the amount of time spent in Phase 1 by ten. This is an unreliable approach for estimating, which is why I usually balk at giving out such figures.
Systems development projects vary in size from large to small and although statistics should certainly be maintained, I still consider this an erroneous approach to estimating. Instead, I recommend basing an estimate on a rough design of the product to be built (the system), including all of its pieces and parts, such as inputs, outputs, files, records, data elements, etc. Some of these components may be reused from other systems, some may require modification, and some may be entirely new. This is called estimating based on the system's "Bill of Materials," a simple concept derived from engineering and manufacturing. Even if a project only involves a single program (as opposed to a major system), I would still examine the types and number of components affected by the assignment.
Having said all of this, let me give you my spin on the proportion of work in the typical systems development project. I have seen many companies skip through the early phases in order to get to the programming phases, which is considered the important work. Under this scenario, programming represents 85% of the project. Instead I advocate more time spent in the early phases for better clarity of requirements definition and for producing better specifications for the programmers and DBAs to follow. Under this scenario, I see as much as 60% in the early phases involving systems analysis and design, 15% in programming, and 25% in implementation and review. You heard right, 15% in programming. Why the disparity? Simply because programmers have long suffered from the lack of decent specifications and end up spinning their wheels over and over again trying to deliver what is needed. But if you concentrate on better specifications upfront, the guesswork is eliminated for the programmer.
Some people consider the upfront work to be somewhat frivolous, that the "real work" is down in programming. I don't know why this is, perhaps programming is more tangible since screens and reports can be visibly shown to people. But I do not subscribe to this notion, and believe the vital work to be in the early phases, but then again, I am considered a dinosaur by the "Agile" methodology people. Regardless, if you have to build anything of substance, be it a bridge, a skyscraper, an automobile, or a system or a single program, you have to do your homework first, otherwise you find yourself constantly tearing things down and rebuilding them over and over again. If we built bridges the same way we build systems in this country, this would be a nation run by ferryboats.
One last word on applying percentages to project estimates, the danger here is that you might calculate you are 90% complete; inevitably you will discover the last 10% will take forever. So, my recommendation is to avoid the percentage trap and consider the Bill of Materials you are going to work on instead.
Tim Bryce is the Managing Director of M. Bryce & Associates (MBA) of Palm Harbour, Florida, a management consulting firm specialising in Information Resource Management (IRM). Mr. Bryce has over 30 years of experience in the field. He is available for training and consulting on an international basis. His corporate web page is at: http://www.phmainstreet.com/mba/