In the early 1990s, many CIOs looked to client-server solutions to try to decrease development time and application backlogs. Many attempts at deploying client-server solutions, however, failed in part because no central group controlled all those distributed desktops that the "client" part of the application had to be deployed on. One of the reasons that so many CIOs in the late 1990s have looked to solutions based on network computing architectures is because they allow organizations to combine the best of the mainframe and PC paradigms . Corporate data can once again be centralized and applications deployed over Intranets with web and Java technologies. The new technologies associated with network computing architectures, such as object-oriented computing and the Internet, however, come at a price. Building a winning software development team is now much more difficult as IT staffs must be retrained or experienced talent hired from the outside (or both). Besides the traditional software development positions, there is a whole new range of specialists needed: webmaster, toolsmith , graphic artist, CORBA and Java developers, and the list goes on. Most of these positions didn't even exist five years ago.
The U.S. Bureau of Labor Statistics' projections list computer and data processing services, including software development, as the industry with the fastest employment growth from 1996 to 2006. A projected 108% growth rate equates to 1.3 million new jobs. It is estimated that as many as a third of these jobs will be related to software development. The Information Technology Association of America (ITAA), in 1997, surveyed large and mid- sized U.S. companies and estimated they had 191,000 unfilled IT positions, again with up to a third of these related to software development. In 1998, a Newsweek study  estimated there were 478,000 unfilled information technology jobs. Whatever number you believe, there is no doubt that recruiting, retraining , and retaining skilled IT professionals is the number one management challenge faced today by CIOs worldwide. This chapter examines some of the key staff positions needed in a modern software development organization. While not all development teams will need full-time dedicated individuals for each position identified in this chapter, successful software projects probably will require most of the technical, managerial , and relationship skills discussed in this chapter at some point in the project lifecycle.
 Newsweek, July 20, 1998.
It is no wonder that two of the most common concerns of CIOs today are (not necessarily in this order):
The three R's, or how will they Recruit, Retrain, and Retain a skilled software development team (and other IT professionals); and
How long will they be able to retain their own job
In Chapter 6, we discuss different ways to organize a software development organization to increase your chances of successful software development. First, however, some of the different skill sets you will need to recruit, retrain, and retain skilled engineers for your software development team will be described in this chapter. The information presented here will enable you to write complete job descriptions and serve as a guide for interviewing candidates. While the jobs described are typical of what one might find in a Fortune 500 organization, exact job descriptions will, of course, vary from company to company. You should use these job descriptions as a template and modify them to meet the requirements of your own organization.
For each development role, this chapter lists typical education, experience, and skills required. A typical top level organization chart is shown in Figure 5-1. This organization chart is for illustrative purposes only. A complete set of more specific organization charts for different sizes and types of software development organizations is included in Chapter 6. Jobs described in this chapter include general software development positions such as:
Director of Software Development
Chief Software Architect
Software Development Manager
Senior Software Engineer
Software Engineer II
Software Engineer I
We also cover a number of specialty positions. Not every software development organization will have these specialty positions as they may report to some other group within the information technology organization. We cover these positions here because of their large impact on the success of many software development projects. The specialty positions discussed include:
Server System Administrator