Escolar Documentos
Profissional Documentos
Cultura Documentos
Personnel Management
“You can walk into a typical company and find two guys sharing
an office, getting the same salary and having essentially the
same credentials and yet find a factor of 100 difference in the
number of instructions per day that they produce.”
At least one study has shown even larger differences. The variability
of productivity of software personnel among more than 400 military
51
52 Software Engineering Quality Practices
software systems ranged from ten source lines of code per month to
several thousand [13]. Even more surprisingly, other experiments demon-
strated that some people simply cannot do the work. DeMarco and Lister
conducted an experiment in which 166 programmers were tasked to
complete the same assignment [8]. They found that the programmers
exhibited differences in productivity of about five to one on the same
small project. However, the most interesting result of the study was that
13 of the 166 programmers did not finish the project at all. In another
study with similar findings, Curtis presented a group of 60 professional
programmers with what he characterized as a simple debugging task [6].
Despite its simplicity, six of the professional programmers were not able
to complete the task. Hence, about 10 percent of software engineers either
required huge amounts of time to complete their work or others would
have to complete it for them, which translates into an actual loss of net
output per unit of cost.
Furthermore, the performance of these programmers had no significant
correlation with years of programming experience or scores on standard
programming aptitude tests. This indicates that general programming skill
dominates training and on-the-job experience, which later studies con-
firmed [12, 18]. In sum, the most important ingredient of a successful
project is to have talented people work on it [1, 19, 20]. Br ooks, for
example, said that good design practices can be taught; however, great
designs come from great designers [21] who produce structures that are
faster, smaller, simpler, cleaner, and produced with less effort [22]. Larman
supports this view when he said [23]: “More important than following an
official process or method is that a developer acquire skill in how to
create a good design, and that organizations foster this kind of skill
development. This comes from mastering a set of principles and heuristics
related to identifying and abstracting suitable objects and to assigning
responsibilities to them.” Unfortunately, McConnell believes that 95 percent
of software engineers lack fundamental design knowledge, enabling them
to produce good designs [9]. I personally believe this is a good approx-
imation of the truth, and even extends to the other aspects of the software
development process — requirements definition, coding, and testing. One
cause of this situation is that most practitioners do not maintain their
technical skills and knowledge. According to Humphrey [3], only 19
percent regularly read technical journals and only 8 percent attend pro-
fessional conferences.
The characteristics that one should expect from superior software
engineers are shown in Table 3.1 [2, 3]. To put the importance of these
characteristics in perspective, consider that the typical software engineer
needs one to two years to become comfortable with a methodology [20].
Personnel Management 53