Java Reference
In-Depth Information
recent periods of economic slowdown the demand for good programmers has
greatly outstripped the supply.
Fortunately for all of us, joining the rank of the best is not necessarily a question of
raw intellectual power. Good judgment, experience, broad knowledge, attention to
detail, and superior planning are at least as important as mental brilliance. These
skills can be acquired by individuals who are genuinely interested in improving
themselves.
Even the most gifted programmer can deal with only a finite number of details in a
given time period. Suppose a programmer can implement and debug one method
every two hours, or one hundred methods per month. (This is a generous estimate.
Few programmers are this productive.) If a task requires 10,000 methods (which is
typical for a medium-sized program), then a single programmer would need 100
months to complete the job. Such a project is sometimes expressed as a
Ȓ100-man-monthȓ project. But as Fred Brooks explains in his famous topic [ 4 ], the
concept of Ȓman-monthȓ is a myth. One cannot trade months for programmers.
One hundred programmers cannot finish the task in one month. In fact, 10
programmers probably couldn't finish it in 10 months. First of all, the 10
programmers need to learn about the project before they can get productive.
Whenever there is a problem with a particular method, both the author and its
users need to meet and discuss it, taking time away from all of them. A bug in one
method may have other programmers twiddling their thumbs until it is fixed.
It is difficult to estimate these inevitable delays. They are one reason why software
is often released later than originally promised. What is a manager to do when the
delays mount? As Brooks points out, adding more personnel will make a late
project even later, because the productive people have to stop working and train
the newcomers.
You will experience these problems when you work on your first team project with
other students. Be prepared for a major drop in productivity, and be sure to set
ample time aside for team communications.
There is, however, no alternative to teamwork. Most important and worthwhile
projects transcend the ability of one single individual. Learning to function well in
a team is just as important as becoming a competent programmer.
535
Search WWH ::




Custom Search