Job Specialization

In addition to stratification, the software industry needs to define job specializations. Most software workers today are generalists. One moment they're architects; the next moment they're high-tech carpenters, pounding in code one line at a time. Specialization is an important element of a mature profession.

Twenty-five years ago, Fred Brooks proposed one kind of software engineering specialization when he suggested that programming teams be structured using a surgical team model. One chief programmer (the "surgeon") would write nearly all of the code, and other team members would be arrayed around the chief programmer in well-defined support roles.[3] A test project in the late 1960s in which a team was structured this way demonstrated unprecedented productivity,[4] and Brooks thought the surgical team structure was responsible for the project's results.

Applying an additional quarter century of hindsight to this extraordinary project, it seems that its remarkable productivity might not have arisen from the specific surgical team structure but from the project's high degree of specialization. Studies about other software engineering practices have found that good training in specialty roles contributes more to effectiveness than the use of a particular practice does.[5]

In the software industry today, two categories of specializations are emerging: technology specialization and software engineering specialization. As Figure 10-2 suggests, software technologists will specialize primarily on the basis of their knowledge of specific technologies. Various "software technologist" certifications are already available from specific companies such as Microsoft, Novell, Oracle, and Apple Computer.

Figure 10-2. In addition to its stratification, the software field is developing many different technology specialties and software engineering specialties.

graphics/10fig02.gif

Specialization is also beginning to occur in software engineering practices, and this is an important trend. Capers Jones estimates that lack of software engineering specialization is currently causing low quality, schedule delays, and cost overruns in about 90 percent of all United States software organizations.[6]

As Table 10-1 suggests, the more software workers a company employs, the greater its need for specialists people whose job focuses primarily on a specialty area rather than general programming. In a small organization of ten software employees, all ten employees might be generalists, or there might be a relatively simple distinction between development, test, and management. In the small number of large organizations that employ 10,000 software workers, at least 20 percent of the employees will be specialists, and in some organizations specialization can run as high as 40 percent. Jones has encountered more than 100 different specializations in his organizational assessment work.

The specific specializations shown in this table are rough averages. The ratios of specialists to generalists will vary among different companies and different kinds of software organizations.

Table 10-1. Appropriate specializations by company size[7]
 

NUMBER OF SOFTWARE EMPLOYEES

RATIO TO GENERALISTS

SPECIALTY

<10

<100

<1,000

10,000

Proportion of Specialists

0%

10 25%

15 35%

20 40%

Architecture

  

X

X

1 : 75

Configuration control

  

X

X

1 : 30

Cost estimating

  

X

X

1 : 100

Customer support

 

X

X

X

1 : 25[*]

Database administration

 

X

X

X

1 : 25

Education and training

   

X

1 : 250

Function point counting

  

X

X

1 : 50

Human factors

   

X

1 : 250[*]

Information systems

   

X

1 : 250[*]

Integration

   

X

1 : 50

Maintenance and enhancement

O

X

X

X

1 : 4

Measurement

  

X

X

1 : 50

Network

 

X

X

X

1 : 50

Package acquisition

   

X

1 : 150

Performance

   

X

1 : 75

Planning

   

X

1 : 250[*]

Process improvement

   

X

1 : 200

Quality assurance

O

X

X

X

1 : 25

Requirements

  

X

X

1 : 50[*]

Reusability

   

X

1 : 100

Standards

   

X

1 : 300

Systems software support

 

X

X

X

1 : 30

Technical writing

O

X

X

X

1 : 15

Testing

O

X

X

X

1 : 8

Tool development

   

X

1 : 250[*]

O Occasionally observed; X Usually observed.

[*] This value was estimated based on Jones's discussion, but he doesn't give a specific value for this specialization.

The benefits of specialization are not unique to software. A country doctor in practice for himself has to be a generalist, but large urban hospitals employ hundreds of specialists. Professional engineers take specialty exams, as do attorneys. Specialization is an attribute of a mature field.



Professional Software Development(c) Shorter Schedules, Higher Quality Products, More Successful Projects, [... ]reers
Professional Software Development(c) Shorter Schedules, Higher Quality Products, More Successful Projects, [... ]reers
ISBN: N/A
EAN: N/A
Year: 2005
Pages: 164

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net