Computer programmers write programs. After computer software engineers and systems analysts design software programs, the programmer converts that design into a logical series of instructions that the computer can follow. The programmer codes these instructions in any of a number of programming languages, depending on the need. The most common languages are C++ and Python.
Computer programmers also update, repair, modify, and expand existing programs. Some, especially those working on large projects that involve 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 a program. Programmers working on smaller projects often use “programmer environments,” applications that increase productivity by combining compiling, code walk-through, code generation, test data generation, and debugging functions. Programmers also use libraries of basic code that can be modified or customized for a specific application. This approach yields more reliable and consistent programs and increases programmers' productivity by eliminating some routine steps.
As software design has continued to advance, and some programming functions have become automated, programmers have begun to assume some of the responsibilities that were once performed only by computer software engineers. As a result, some computer programmers now assist computer software engineers in identifying user needs and designing certain parts of computer programs, as well as other functions.
Work environment. Computer programmers normally work in clean, comfortable offices or in laboratories in which computer equipment is located. Telecommuting is becoming more common as technological advances allow more work to be done from remote locations.
Most programmers work 40 hours a week, but about 11 percent of programmers worked more than 50 hours a week in 2008. Injuries in these occupations are rare. However, like other workers who spend long periods in front of a computer terminal typing at a keyboard, programmers are susceptible to eyestrain, back discomfort, and hand and wrist problems such as carpal tunnel syndrome.
Training, Qualifications, and Advancement
A bachelor's degree commonly is required for computer programming jobs, although a 2-year degree or certificate may be adequate in some cases. Employers favor applicants who already have relevant skills and experience. Workers who keep up to date with the latest technology usually have good opportunities for advancement.
Education and training. For computer programming positions, many employers require a bachelor's degree, but a 2-year degree or certificate may be adequate for some positions. 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, finance, or another area of business.
Employers who use computers for scientific or engineering applications usually prefer college graduates who have a degree 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 and business, and who possess strong programming skills. A graduate degree in a related field is required for some jobs.
In addition to educational attainment, employers highly value relevant programming skills and experience. Students seeking programming jobs can enhance their employment opportunities by participating in internships. Some employers, such as large computer and consulting firms, train new employees in intensive, company-based programs.
As technology advances, employers will need workers with the latest skills. To help keep up with changing technology, workers may take continuing education and professional development seminars offered by employers, software vendors, colleges and universities, private training institutions, and professional computing societies.
Certification and other qualifications. Certification is a way to demonstrate a level of competence and may provide a jobseeker with a competitive advantage. Certification programs are generally offered by product vendors or software firms, which may require professionals who work with their products to be certified. Voluntary certification also is available through various other organizations, such as professional computing societies.
Computer programmers must have strong problem-solving and analytical skills. Ingenuity and creativity are particularly important in order to design new, functional software programs. Programmers also must be able to communicate effectively with team members, other staff, and end users. Because they often deal with a number of tasks simultaneously, they must be able to concentrate and pay close attention to detail. Business skills are also important, especially for those wishing to advance to managerial positions.
Advancement. For skilled workers who keep up to date with the latest technology, prospects for advancement are good. In large organizations, programmers 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 may be promoted to managerial positions. Programmers with specialized knowledge and experience with a language or operating system may become computer software engineers. As employers increasingly contract with outside firms to do programming jobs, more opportunities should arise for experienced programmers with expertise in a specific area to work as consultants.
Computer programmers held about 426,700 million jobs in 2008. Although computer programmers can be found in a wide range of industries about 32 percent were employed in computer systems design and related services. Many also worked for software publishers, manufacturers of computers and related electronic equipment, financial institutions, and insurance providers. About 15,400 computer programmers were self-employed in 2008.
Overall, employment of computer programmers is projected to decline for all occupations. Job prospects should be best for those with a bachelor's degree and relevant experience.
Employment change. Employment of computer programmers is expected to decline slowly, decreasing by 3 percent from 2008 to 2018. Advances in programming languages and tools, the growing ability of users to write and implement their own programs, and the offshore outsourcing of programming jobs will contribute to this decline.
Because they can transmit their programs digitally, computer programmers can perform their job function from anywhere in the world, allowing companies to employ workers in countries that have lower prevailing wages. Computer programmers are at a much higher risk of having their jobs offshored than are workers involved in more complex and sophisticated information technology functions, such as software engineering. Much of the work of computer programmers requires little localized or specialized knowledge and can be made routine once knowledge of a particular programming language is mastered.
Nevertheless, employers will continue to need some local programmers, especially those 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. Furthermore, a recent trend of domestic sourcing may help to keep a number of programming jobs onshore. Instead of hiring workers in foreign locations, some organizations have begun to contract with programmers in low-cost areas of the United States. This allows them to reduce payroll expenses, while eliminating some of the logistical issues that arise with offshore outsourcing.
Job prospects. Although employment of computer programmers is projected to decline, numerous job openings will result from the need to replace workers who leave the labor force or transfer to other occupations. Prospects for these openings should be best for applicants with a bachelor's degree and experience with a variety of programming languages and tools. As technology evolves, however, and newer, more sophisticated tools emerge, programmers will need to update their skills in order to remain competitive. Obtaining vendor-specific or language-specific certification also can provide a competitive edge.
Median annual wages of wage-and-salary computer programmers were $69,620 in May 2008. The middle 50 percent earned between $52,640 and $89,720 a year. The lowest 10 percent earned less than $40,080, and the highest 10 percent earned more than $111,450. Median annual wages in the industries employing the largest numbers of computer programmers in May 2008 are shown below:
|Management of companies and enterprises||71,040|
|Computer systems design and related services||70,270|
According to the National Association of Colleges and Employers, starting salary offers for graduates with a bachelor’s degree in computer science averaged $61,407 in July 2009.
For More Information
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:
- Association for Computing Machinery, 2 Penn Plaza, Suite 701, New York, NY 10121-0701. Internet: http://computingcareers.acm.org
- National Workforce Center for Emerging Technologies, 3000 Landerholm Circle SE., Bellevue, WA 98007. Internet: http://www.nwcet.org
- University of Washington Computer Science and Engineering Department, AC101 Paul G. Allen Center, Box 352350, 185 Stevens Way, Seattle, WA 98195-2350. Internet: http://www.cs.washington.edu/WhyCSE
- National Center for Women and Information Technology, University of Colorado, Campus Box 322 UCB, Boulder, CO 80309-0322. Internet: http://www.ncwit.org