Computer Software Engineers
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 into 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.
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.
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 the 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. These workers 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. Since the selling of complex computer systems often requires substantial customization for the purchaser's organization, software engineers help to explain the requirements necessary for installing and operating the new system in the purchaser's computing environment. In addition, systems software engineers are responsible for ensuring security across the systems they are configuring.
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 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.
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. The usual degree concentration for applications software engineers is computer science or software engineering; for systems software engineers, it is 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 employees in intensive, company-based programs. In many firms, new hires are mentored, and their mentors have an input into the performance evaluations of these new employees.
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. Nonetheless, most training authorities feel that program certification alone is not sufficient for the majority of software engineering jobs.
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, they may become 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. For example, computer software engineers interested in working for a bank should have some expertise in finance as they integrate new technologies into the computer system of the bank. To help them keep up with the changing technology, continuing education and professional development seminars are offered by employers, software vendors, colleges and universities, private training institutions, and professional computing societies.
Computer software engineers held about 800,000 jobs in 2004. Approximately 460,000 were computer applications software engineers, and around 340,000 were computer systems software engineers. Although they are employed in most industries, the largest concentration of computer software engineersalmost 30 percentare in computer systems design and related services. Many computer software engineers also work for establishments in other industries, such as software publishers, government agencies, manufacturers of computers and related electronic equipment, and management of companies and enterprises.
Employers of computer software engineers range from startup companies to established industry leaders. The proliferation of Internet, e-mail, and other communications systems is expanding electronics to engineering firms that are traditionally associated with unrelated disciplines. Engineering firms specializing in building bridges and powerplants, 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 engineers 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. About 23,000 computer software engineers were self-employed in 2004.
Computer software engineers are projected to be one of the fastest-growing occupations from 2004 to 2014. Rapid employment growth in the computer systems design and related services industry, which employs the greatest number of computer software engineers, should result in very good 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. With the software industry beginning to mature, however, and with routine software engineering work being increasingly outsourced overseas, job growth will not be as rapid as during the previous decade.
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. 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 complicated 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 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 integrate them into older systems.
As with other information technology jobs, employment growth of computer software engineers may be tempered somewhat as more software development is contracted out abroad. Firms may look to cut costs by shifting operations to lower wage foreign countries with highly educated workers who have strong technical skills. At the same time, jobs in software engineering are less prone to being sent abroad compared with jobs in other computer specialties, because the occupation requires innovation and intense research and development.
Median annual earnings of computer applications software engineers who worked full time in May 2004 were about $74,980. The middle 50 percent earned between $59,130 and $92,130. The lowest 10 percent earned less than $46,520, and the highest 10 percent earned more than $113,830. Median annual earnings in the industries employing the largest numbers of computer applications software engineers in May 2004 were as follows:
Median annual earnings of computer systems software engineers who worked full time in May 2004 were about $79,740. The middle 50 percent earned between $63,150 and $98,220. The lowest 10 percent earned less than $50,420, and the highest 10 percent earned more than $118,350. Median annual earnings in the industries employing the largest numbers of computer systems software engineers in May 2004 are as follows:
According to the National Association of Colleges and Employers, starting salary offers for graduates with a bachelor's degree in computer engineering averaged $52,464 in 2005; offers for those with a master's degree averaged $60,354. Starting salary offers for graduates with a bachelor's degree in computer science averaged $50,820.
According to Robert Half International, starting salaries for software engineers in software development ranged from $63,250 to $92,750 in 2005. For network engineers, starting salaries in 2005 ranged from $61,250 to $88,250.