Median annual earnings of computer programmers were $60,290 in 2002. The middle 50 percent earned between $45,960 and $78,140 a year. The lowest 10 percent earned less than $35,080; the highest 10 percent earned more than $96,860. Median annual earnings in the industries employing the largest numbers of computer programmers in 2002 were:
| Professional and commercial equipment and supplies merchant wholesalers | $70,440 |
| Software publishers | 66,870 |
| Computer systems design and related services | 65,640 |
| Management of companies and enterprises | 59,850 |
| Data processing, hosting, and related services | 59,300 |
According to the National Association of Colleges and Employers, starting salary offers for graduates with a bachelorÕs degree in computer programming averaged $45,558 a year in 2003.
According to Robert Half International, a firm providing specialized staffing services, average annual starting salaries in 2003 ranged from $51,500 to $80,500 for applications development programmers/analysts, and from $55,000 to $87,750 for software developers. Average starting salaries for mainframe systems programmers ranged from $53,250 to $68,750 in 2003.
Computer programmers write, test, and maintain the detailed instructions, called programs, that computers must follow to perform their functions. They also conceive, design, and test logical structures for solving problems by computer. Many technical innovations in programmingadvanced computing technologies and sophisticated new languages and programming toolshave redefined the role of a programmer and elevated much of the programming work done today. Job titles and descriptions may vary, depending on the organization. In this occupational 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 dowhich 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 may 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 programs according to the specifications determined primarily by computer software engineers and systems analysts. (Separate statements on computer software engineers and on computer systems analysts, database administrators, and computer scientists appear elsewhere in the Handbook.) After the design process is complete, it is the job of the programmer to convert that design into a logical series of instructions that the computer can follow. The programmer then codes these instructions in a conventional programming language, such as COBOL; an artificial intelligence language, such as Prolog; or one of the most advanced object-oriented languages such as Java, C++, or Smalltalk. Different programming languages are used depending on the purpose of the program. COBOL, for example, is commonly used for business applications, whereas Fortran (short for "formula translationÓ) is used in science and engineering. C++ is widely used for both scientific and business applications. Many programmers at the enterprise level are also expected to know platform-specific languages used in database programming. Programmers generally know more than one programming language and, because many languages are similar, they often can learn new languages relatively easily. In practice, programmers often are referred to by the language they know, as are Java programmers, or the type of function they perform or environment in which they work, which is the case for database programmers, mainframe programmers, or Web programmers. 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. Many programmers use computer-assisted software engineering (CASE) tools to automate much of the coding process. These 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 routine steps.
Programmers test a program by running it to ensure that the instructions are correct and that the program produces the desired outcome. If errors do occur, the programmer must make the appropriate change and recheck the program until it produces the correct results. Programmers working in a mainframe environment, which involves a large centralized computer, may prepare instructions for a computer operator who will run the program. (A separate statement on computer operators appears elsewhere in the Handbook.) They also may contribute to a manual for persons who will be using the program.
Programmers often are grouped into two broad typesapplications programmers and systems programmers. Applications programmers write programs to handle a specific job, such as a program to track inventory within an organization. They may also revise existing packaged software or customize generic applications called middleware. These workers make changes in the sets of instructions that determine how the network, workstations, and central processing unit of the system handle the various jobs they have been given, and how they communicate with peripheral equipment such as terminals, printers, and disk drives. Much of this type of programming takes place in the preparation of packaged software, which constitutes one of the most rapidly growing segments of the computer services industry.
In some organizations, particularly small ones, workers commonly known as programmer-analysts are responsible for both the systems analysis and the actual programming work.
Employment of programmers is expected to grow about as fast as the average for all occupations through 2012. Jobs for both systems and applications programmers should be most plentiful in data processing service firms, software houses, and computer consulting businesses. These types of establishments are part of computer systems design and related services and software publishers, which are projected to be among the fastest growing industries in the economy over the 2002-12 period. As organizations attempt to control costs and keep up with changing technology, they will need programmers to assist in conversions to new computer languages and systems. In addition, numerous job openings will result from the need to replace programmers who leave the labor force or transfer to other occupations such as manager or systems analyst.
Employment of programmers, however, is expected to grow much more slowly than that of other computer specialists. With the rapid gains in technology, sophisticated computer software now has the capability to write basic code, eliminating the need for more programmers to do this routine work. The consolidation and centralization of systems and applications, developments in packaged software, advances in programming languages and tools, and the growing ability of users to design, write, and implement more of their own programs means that more of the programming functions can be transferred from programmers to other types of workers. Furthermore, as the level of technological innovation and sophistication increases, programmers are likely to face increasing competition from programming businesses overseas, to which much routine work can be contracted out at a lower cost.
Nevertheless, employers will continue to need programmers who have strong technical skills and who understand an employerÕs business and its programming requirements. This means that programmers will have to keep abreast of changing programming languages and techniques. Given the importance of networking and the expansion of client/server, Web-based, and wireless environments, organizations will look for programmers who can support data communications and help to implement electronic commerce and Intranet strategies. Demand for programmers with strong object-oriented programming capabilities and technical specialization in areas such as client/server programming, wireless applications, multimedia technology, and graphic user interface (GUI) should arise from the expansion of intranets, extranets, and Internet applications. Programmers also will be needed to create and maintain expert systems and embed these technologies in more products. Finally, growing emphasis on cyber-security will lead to increased demand for programmers who are familiar with digital security issues and skilled in using appropriate security technology.
As programming tasks become increasingly sophisticated and additional levels of skill 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 strong competition for programming jobs. Competition for entry-level positions, however, also can affect applicants with a bachelorÕs degree. Prospects should be best for college graduates with knowledge of, and experience working with, a variety of programming languages and toolsincluding C++ and other object-oriented languages such as Java, as well as newer, domain-specific languages that apply to computer networking, database management, and Internet application development. Obtaining vendor-specific or language-specific certification also can provide a competitive edge. Because demand fluctuates with employersÕ needs, jobseekers should keep up to date with the latest skills and technologies. Individuals who want to become programmers can enhance their prospects by combining the appropriate formal training with practical work experience.
.
While there are many training paths available for programmers, mainly because employersÕ needs are so varied, the level of education and experience employers seek has been rising, due to the growing number of qualified applicants and the specialization involved with most programming tasks. BachelorÕs degrees are commonly required, although some programmers may qualify for certain jobs with 2-year degrees or certificates. The associate degree is an increasingly attractive entry-level credential for prospective computer programmers. Most community colleges and many independent technical institutes and proprietary schools offer an associate degree in computer science or a related information technology field.
Employers are primarily interested in programming knowledge, and computer programmers can become certified in a programming language such as C++ or Java. College graduates who are interested in changing careers or developing an area of expertise also may return to a 2-year community college or technical school for additional training. In the absence of a degree, substantial specialized experience or expertise may be needed. Even when hiring programmers with a degree, employers appear to be placing more emphasis on previous experience.
Some computer programmers hold a college degree in computer science, mathematics, or information systems, whereas others have taken special courses in computer programming to supplement their degree in a field such as accounting, inventory control, or another area of business. As the level of education and training required by employers continues to rise, the proportion of programmers with a college degree should increase in the future. As indicated by the following tabulation, 65 percent of computer programmers had a bachelorÕs or higher degree in 2002.
| Percent | |
| High school graduate or equivalent or less | 7.7 |
| Some college, no degree | 15.2 |
| Associate degree | 11.6 |
| Bachelor's degree | 48.6 |
| Graduate degree | 16.7 |
Required skills vary from job to job, but the demand for various skills generally is driven by changes in technology. Employers using computers for scientific or engineering applications usually prefer college graduates who have degrees in computer or information science, mathematics, engineering, or the physical sciences. 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 still is important, employers are placing increasing emphasis on newer, object-oriented programming languages and tools, such as C++ and Java. Students can improve their employment prospects by participating in a college work-study program or by undertaking an internship.
Most systems programmers hold a 4-year degree in computer science. Extensive knowledge of a variety of operating systems is essential for such workers. Systems programmers also must be able to work with database systems, such as DB2, Oracle, or Sybase.
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. The ability to work with abstract concepts and to do technical analysis is especially important for systems programmers, because they work with the software that controls the computerÕs operation.
Entry-level or junior programmers may work alone on simple assignments after some initial instruction, or they may be assigned to work on a team with more experienced programmers. Because technology changes so rapidly, programmers must continuously update their knowledge and skills by taking courses sponsored by their employer or by software vendors, or offered through local community colleges and universities.
For skilled workers who keep up to date with the latest technology, the prospects for advancement are good. In large organizations, programmers may be promoted to lead programmer and be given supervisory responsibilities. With general business experience, programmers may become programmer-analysts or systems analysts or be promoted to a managerial position. As employers increasingly contract out programming jobs, more opportunities should arise for experienced programmers with expertise in a specific area to work as consultants.
Certification is a way to demonstrate a level of competence, and may provide a jobseeker with a competitive advantage.
Other professional workers who deal extensively with data include computer software engineers; computer systems analysts, database administrators, and computer scientists; statisticians; mathematicians; engineers; financial analysts and personal financial advisors; accountants and auditors; actuaries; and operations research analysts.
State employment service offices can provide information about job openings for computer programmers. Municipal chambers of commerce are an additional source of information on an areaÕs largest employers.
Further information about computer careers is available from:
Employment is expected to grow much more slowly than that of other computer specialists. In this occupational statement, computer programmer refers to individuals whose main job function is programming; this group has a wide range of responsibilities and educational backgrounds. In most cases, several programmers work together as a team under a senior programmerÕs supervision. Programmers write programs according to the specifications determined primarily by computer software engineers and systems analysts. Employers are primarily interested in programming knowledge, and computer programmers can become certified in a programming language such as C++ or Java.
Summary of: http://stats.bls.gov/oco/ocos110.htm
Programmers determine the steps that must be followed and the processes that must be completed in each step. Sophisticated new languages and tools have made much of the programming work done today very complex. Programmers in large organizations may follow descriptions prepared by software engineers or systems analysts. It also makes programs more reliable and consistent. They like to see the results of their work and to use their strongest abilities.
Summary of: http://www.iseek.org/sv/13000.jsp?id=100045
Systems analysts solve computer problems and enable computer technology to meet individual needs of an organization. Systems development workers are also referred to as a systems developer and systems architect. When a system is accepted, analysts determine what computer hardware and software will be needed to set it up. Analysts, who do more in-depth testing of products, may be referred to as software quality assurance analysts. The middle 50 percent earned between $40,570 and $74,180 a year.
Summary of: http://www.umsl.edu/services/govdocs/ooh20002001/232.htm
Includes table of contents of the current issue, and the full text of selected recent articles. It aims to influence decisions regarding the development and use of computers so that they reflect basic values and priorities. It covers the syntax of standard Pascal, including pointers. Conducts research into natural language analysis topics including data mining/information extraction, dialogue, and semantics. Includes material on hardware, events, projects, and vendors.
Summary of: http://bubl.ac.uk/link/c/computerprogrammers.htm
They meet with the client and learn about the client's specific needs. They then work with the programmers to design and develop software that fits the client's needs. The Computer Systems Analysts supervises the programmers to make sure that they develop the software to the client's specification in a timely manner. After meeting, the analyst figures out what kind of system would best suit their needs. In larger offices, systems analysts supervise the work of programmers and other analysts.
Summary of: http://www.gettech.org/career_desc.asp?job_id=16&cat_id=3
Job tasks and occupational titles used to describe these workers evolve rapidly, reflecting new areas of specialization or changes in technology, as well as the preferences and practices of employers. Systems analysts solve computer problems and apply computer technology to meet the individual needs of an organization. They help an organization to realize the maximum benefit from its investment in equipment, personnel, and business processes. They may design new systems, including both hardware and software, or add a new software application to harness more of the computerÕs power. A primary goal of networking is to allow users to retrieve data from a mainframe computer or a server and use it on their desktop computer.
Summary of: http://stats.bls.gov/oco/ocos042.htm
They are employed in computer software and consulting firms and in programming units throughout the private and public sectors. However, the demand to upgrade the programmers' skill sets continually is expected to be equally strong. Programmers should be able to work independently and as part of a team. Full-time, full-year earnings averaged $53,400, which is higher than the average for all occupations. These part-time programmers may not be included in the employment estimates.
Summary of: http://www.workfutures.bc.ca/profiles/profile.cfm?noc=2163&lang=en&site=graphic
All students take introductory classes in operating systems, computer hardware, programming, and networking. The curriculum incorporates an elective block allowing students to select an area of emphasis in programming or network administration. Students interested in computer programming may pick from several popular programming languages. Structured programming provides the tools for implementing problem solutions. Some programmers employed by large companies work in large groups that support manufacturing, engineering, research, and development efforts.
Summary of: http://www.sal.k-state.edu/academics/engtech/cst/