The explosive impact of computers and information technology on our everyday lives has generated a need to design and develop new computer software systems and to incorporate new technologies in a rapidly growing range of applications. The tasks performed by workers known as computer software engineers evolve quickly, reflecting new areas of specialization or changes in technology, as well as the preferences and practices of employers. Computer software engineers apply the principles and techniques of computer science, engineering, and mathematical analysis to the design, development, testing, and evaluation of the software and systems that enable computers to perform their many applications. (A separate statement on
computer hardware engineers appears elsewhere in the Handbook.)
Software engineers working in applications or systems development analyze usersí needs and design, construct, test, and maintain computer applications software or systems. Software engineers can be involved in the design and development of many types of software, including software for operating systems and network distribution, and compilers, which convert programs for execution on a computer. In programming, or coding, software engineers instruct a computer, line by line, how toperform a function. They also solve technical problems that arise. Software engineers must possess strong programming skills, but are more concerned with developing algorithms and analyzing and solving programming problems than with actually writing code. (A separate statement on
computer programmers appears elsewhere in the Handbook.)
Computer applications software engineers analyze usersí needs and design, construct, and maintain general computer applications software or specialized utility programs. These workers use different programming languages, depending on the purpose of the program. The programming languages most often used are C, C++, and Java, with Fortran and COBOL used less commonly. Some software engineers develop both packaged systems and systems software or create customized applications.
Computer systems software engineers coordinate the construction and maintenance of a companyís computer systems and plan their future growth. Working with a company, they coordinate each departmentís computer needsordering, inventory, billing, and payroll recordkeeping, for exampleand make suggestions about its technical direction. They also might set up the companyís intranetsnetworks that link computers within the organization and ease communication among the various departments.
Systems software engineers work for companies that configure, implement, and install complete computer systems. They may be members of the marketing or sales staff, serving as the primary technical resource for sales workers and customers. They also may be involved in product sales and in providing their customers with continuing technical support.
Computer software engineers often work as part of a team that designs new hardware, software, and systems. A core team may comprise engineering, marketing, manufacturing, and design people who work together until the product is released.
Computer software engineers normally work in well-lighted and comfortable offices or computer laboratories in which computer equipment is located. Most software engineers work at least 40 hours a week; however, due to the project-oriented nature of the work, they also may have to work evenings or weekends to meet deadlines or solve unexpected technical problems. Like other workers who sit for hours at a computer, typing on a keyboard, software engineers are susceptible to eyestrain, back discomfort, and hand and wrist problems such as carpal tunnel syndrome.
As they strive to improve software for users, many computer software engineers interact with customers and coworkers. Computer software engineers who are employed by software vendors and consulting firms, for example, spend much of their time away from their offices, frequently traveling overnight to meet with customers. They call on customers in businesses ranging from manufacturing plants to financial institutions.
As networks expand, software engineers may be able to use modems, laptops, e-mail, and the Internet to provide more technical support and other services from their main office, connecting to a customerís computer remotely to identify and correct developing problems.
Computer software engineers held about 675,000 jobs in 2002. About 394,000 were computer applications software engineers, and about 281,000 were computer systems software engineers. Although they are employed in most industries, the largest concentration of computer software engineers, about 30 percent, is in computer systems design and related services. Many computer software engineers also work for establishments in other industries, such as government agencies, manufacturers of computers and related electronic equipment, and colleges and universities.
Employers of computer software engineers range from startup companies to established industry leaders. The proliferation of Internet, e-mail, and other communications systems expands electronics to engineering firms traditionally associated with unrelated disciplines. Engineering firms specializing in building bridges and power plants, for example, hire computer software engineers to design and develop new geographic data systems and automated drafting systems. Communications firms need computer software engineers to tap into growth in the personal communications market. Major communications companies have many job openings for both computer software applications and computer systems engineers.
An increasing number of computer software engineers are employed on a temporary or contract basis, with many being self-employed, working independently as consultants. Some consultants work for firms that specialize in developing and maintaining client companiesí Web sites and intranets. Consulting opportunities for software engineers should grow as businesses need help managing, upgrading, and customizing increasingly complex computer systems. About 21,000 computer software engineers were self-employed in 2002.
Most employers prefer to hire persons who have at least a bachelorís degree and broad knowledge of, and experience with, a variety of computer systems and technologies. Usual degree concentrations for applications software engineers are computer science or software engineering; for systems software engineers, usual concentrations are computer science or computer information systems. Graduate degrees are preferred for some of the more complex jobs.
Academic programs in software engineering emphasize software and may be offered as a degree option or in conjunction with computer science degrees. Increasing emphasis on computer security suggests that software engineers with advanced degrees that include mathematics and systems design will be sought after by software developers, government agencies, and consulting firms specializing in information assurance and security. Students seeking software engineering jobs enhance their employment opportunities by participating in internship or co-op programs offered through their schools. These experiences provide the students with broad knowledge and experience, making them more attractive candidates to employers. Inexperienced college graduates may be hired by large computer and consulting firms that train new hires in intensive, company-based programs. In many firms, new employees are mentored, and their mentors have an input into the new hiresí evaluations.
For systems software engineering jobs that require workers who have a college degree, a bachelorís degree in computer science or computer information systems is typical. For systems engineering jobs that place less emphasis on workers having a computer-related degree, computer training programs leading to certification are offered by systems software vendors, including Microsoft, Novell, and Oracle. These programs usually last from 1 to 4 weeks, but the worker is not required to attend classes in order to sit for a certification exam; several study guides also are available to help prepare for the exams. Nonetheless, many training authorities feel that program certification alone is not sufficient for most software engineering jobs.
Professional certification is now offered by the Institute of Electrical and Electronics Engineers (IEEE) Computer Society. To be classified as a Certified Software Development Professional, individuals need a bachelorís degree and work experience that demonstrates that they have mastered a relevant body of knowledge, and must pass a written exam.
Persons interested in jobs as computer software engineers must have strong problem-solving and analytical skills. They also must be able to communicate effectively with team members, other staff, and the customers they meet. Because they often deal with a number of tasks simultaneously, they must be able to concentrate and pay close attention to detail.
As is the case with most occupations, advancement opportunities for computer software engineers increase with experience. Entry-level computer software engineers are likely to test and verify ongoing designs. As they become more experienced, computer software engineers may be involved in designing and developing software. Eventually, they may advance to become a project manager, manager of information systems, or chief information officer. Some computer software engineers with several years of experience or expertise find lucrative opportunities working as systems designers or independent consultants or starting their own computer consulting firms.
As technological advances in the computer field continue, employers demand new skills. Computer software engineers must continually strive to acquire such skills if they wish to remain in this extremely dynamic field. To help them keep up with the changing technology, continuing education and professional development seminars are offered by employers and software vendors, colleges and universities, private training institutions, and professional computing societies.
Computer software engineers are projected to be one of the fastest growing occupations from 2002 to 2012.
Rapid employment growth in the computer systems design and related services industry, which employs
the greatest number of computer software engineers, should result in highly favorable opportunities
for those college graduates with at least a bachelorís degree in computer engineering or computer
science and practical experience working with computers. Employers will continue to seek computer
professionals with strong programming, systems analysis, interpersonal, and business skills.
Despite the recent downturn in information technology, employment of computer software engineers
is expected to increase much faster than the average for all occupations, as businesses and
other organizations adopt and integrate new technologies and seek to maximize the efficiency of their computer systems.
Job growth will not be as rapid as during the previous decade however, as the software industry begins to
mature and as routine software engineering work is increasingly outsourced overseas.
Competition among businesses will continue to create an incentive for increasingly sophisticated
technological innovations, and organizations will need more computer software engineers to implement
these changes. In addition to jobs created through employment growth, many job openings will result
annually from the need to replace workers who move into managerial positions, transfer to other
occupations, or leave the labor force.
Demand for computer software engineers will increase as computer networking continues
to grow. For example, the expanding integration of Internet technologies and the explosive growth in
electronic commercedoing business on the Internethave resulted in rising demand for computer
software engineers who can develop Internet, intranet, and World Wide Web applications. Likewise,
expanding electronic data-processing systems in business, telecommunications, government, and other
settings continue to become more sophisticated and complex. Growing numbers of systems software
engineers will be needed to implement, safeguard, and update systems and resolve problems.
Consulting opportunities for computer software engineers also should continue to grow as
businesses seek help to manage, upgrade, and customize their increasingly complex computer systems.
New growth areas will continue to arise from rapidly evolving technologies. The increasing uses of the Internet,
the proliferation of Web sites, and ďmobileĒ technology such as the wireless Internet have created a demand
for a wide variety of new products. As individuals and businesses rely more on hand-held
computers and wireless networks, it will be necessary to integrate current computer systems
with this new, more mobile technology. Also, information security concerns have given rise
to new software needs. Concerns over ďcyber securityĒ should result in businesses and government
continuing to invest heavily in security software that protects their networks and vital electronic
infrastructure from attack. The expansion of this technology in the next 10 years will lead to an
increased need for computer engineers to design and develop the software and systems to run these
new applications and that will allow them to be integrated into older systems.
As with other information technology jobs, employment growth of computer software engineers may
be tempered somewhat by an increase in contracting out of software development abroad. Firms may
look to cut costs by shifting operations to foreign countries with highly educated workers who
have strong technical skills.
Median annual earnings of computer applications software engineers who worked full time in 2002 were about $70,900. The middle 50 percent earned between $55,510 and $88,660. The lowest 10 percent earned less than $44,830, and the highest 10 percent earned more than $109,800. Median annual earnings in the industries employing the largest numbers of computer applications software engineers in 2002 were:
Navigational, measuring, electromedical, and control instruments manufacturing
Computer systems design and related services
Architectural, engineering, and related services
Management of companies and enterprises
Median annual earnings of computer systems software engineers who worked full time in 2002 were about $74,040. The middle 50 percent earned between $58,500 and $91,160. The lowest 10 percent earned less than $45,890, and the highest 10 percent earned more than $111,600. Median annual earnings in the industries employing the largest numbers of computer systems software engineers in 2002 are shown below:
Scientific research and development services
Navigational, measuring, electromedical, and control instruments manufacturing
Computer systems design and related services
Wired telecommunications carriers
According to the National Association of Colleges and Employers, starting salary offers for graduates with a bachelorís degree in computer engineering averaged $51,343 in 2003, and those with a masterís degree averaged $64,200. Starting salary offers for graduates with a bachelorís degree in computer science averaged $47,109.
According to Robert Half International, starting salaries for software engineers in software development ranged from $64,250 to $97,000 in 2003.
In addition to typical benefits, computer software engineers may be provided with profit sharing, stock options, and a company car with a mileage allowance.
Bureau of Labor Statistics, U.S. Department of Labor, Occupational Outlook Handbook, 2004-05 Edition,
Computer Software Engineers, on the Internet at
(visited July 09, 2004).