Computer Software Engineer
Apply the theories and principles of computer science and mathematical analysis to create, test, and evaluate the software applications and systems that make computers work.
Computer software engineers design and develop software. They apply the theories and principles of computer science and mathematical analysis to create, test, and evaluate the software applications and systems that make computers work. The tasks performed by these workers evolve quickly, reflecting changes in technology and new areas of specialization, as well as the changing practices of employers.
Software engineers design and develop many types of software, including computer games, business applications, operating systems, network control systems, and middleware. They must be experts in the theory of computing systems, the structure of software, and the nature and limitations of hardware to ensure that the underlying systems will work properly.
Computer software engineers begin by analyzing users' needs, and then design, test, and develop software to meet those needs. During this process they create flowcharts, diagrams, and other documentation, and may also create the detailed sets of instructions, called algorithms, that actually tell the computer what to do. They also may be responsible for converting these instructions into a computer language, a process called programming or coding, but this usually is the responsibility of computer programmers.
Computer software engineers can generally be divided into two categories: applications engineers and systems engineers. Computer applications software engineers analyze end users' needs and design, construct, deploy, and maintain general computer applications software or specialized utility programs. These workers use different programming languages, depending on the purpose of the program and the environment in which the program runs. The programming languages most often used are C, C++, Java, and Python. Some software engineers develop packaged computer applications, but most create or adapt customized applications for business and other organizations. Some of these workers also develop databases.
Computer systems software engineers coordinate the construction, maintenance, and expansion of an organization's computer systems. Working with the organization, they coordinate each department's computer needs—ordering, inventory, billing, and payroll recordkeeping, for example—and make suggestions about its technical direction. They also might set up the organization's intranets—networks that link computers within the organization and ease communication among various departments. Often, they are also responsible for the design and implementation of system security and data assurance.
Systems software engineers also work for companies that configure, implement, and install the computer systems of other organizations. These workers may be members of the marketing or sales staff, serving as the primary technical resource for sales workers, or providing logistical and technical support. Since the selling of complex computer systems often requires substantial customization to meet the needs of the purchaser, software engineers help to identify and explain needed changes. In addition, systems software engineers are responsible for ensuring security across the systems they are configuring.
Work environment. Computer software engineers normally work in clean, comfortable offices or in laboratories in which computer equipment is located. Software engineers who work for software vendors and consulting firms frequently travel to meet with customers. Telecommuting is becoming more common as technological advances allow more work to be done from remote locations.
Most software engineers work 40 hours a week, but about 15 percent of software engineers 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, engineers 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 software engineering jobs, although a master’s degree is preferred for some positions. 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 software engineering positions, most employers prefer applicants who have at least a bachelor's degree and broad knowledge of, and experience with, a variety of computer systems and technologies. The usual college majors for applications software engineers are computer science, software engineering, or mathematics. Systems software engineers often study computer science or computer information systems. Graduate degrees are preferred for some of the more complex jobs.
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 software engineering 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. Computer software engineers also need skills related to the industry in which they work. Engineers working for a bank, for example, should have some expertise in finance so that they understand banks' computing needs.
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 software engineers must have strong problem-solving and analytical skills. Ingenuity and creativity are particularly important in order to design new, functional software programs. The ability to work with abstract concepts and to do technical analysis is especially important for systems engineers because they work with the software that controls the computer's operation. Engineers 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. Advancement opportunities for computer software engineers increase with experience. Eventually, they may become a project manager, manager of information systems, or chief information officer, especially if they have business skills and training. Some computer software engineers with several years of experience or expertise can find lucrative opportunities working as systems designers or independent consultants, particularly in specialized fields such as business-to-business transactions or security and data assurance.
Computer software engineers held about 909,600 jobs in 2008. Approximately 514,800 were computer applications software engineers and about 394,800 were computer systems software engineers. Although computer software engineers 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 32,800 computer software engineers were self-employed in 2008.
Overall, employment of computer software engineers is projected to increase much faster than the average for all occupations. Job prospects should be best for those with a bachelor's degree and relevant experience.
Employment change. Employment of computer software engineers is expected to increase by 32 percent from 2008-2018, which is much faster than the average for all occupations. In addition, this occupation will see a large number of new jobs, with more than 295,000 created between 2008 and 2018. Demand for computer software engineers will increase as computer networking continues to grow. For example, expanding Internet technologies have spurred demand for computer software engineers who can develop Internet, intranet, and World Wide Web applications. Likewise, electronic data-processing systems in business, telecommunications, healthcare, government, and other settings continue to become more sophisticated and complex. Implementing, safeguarding, and updating computer systems and resolving problems will fuel the demand for growing numbers of systems software engineers.
New growth areas will also 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 more software is offered over the Internet, and as businesses demand customized software to meet their specific needs, applications and systems software engineers will be needed in greater numbers. In addition, the growing use of handheld computers will create demand for new mobile applications and software systems. As these devices become a larger part of the business environment, it will be necessary to integrate current computer systems with this new, more mobile technology.
In addition, information security concerns have given rise to new software needs. Concerns over “cyber security” should result in the continued investment in software that protects computer networks and electronic infrastructure. The expansion of this technology over the next 10 years will lead to an increased need for software engineers to design and develop secure applications and systems, and to integrate them into older systems.
As with other information technology jobs, offshore outsourcing may temper employment growth of computer software engineers. Firms may look to cut costs by shifting operations to foreign countries with lower prevailing wages and highly educated workers. Jobs in software engineering are less prone to being offshored than are jobs in computer programming, however, because software engineering requires innovation and intense research and development.
Job prospects. As a result of rapid employment growth over the 2008 to 2018 decade, job prospects for computer software engineers should be excellent. Those with practical experience and at least a bachelor's degree in a computer-related field should have the best opportunities. Employers will continue to seek computer professionals with strong programming, systems analysis, interpersonal, and business skills. In addition to jobs created through employment growth, many job openings will result from the need to replace workers who move into managerial positions, transfer to other occupations, or leave the labor force. Consulting opportunities for computer software engineers also should continue to grow as businesses seek help to manage, upgrade, and customize their increasingly complicated computer systems.
In May 2008, median annual wages of wage-and-salary computer applications software engineers were $85,430. The middle 50 percent earned between $67,790 and $104,870. The lowest 10 percent earned less than $53,720, and the highest 10 percent earned more than $128,870. Median annual wages in the industries employing the largest numbers of computer applications software engineers in May 2008 were as follows:
|Professional and commercial equipment and supplies merchant wholesalers||$93,740|
|Management of companies and enterprises||85,990|
|Computer systems design and related services||84,610|
In May 2008, median annual wages of wage-and-salary computer systems software engineers were $92,430. The middle 50 percent earned between $73,200 and $113,960. The lowest 10 percent earned less than $57,810, and the highest 10 percent earned more than $135,780. Median annual wages in the industries employing the largest numbers of computer systems software engineers in May 2008 were as follows:
|Scientific research and development services||$102,090|
|Computer and peripheral equipment manufacturing||101,270|
|Navigational measuring electromedical and control instruments manufacturing||91,720|
|Computer systems design and related services||91,610|
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
- Institute of Electrical and Electronics Engineers Computer Society, Headquarters Office, 2001 L St. NW., Suite 700 Washington, DC 20036-4910. Internet: http://www.computer.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