Search this site:

Consumer Information Center Computer Programmers

Consumer Information Center: Computer Programmers

  Return to Savvy Consumer Information Center - Home Page   

1998-99 Occupational Outlook Handbook

Computer Programmers

(D.O.T. 030.162-010, -018, -022, and .167-010)


Nature of the Work
Working Conditions
Employment
Training, Other Qualifications, and Advancement
Job Outlook
Earnings
Related Occupations
Sources of Additional Information

Significant Points

Nature of the Work

Computer programmers write, test, and maintain the detailed instructions—called "programs" or "software"—that list in a logical order the steps computers must execute to perform their functions. Programmers often are categorized as technicians, distinct from the higher level of theoretical expertise characteristic of computer scientists, computer engineers, and systems analysts. However, many technical innovations in programming—advanced computing technologies and sophisticated new languages and programming tools—have redefined the role of a programmer and elevated much of the programming work done today. It is becoming much more difficult to distinguish different computer specialists—including programmers—since job titles shift so rapidly, reflecting new areas of specialization or changes in technology. Job titles and descriptions also may vary depending on the organization. In this statement, "computer programmer" refers to individuals whose main job function is programming; this group has a wide range of responsibilities and educational backgrounds.

Computer programs tell the computer what to do, such as which information to identify and access, how to process it, and what equipment to use. Programs vary widely depending upon the type of information to be accessed or generated. For example, the instructions involved in updating financial records are very different from those required to duplicate conditions on board an aircraft for pilots training in a flight simulator. Although simple programs can be written in a few hours, programs that use complex mathematical formulas, whose solutions can only be approximated, or that draw data from many existing systems, require more than a year of work. In most cases, several programmers work together as a team under a senior programmer's supervision.

Programmers write specific programs by breaking down each step into a logical series of instructions the computer can follow. They then code these instructions in a conventional programming language, such as C and FORTRAN; an artificial intelligence language, such as LISP or Prolog; or one of the more advanced function-oriented or object-oriented languages, such as UML, Java, C++, Visual Basic, or Ada. Programmers usually know more than one programming language and since many languages are alike, they can often learn new languages relatively easily. In practice, programmers are often referred to by the language they know or the type of environment they generally work in such as mainframe programmer, object-oriented programmer, or Internet or World Wide Web programmer. In many large organizations, programmers follow descriptions that have been prepared by software engineers or systems analysts. These descriptions list the input required, the steps the computer must follow to process data, and the desired arrangement of the output.

Many programmers are involved in updating, repairing, modifying and expanding existing programs. When making changes to a section of code, called a "routine," programmers need to make other users aware of the task the routine is to perform. They do this by inserting comments in the coded instructions so others can understand the program. Innovations such as Computer-Aided Software Engineering (CASE) tools enable a programmer to concentrate on writing the unique parts of the program because the tools automate various pieces of the program being built. CASE tools generate whole sections of code automatically, rather than line by line. This also yields more reliable and consistent programs and increases programmers' productivity by eliminating some of the routine steps.

Programmers test a program by running it to ensure the instructions are correct and it produces the desired information. If errors do occur, the programmer must make the appropriate change and recheck the program until it produces the correct results, a process called "debugging." Programmers working in a mainframe environment may still prepare instructions for a computer operator who will run the program. (The work of computer operators is described in the statement on computer operators elsewhere in the Handbook.) They may also contribute to a user's manual for the program.

Programmers often are grouped into two broad types: Applications programmers and systems programmers. Applications programmers usually are oriented toward business, engineering, or science. They write software to handle specific jobs within an organization, such as a program used in an inventory control system. They may also work alone to revise existing packaged software. Systems programmers, on the other hand, maintain and control the use of computer systems software. These workers make changes in the sets of instructions that determine how the network, workstations, and central processing unit of the system handles the various jobs they have been given and how they communicate with peripheral equipment, such as terminals, printers, and disk drives. Because of their knowledge of the entire computer system, systems programmers often help applications programmers determine the source of problems that may occur with their programs.

