Source: The Mythical Man-Month
Identifying the joys and woes inherent to the system programming.
The Joys of the Craft
Following we can find some answers to the questions: Why is programming fun? What delights may its practitioner expect as his reward?
- The sheer joy of making things.
- The pleasure of making things that are useful to other people.
- The fascination of fashioning complex puzzle-like objects of interlocking moving parts and watching them work in subtle cycles, playing out the consequences of principles built in from the beginning.
- The joy of always learning, which springs from the nonrepeating nature of the task.
- The delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff.
The Woes of the Craft
- One must perform perfectly.
- Other people set one's objectives, provide one's resources, and furnish one's information. One rarely controls the circumstances of his work, or even its goal.
- Designing grand concepts is fun; finding nitty little bugs is just work. With any creative activity come dreary hours of tedious, painstaking labor, and programming is no exception.
- One finds that debugging has a linear convergence, or worse, where one somehow expects a quadratic sort of approach to the end. So testing drags on and on, the last difficult bugs taking more time to find than the first.
- The product over which one has labored so long appears to be obsolete upon (or before) completion.
Why more software projects have gone awry for lack of calendar time?
- Our techniques of estimating are poorly developed.
- Our estimating techniques fallaciously confuse effort with progress.
- Because we are uncertain of our estimates.
- Schedule progress is poorly monitored. Techniques proven and routine in other engineering disciplines are considered radical innovations in software engineering.
- When schedule slippage is recognized, the natural (and traditional) response is to add manpower. Like dousing a fire with gasoline, this makes matters worse, much worse.
About creative activity
Dorothy Sayers, in her excellent book, The Mind of the Maker, divides creative activity into three stages:
A book, then, or a computer, or a program comes into existence first as an ideal construct, built outside time and space, but complete in the mind of the author.
It is realized in time and space, by pen, ink, and paper, or by wire, silicon, and ferrite.
The creation is complete when someone reads the book, uses the computer, or runs the program, thereby interacting with the mind of the maker.
Demythologizing of the man-month.
The number of months of a project depends upon its sequential constraints. The maximum number of men depends upon the number of independent subtasks. From these two quantities one can derive schedules using fewer men and more months. (The only risk is product obsolescence.)