“We tend to overestimate the effect of a technology in the short run and underestimate the effect in the long run”
A nice set for the “HYPE CYCLE“
Good cooking fakes time. If you are made to wait, it is to serve you better, and to please you
MENU OF RESTAURANT ANTOINE. NEW ORLEANS
More projects go wrong because of lack of time than other factors.
All programmers are optimists. Why?, maybe…
Traditional activities reveal the incompleteness and inconsistencies of our ideas during implementation, which takes time and sweat both because of the physical media and because of the inadequacies of the underlying ideas.
On the other hand, the programmer builds from pure thought-stuff, in a very tractable medium. Because of it, we expect few difficulties in implementation; hence our pervasive optimism. But our ideas are faulty, so have bugs; hence our optimism is unjustified.
In a single task, the assumption that “all will go well” has a probabilistic effect on the schedule where it might not go well.
A large programming effort, however, consists of many tasks, some chained end-to-end. The probability that each will go well becomes vanishingly small.
It is erroneous to consider that people and months are interchangeable, which is reflected in the unit of effort used in estimating and scheduling: the man-month.
The man-month as a unit for measuring the size of a job is a dangerous and deceptive myth.
TYPES OF DIFFERENT TASKS AND ITS MEN-TIME INTERCHANGEABILITY:
The added burden of communication is made up of two parts
If, moreover, there need to be conferences among three, four, etc., workers to resolve things jointly, matters get worse yet. The added effort of communicating may fully counteract the division of the original task.
Software development is inherently a systems effort—an exercise in complex interrelationships—communication effort is great, and it quickly dominates the decrease in individual task time brought about by partitioning. Adding more men then lengthens, not shortens, the schedule.
Sequential constraints especially affect component debugging and system test. The time required depends on the number and subtlety of the errors encountered. (Theoretically this number should be zero.)
>> We expect less bugs than it turns out to be
>> testing runs out of (mis)scheduled time
Rule of thumb for scheduling a software task:
This differs from conventional scheduling in several important ways:
Not assigning enough time for test is disastrous. Delay on testing phase comes at the end, so it is realized in the verge of delivery date. Bad news, late and without warning; for both customers and managers.
Urgency on the managerial side affects the schedule, but has nothing to do with the real time required for development. Once estimated time has been passed, customer has two choices—wait or “eat it raw”.
False scheduling to match client’s desired date is much more common in Software Development than elsewhere in engineering.
It is extremely complicated to make a real plausible estimation derived by no quantitative method, not enough data which is accepted by managers.
Clearly two solutions are needed. We need to develop and publicize productivity figures, bug-incidence figures, estimating rules, and so on. The whole prof ession can only profit from sharing such data.
Until estimating is on a sounder basis, individual managers will need to stiffen their backbones and defend their estimates with the assurance that their poor hunches are better than wishderived estimates.
Problem: a project behind schedule.
Oversimplifying outrageously: BROOK’S LAW:
“Adding manpower to a late software project makes it later”
This then is the demythologizing of the man-month:
From these two quantities one can derive schedules using fewer men and more months. (The only risk is product obsolescence.) One cannot, however, get workable schedules using more men and fewer months. More software projects have gone awry for lack of calendar time than for all other causes combined.
“work expands so as to fill the time available for its completion”
Stock–Sanford corollary to Parkinson’s law:
“if you wait until the last minute, it only takes a minute to do”
Horstman‘s corollary to Parkinson’s law:
“work contracts to fit in the time we give it”
“the demand upon a resource tends to expand to match the supply of the resource.”
“(the reverse is not true)”
Some define the law in regard to time as:
“the amount of time that one has to perform a task is the amount of time it will take to complete the task”