In some organizations, particularly smaller ones, workers more commonly referred to as programmer-analysts are responsible for both the systems analysis and the actual programming work. (A more detailed description of the work of programmer-analysts is presented in the statement on computer scientists, computer engineers, and systems analysts elsewhere in the Handbook.) Advanced programming languages and new object-oriented programming capabilities are increasing the efficiency and productivity of both programmers and users. The transition from a mainframe environment to a primarily PC-based environment has blurred the once rigid distinction between the programmer and the user. Increasingly, adept users are taking over many of the tasks previously performed by programmers. For example, the growing use of packaged software, like spreadsheet and data base management software packages, allows users to write simple programs to access data and perform calculations.

Programmers in software development companies may work directly with experts from various fields to create software—either programs designed for specific clients or packaged software for general use—ranging from games and educational software to programs for desktop publishing, financial planning, and spreadsheets. Much of this type of programming is in the preparation of packaged software, which comprises one of the most rapidly growing segments of the computer services industry.

Working Conditions

Programmers generally work in offices in comfortable surroundings. Although they usually work about 40 hours a week, programmers may work longer hours or weekends in order to meet deadlines or fix critical problems that occur during off hours. Given the technology available, telecommuting is becoming more common for a wider range of computer professionals—including computer programmers. Programmers can access a system directly, but from remote locations, to make corrections or fix problems.

Like other workers who spend long periods of time in front of a computer terminal typing at a keyboard, they are susceptible to eyestrain, back discomfort, and hand and wrist problems such as carpal tunnel syndrome or cumulative trauma disorder.

Employment

Computer programmers held about 568,000 jobs in 1996. Programmers are employed in almost every industry, but the largest concentration is in the computer and data processing services industry which includes firms that write and sell software. Large numbers of programmers can also be found working for firms that provide engineering and management services, manufacturers of computer and office equipment, financial institutions, insurance carriers, educational institutions, and government agencies.

A growing number of computer programmers are employed on a temporary or contract basis or work as independent consultants as companies demand expertise with newer programming languages or more specialized areas of application. Rather than hiring programmers as permanent employees and then laying them off after a job is completed, employers can contract with temporary help agencies, consulting firms, or directly with programmers themselves. A marketing firm, for example, may only require the services of several programmers to write and "debug" the software necessary to get a new database management system running. This practice also enables companies to bring in people with a specific set of skills, usually in one of the latest technologies as it applies to their business needs. Bringing in an independent contractor or consultant with a certain level of experience in a new or advanced programming language, for example, enables an establishment to complete a particular job without having to retrain existing workers. Such jobs may last anywhere from several weeks to a year or longer. There were 20,000 self-employed computer programmers in 1996 and this number is expected to increase.

Training, Other Qualifications, and Advancement

While there are many training paths available for programmers, mainly because employers' needs are so varied, the level of education and quality of training employers seek have been rising due to the growth in the number of qualified applicants and the increasing complexity of some programming tasks. Bachelor's degrees are now commonly required, although some programmers qualify with 2-year degrees or certificates. College graduates who are interested in changing careers or developing an area of expertise also may return to a two-year community college or technical school for additional training. In the absence of a degree, substantial specialized experience or expertise may be needed. Even with a degree, employers appear to be placing more emphasis on previous experience for all types of programmers.

Table 1. Percent distribution of highest level of school completed or degree received, computer programmers, 1996

High school graduate or equivalent or less   10.0
Some college, no degree   20.9
Associate's degree   9.6
Bachelor's degree   45.2
Graduate degree   14.2

The majority of computer programmers—almost 60 percent—had a bachelor's degree or higher in 1996. (See table 1.) Of these, some hold a B.A. or B.S. in computer science, mathematics, or information systems while others have taken special courses in computer programming to supplement their study in fields such as accounting, inventory control, or other business areas. As the level of education and training required by employers continues to rise, this percentage should increase in the future.

