|
Go Back
Career Descriptions and Job Outlook
Computer Programmers
Significant Points
Nearly half of all computer programmers held a bachelor’s degree in 2002;
about 1 in 5 held a graduate degree.
Employment is expected to grow much more slowly than that of other computer
specialists.
Prospects should be best for college graduates with knowledge of a variety of
programming languages and tools; those with less formal education or its
equivalent in work experience should face strong competition for programming
jobs.
Nature of the Work
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 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. 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 do—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 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. 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.
Many programmers update, repair, modify, and expand 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 that others can understand the
program. 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. Programmers also
utilize libraries of pre-written code, which can then be modified or customized
for a specific application. 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. This process is called testing and debugging.
Programmers may continue to fix these problems throughout the life of a program.
Programmers working in a mainframe environment, which involves a large
centralized computer, may prepare instructions for a computer operator who will
run the program. They also may contribute to a manual for persons who will be
using the program.
Programmers often are grouped into two broad types—applications 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. Systems programmers, on the other hand, write programs to
maintain and control computer systems software, such as operating systems,
networked systems, and database systems. 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. Because of their knowledge of the entire computer system, systems
programmers often help applications programmers to determine the source of
problems that may occur with their programs.
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 and financial planning. 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. 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 one that
is based primarily on personal computers (PCs) has blurred the once rigid
distinction between the programmer and the user. Increasingly, adept end-users
are taking over many of the tasks previously performed by programmers. For
example, the growing use of packaged software, such as spreadsheet and database
management software packages, allows users to write simple programs to access
data and perform calculations.
Working Conditions
Programmers generally work in offices in comfortable surroundings. Many
programmers may work long hours or weekends to meet deadlines or fix critical
problems that occur during off hours. Given the technology available,
telecommuting is becoming common for a wide range of computer professionals,
including computer programmers. As computer networks expand, more programmers
are able to make corrections or fix problems remotely by using modems, e-mail,
and the Internet to connect to a customer’s computer.
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.
Employment
Computer programmers held about 499,000 jobs in 2002. Programmers are
employed in almost every industry, but the largest concentrations are in
computer systems design and related services and in software publishers, which
includes firms that write and sell software. Large numbers of programmers also
can be found in management of companies and enterprises, telecommunications
companies, manufacturers of computer and electronic equipment, financial
institutions, insurance carriers, educational institutions, and government
agencies.
A large number of computer programmers are employed on a temporary or
contract basis or work as independent consultants, as companies demand expertise
with new programming languages or 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 require the services of several programmers only to write and debug the
software necessary to get a new customer resource 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 18,000 self-employed computer programmers in 2002.
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 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. Graduate degrees in related fields 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. 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. Additionally, employers are seeking persons familiar with fourth- and
fifth-generation languages that involve graphic user interface (GUI) and systems
programming. Employers also prefer applicants who have general business skills
and experience related to the operations of the firm. 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. This
includes being able to configure an operating system to work with different
types of hardware and having the skills needed to adapt the operating system to
best meet the needs of a particular organization. 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. Ingenuity, creativity, and
imagination also are particularly important when programmers design solutions
and test their work for potential failures. 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. Because programmers are expected to work in teams and interact
directly with users, employers want programmers who are able to communicate with
non-technical personnel.
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. Either way, beginning programmers generally must work
under close supervision. 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. 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 on multimedia or Internet technology, for example. 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. In addition to language-specific
certificates that a programmer can obtain, product vendors or software firms
also offer certification and may require professionals who work with their
products to be certified. Voluntary certification also is available through
other various organizations.
Job Outlook
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 tools—including 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.
Earnings
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.
Related Occupations
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.
Sources of Additional 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 (ACM), 1515 Broadway, New York, NY 10036.
Internet: http://www.acm.org
Institute of Electrical and Electronics Engineers Computer Society,
Headquarters Office, 1730 Massachusetts Ave. NW., Washington, DC 20036-1992.
Internet: http://www.computer.org
National Workforce Center for Emerging Technologies, 3000 Landerholm Circle
SE., Bellevue, WA 98007. Internet: http://www.nwcet.org
|
|