Computer programmers write, and maintain the detailed instructions—called "programs" or "software"—that list in a logical order the steps that computers must execute to perform their functions. In many large organizations, programmers follow descriptions prepared by systems analysts who have carefully studied the task that the computer system is going to perform. These descriptions list the input required, the steps the computer must follow to process data, and the desired arrangement of the output. Some organizations, particularly smaller ones, do not employ systems analysts. Instead, workers called programmer-analysts are responsible for both systems analysis and programming.
Regardless of setting, 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, or one of the more advanced artificial intelligence or object oriented languages, such as LISP, Prolog, C++, or Ada.
The transition from a mainframe environment to primarily a 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 program 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 the programming being done today is the preparation of packaged software, one of the most rapidly growing segments of the computer industry.
Despite the prevalence of packaged software, many programmers are involved in updating, repairing, and modifying code for existing programs. When making changes to a section of code, called a "routine," programmers need to make other users aware of the task that the routine is to perform. They do this by inserting comments in the coded instructions so others can understand the program. Programmers using Computer-Aided Software Engineering (CASE) tools can concentrate on writing the unique parts of the program because the tools automate various pieces of the program being built. This also yields more reliable and consistent programs and increases programmers' productivity by eliminating some of the routine steps.
When a program is ready to be tested, programmers run it to ensure that the instructions are correct and will produce the desired information. They prepare sample data that test every part of the program and, after trial runs, review the results to see if any errors were made. If errors do occur, the programmer must make the appropriate change and recheck the program until it produces the correct results. This is called "debugging" the program.
Finally, programmers working in a mainframe environment prepare instructions for the computer operator who will run the program. They may also contribute to a user's manual for the pro-gram.
Programs vary depending upon the type of information to be accessed or generated. For example, the instructions involved in updating financial records are different from those required to duplicate conditions onboard 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 or many data files may require more than a year of work. In most cases, several programmers may work together as a team under a senior programmer's supervision.
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, such as a program used in an inventory control system or one to guide a missile after it has been fired. They also may work alone to revise existing packaged software.
Systems programmers, on the other hand, maintain the software that controls the operation of an entire computer system. These workers make changes in the sets of instructions that determine how the central processing unit of the system handles the various jobs it has been given and communicates 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.
Working Conditions
Programmers generally work in offices in comfortable surroundings. Although they usually work about 40 hours a week their hours are not always from 9 to 5. Programmers may work longer hours or weekends in order to meet deadlines or fix critical problems that occur during off hours.
Because programmers spend long periods of time in front of a computer monitor typing at a keyboard, they are susceptible to eyestrain, back discomfort, and hand and wrist problems.
Employment
Programmers are employed in most industries, but the large concentrations are in data processing service organizations, including firms that write and sell software; firms that provide engineering and management services; manufacturers of computer and office equipment; financial institutions; insurance carrier educational institutions; and government agencies. Application programmers work for all types of firms, whereas systems programmers usually work for organizations with large computing centers or for firms that manufacture computers or develop software.
A growing number of programmers are employed on a temporary or contract basis. Rather than hiring programmers as permanent employees and then laying them off after a job completed, employers increasingly are contracting 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. Such jobs may last from several months to a year longer.
Training, Other Qualifications, and Advancement
There are no universal training requirements for programmers because employers' needs are so varied. Computer applications have become so widespread that computer programming taught at most public and private vocational schools, community and junior colleges, and universities. However, the level of education and quality of training that employers seek have been rising due to the growth in the number of qualified applicants and the increasing complexity of some programming tasks. Although some programmers obtain two-year degrees or certificate, bachelor's degrees are now commonly required. In the absence of a degree, substantial specialized experience or expertise may be needed.
The majority of programmers hold a four-year degree. Of these, some hold a B.A. or B.S. in computer science 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. College graduates who are interested in changing careers or developing an area of expertise may return to a junior college or technical school for more training.
Employers using computers for scientific or engineering applications prefer college graduates who have degrees in computer or information science, mathematics, engineering, or physical sciences. Graduate degrees are 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. Knowledge of FORTRAN, COBOL, C, Fourth Generation Languages (4GL), CASE tools, systems programming, ++, Smalltalk, and other object oriented programming languages highly desirable. General business skills and experience related to the operations of the firm are preferred by employers as well.
Most systems programmers hold a four-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 also must be able to work with data-wise systems such as DB2, Oracle, or Sybase, for example.
The Institute for Certification of Computing Professionals offers the designation Certified Computing Professional (CCP) to those who have at least four years of experience or two years of experience and a college degree. To qualify, individuals must pass 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.
When hiring programmers, employers look for people with necessary programming skills and for those who can think logically and give 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. Increasingly, interpersonal drills are important as programmers are expected to work in teams to interact directly with users. The ability to work with abstract concepts and do technical analysis is especially important for most programmers because they work with the software that controls the computer's operation.
Beginning programmers may spend their first weeks attending training classes since each business has its own development methodology, processes, and tools. After this initial instruction, they may work alone on simple assignments or on a team with more experienced programmers. Either way, they generally must spend at least several months working under close supervision. Because of rapidly changing technology, programmers must continuously update their training by taking courses sponsored by their employer or software vendors.
For skilled workers, the prospects for advancement are good. In large organizations, they may be promoted to lead programmers 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, both applications programmers and systems programmers may become 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.
Job Outlook
Employment of programmers is expected to grow about as fast as the average for all occupations. Employment is not expected to grow as rapidly as in the past as improved software and programming techniques continue to simplify programming tasks. In addition, greater use of packaged software-such as word processing and spreadsheet packages- should continue to moderate the growth in demand for applications programmers. As the level of technological innovation and sophistication increases, users will be able to design, write, and implement more of their own programs to meet their changing needs.
Although the proportion of programmers leaving the occupation each year is smaller than that of most occupations, many of the job openings for programmers will result from replacement needs. A majority of programmers leave or transfer to other occupations, such as manager or systems analyst. Jobs for both systems and applications programmers, however, should remain particularly plentiful in data processing service firms, software houses, and computer consulting businesses. These types of establishments remain part of one of the fastest growing industries- computer and data processing services. As companies look to control costs, those in need of programming services should look to this industry to meet these needs.
As computer usage expands, however, the demand for skilled programmers will increase as organizations seek new applications for computers and improvements to the software already in use. 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. One area of progress will be data communications. Networking computers will be in great demand as organizations want to use them to boost their efficiency so that they can remain competitive. Object-oriented languages will increasingly be used in the years ahead, further enhancing the productivity of programmers. Programmers will be creating and maintaining expert systems and embedding these technologies in more and more products.
As the number and quality of applicants for programmer jobs have increased, employers have become more selective. Graduates of two-year programs in data processing, and people with less than a two-year degree or its equivalent in work experience are facing strong competition for programming jobs. Competition for entry-level positions even affects applicants with a bachelor's degree. Many observers expect opportunities for people without college degrees to diminish in coming years as programming tasks become more complex and more sophisticated skills and experience are demanded by employers. Prospects should be good for college graduates with knowledge of a variety of programming languages, particularly C++ and other object oriented languages, as well as newer languages that apply to computer networking, data base management, and artificial intelligence. 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. Firms also desire programmers who develop a technical specialization in areas such as client/server programming, multimedia technology, graphic user interface, or fourth- and fifth-generation programming tools. Therefore, people who want to become programmers can enhance their chances by combining work experience with the appropriate formal training. 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, as well as good interpersonal and business skills.
Earnings
Median earnings of programmers who worked full-time in 1994 were about $38,400 a year. The middle 50 percent earned between about $30,000 and $49,200 a year. The lowest 10 percent earned less than $22,000, and the highest 10 percent, more than $60,600.
According to Robert Half International Inc., starting salaries in large establishments for 1994 ranged from $29,500 to $36,500 for programmers; $36,000 to $47,000 for programmer analysts; and $44,000 to $54,000 for systems programmers. Starting salaries in small establishments ranged from $25,000 to $34,000 for programmers and from $30,000 to $40,000 for programmer analysts.
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.
In the federal government, the entrance salary for programmers with a college degree or qualifying experience was about $ 18,700 a year in 1995; for those with a superior academic record, $23,200.
Related Occupations
Programmers must pay great attention to detail as they write and "debug" programs. Other professional workers who must be detail-oriented include statisticians, engineers, financial analysts, accountants, auditors, actuaries, and operations research analysts.
Related D.OJ. Jobs
These job titles are related to or more specific than the more general description. They will help you identify job options you may not otherwise discover. These descriptions are in the current edition of the Dictionary of Occupational Titles and classified by numerical order.
030.162-010 COMPUTER PROGRAMMER; 030.162-018 PROGRAMMER, ENGINEERING AND SCIENTIFIC; 030.162-022 SYSTEMS PROGRAMMER; 030.167-010 CHIEF, COMPUTER PROGRAMMER
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 the Certification of Computing Professionals, Des Plaines,' 60018
- The Association for Computing Machinery, New York, NY 10036