Skills needed vary from job to job and the demand for various skills is generally driven by changes in technology. Employers using computers for scientific or engineering applications generally prefer college graduates who have degrees in computer or information science, mathematics, engineering, or the physical sciences. Graduate degrees in related fields may be required for some jobs. Employers who use computers for business applications prefer to hire people who have had college courses in management information systems (MIS) and business, and who possess strong programming skills. Although knowledge of traditional languages such as FORTRAN, COBOL, or C is still important, increasing emphasis is placed on more advanced object-oriented languages and tools such as CASE tools, C++, Visual C++, Ada, Smalltalk, Visual Basic, PowerBuilder, and Java as well as 4th and 5th generation languages, graphic user interface (GUI) and systems programming. General business skills and experience related to the operations of the firm are preferred by employers as well.

Most systems programmers hold a 4-year degree in computer science. Extensive knowledge of a variety of operating systems is essential. This includes being able to configure the operating system to work with different types of hardware, and adapting the operating system to best meet the needs of the particular organization. They must also be able to work with database systems such as DB2, Oracle, or Sybase, for example.

When hiring programmers, employers look for people with the necessary programming skills who can think logically and pay close attention to detail. The job calls for patience, persistence, and the ability to work on exacting analytical work, especially under pressure. Ingenuity and imagination are also particularly important when programmers design solutions and test their work for potential failures. The ability to work with abstract concepts and do technical analysis is especially important for systems programmers because they work with the software that controls the computer's operation. Since programmers are expected to work in teams and interact directly with users, employers want programmers who are able to communicate with non-technical personnel.

Beginning programmers may work alone on simple assignments after some initial instruction, or on a team with more experienced programmers. Either way, beginning programmers generally must work under close supervision. Because technology changes so rapidly, programmers must continuously update their training by taking courses sponsored by their employer or software vendors.

For skilled workers who keep up to date with the latest technology, the prospects for advancement are good. In large organizations, they may be promoted to lead programmer and be given supervisory responsibilities. Some applications programmers may move into systems programming after they gain experience and take courses in systems software. With general business experience, programmers may become programmer-analysts or systems analysts, or be promoted to a managerial position. Other programmers, with specialized knowledge and experience with a language or operating system, may work in research and development areas such as multimedia or Internet technology. As employers increasingly contract out programming jobs, more opportunities should arise for experienced programmers with expertise in a specific area to work as consultants.

Technical or professional certification is becoming more common as a way for employers to ensure a level of competency or quality in all areas. Many product vendors offer certification or may even require certification of technicians and professionals who work with their products. The number of voluntary certificate or certification programs is also growing and this type of certification is available through organizations such as the Institute for Certification of Computing Professionals (ICCP). ICCP confers the designation Certified Computing Professional (CCP) to those who have at least 4 years of experience or 2 years of experience and a college degree. To qualify, individuals must pass a core examination plus exams in two specialty areas, or an exam in one specialty area and two computing languages. Those with little or no experience may be tested for certification as an Associate Computer Professional (ACP). Certification is not mandatory, but it may give a job-seeker a competitive advantage.

Job Outlook

Employment of programmers is expected to grow faster than the average through the year 2006. Jobs for both systems and applications programmers should be plentiful in data processing service firms, software houses, and computer consulting businesses. These types of establishments are part of computer and data processing services, which is projected to be the fastest growing industry. As companies attempt to control costs and keep up with changing technology, they will maintain a need for programmers to assist in conversions to new languages and from one system to the next. In addition, numerous job openings for programmers will result from the need to replace programmers who move to other occupations or leave the labor force. Most programmers who leave transfer to other occupations, such as manager or systems analyst.

Despite numerous openings, however, the consolidation and centralization of systems and applications should continue to moderate growth, as will developments in packaged software, advanced programming languages and tools, and the growing ability of users to design, write, and implement more of their own programs to meet their changing needs. As the level of technological innovation and sophistication increases, programmers should continue to face increasing competition from programming businesses overseas where more of the routine work can be outsourced at a lower cost.

