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. (1)
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 to perform 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. (2)
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. (4)
Computer systems software engineers coordinate the construction and maintenance of a companys computer systems and plan their future growth. Working with a company, they coordinate each departments computer needsXordering, inventory, billing, and payroll record keeping, for exampleXand make suggestions about its technical direction. They also might set up the companys intranetsXnetworks that link computers within the organization and ease communication among the various departments. (3)
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. (3)
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 customers computer remotely to identify and correct developing problems. (4)
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 creation 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. (2)
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.
Training, Other Qualifications, and Advancement
Most employers prefer to hire persons who have at least a bachelors 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 bachelors 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. (1)
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 bachelors 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. (3)
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 bachelors 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 commerceXdoing business on the InternetXhave 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: (4)
Navigational, measuring, electromedical, and control instruments manufacturing75,890
Computer systems design and related services71,890
Architectural, engineering, and related services70,090
Management of companies and enterprises67,260
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:
Chart 2 (2)
Scientific research and development services$82,270
Navigational, measuring, electromedical, and control instruments manufacturing76,200
Computer systems design and related services73,460
Wired telecommunications carriers68,510
According to the National Association of Colleges and Employers, starting salary offers for graduates with a bachelors degree in computer engineering averaged $51,343 in 2003, and those with a masters degree averaged $64,200. Starting salary offers for graduates with a bachelors 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. (4)
,XAssociation for Computing Machinery (ACM), 1515 Broadway, New York, NY 10036. Internet: http://www.acm.org (1)
,XInstitute of Electronics and Electrical Engineers Computer Society, Headquarters Office, 1730 Massachusetts Ave. NW, Washington, DC 20036-1992. Internet: http://www.computer.org (2)
,XNational Workforce Center for Emerging Technologies, 3000 Landerholm Circle SE, Bellevue, WA 98007. Internet: http://www.nwcet.org (3)
,X Bureau of Labor Statistics, U.S. Department of Labor, Occupational Outlook Handbook, 2004-05 Edition, Computer Software Engineers, on the Internet at http://www.bls.gov/oco/ocos267.htm (visited September 15, 2004) (4)
(2) Charts used from http://www.computer.org
Interview Questions from Milwaukee School of Engineering
Letter to University of Buffalo New York for Course Descriptions