As programming tasks become more complex and increasingly sophisticated skills and experience are demanded by employers, graduates of 2-year programs, and people with less than a 2-year degree or its equivalent in work experience, should face stronger competition for programming jobs. Competition for entry-level positions, however, can even affect applicants with a bachelor's degree. Although demand fluctuates as employer's needs change with technology, prospects should be best for college graduates with knowledge of and experience working with a variety of programming languages and tools, particularly C++ and other object oriented languages—such as Smalltalk, Visual Basic, Ada, and Java—as well as newer, domain-specific languages that apply to computer networking, data base management, and Internet applications. In order to remain competitive, college graduates should keep up to date with the latest skills and technologies.

Many employers prefer to hire applicants with previous experience in the field. Employers are increasingly interested in programmers who can combine areas of technical expertise or who are adaptable and able to learn and incorporate new skills. Therefore, individuals who want to become programmers can enhance their chances of doing so by combining the appropriate formal training with practical work experience. Students should try to gain experience by participating in a college work-study program, or undertaking an internship. Students also can greatly improve their employment prospects by taking courses such as accounting, management, engineering, or science—allied fields in which applications programmers are in demand.

With the expansion of client/server environments, employers will continue to look for programmers with strong technical skills who understand their business and its programming needs. Businesses also look for programmers who develop a technical specialization in areas such as client/server programming, multimedia technology, graphic user interface (GUI), and 4th and 5th generation programming tools. Programmers will be creating and maintaining expert systems and embedding these technologies in more and more products. Other areas of progress include data communications and the business application of Internet technologies. Networking computers so they can communicate with each other is necessary to achieve the greater efficiency organizations require to remain competitive. Demand for programmers with strong object-oriented programming capabilities and experience should arise from the expansion of Intranets, extranets and World Wide Web applications.

Earnings

Median earnings of programmers who worked full time in 1996 were about $40,100 a year. The middle 50 percent earned between about $30,700 and $52,000 a year. The lowest 10 percent earned less than $22,700; the highest 10 percent earned more than $65,200. Starting salary offersfor graduates with a bachelor's degree in the area of computer programming averaged about $35,167 a year in private industry in 1997, according to the National Association of Colleges and Employers. Programmers working in the West and Northeast earned somewhat more than those working in the South and Midwest. On average, systems programmers earn more than applications programmers.

A survey of workplaces in 160 metropolitan areas reported that beginning programmers had median annual earnings of about $27,000 in 1995. Experienced mid-level programmers with some supervisory responsibilities had median annual earnings of about $40,000. Median annual earnings for programmers at the supervisory or team leader level were about $55,000.

According to Robert Half International Inc., starting salaries ranged from $32,500 to $39,000 for programmers and $47,500 to $60,000 for systems programmers in large establishments in 1997. Starting salaries for programmers in small establishments ranged from $28,000 to $37,000.

In the Federal Government, the entrance salary for programmers with a college degree or qualifying experience was about $19,520 a year in early 1997; for those with a superior academic record, $24,180.

Related Occupations

Programmers must pay great attention to detail as they write and "debug" programs. Other professional workers who must be detail-oriented include computer scientists, computer engineers, and systems analysts, statisticians, mathematicians, engineers, financial analysts, accountants, auditors, actuaries, and operations research analysts.

Sources of Additional Information

State employment service offices can provide information about job openings for computer programmers. Also check with your city's chamber of commerce for information on the area's largest employers.

For information about certification as a computing professional, contact:
Institute for Certification of Computing Professionals (ICCP), 2200 East Devon Ave., Suite 268, Des Plaines, IL 60018. Homepage: http://www.iccp.org

Further information about computer careers is available from:
The Association for Computing (ACM), 1515 Broadway, New York, NY 10036.
IEEE Computer Society, Headquarters Office, 1730 Massachusetts Ave., NW., Washington, DC 20036-1992.

  Return to Savvy Consumer Information Center - Home Page   

Search this site:


Get the Savvy Consumer Newsletter! (FREE)