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 the systems that enable computers to perform their many applications.
Software engineers are involved in the design and development of many types of software, including software for operating systems and network distribution, and software for 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 desired function. Software engineers must possess strong programming skills, but are often more concerned with developing algorithms and analyzing and solving programming problems than with actually writing code.
Typically Software engineers, working in applications or systems development, analyze first the needs of the user. They then design, construct, test, and maintain computer applications software or systems to meet these needs.
Computer Applications Software Engineers
Computer applications software engineers analyze user needs and design, construct, and maintain general computer applications software or specialized utility programs. These engineers 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
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 needs - such as ordering, inventory, billing, and payroll recordkeeping - and make suggestions about the appropriate technical direction. The engineers also might set up the company's intranets, namely the networks 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 engineers may be members of the marketing or sales staff, serving as the primary technical resource for sales workers and customers. They may also be involved with technical support to the company's customers. 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. One of the major responsibilities of systems software engineers is ensuring a proper level of security across the systems they are configuring.
In 2007 computer software engineers held about 857,000 jobs in the United States. Approximately 507,000 were computer applications software engineers, and about 350,000 were computer systems software engineers. Although they are employed in most industries, the largest concentration of computer software engineers - more than 29 percent - was in computer systems design and related services. Many computer software engineers also worked for establishments in other industries, such as software publishers, government agencies, manufacturers of computers and related electronic equipment, financial institutions, insurance providers, and management of companies and enterprises.
An increasing number of computer software engineers work as independent consultants on a temporary or contract basis. Many of these engineers are self-employed. About 17,000 computer software engineers are self-employed.
In 2007, starting salaries for software engineers in software development ranged from $66,500 to $99,750. For network engineers, starting salaries ranged from $65,750 to $90,250.
Career Path Forecast
Computer Software Engineer is projected by the US Bureau of Labor Statistics to be one of the fastest-growing occupations in the United States through 2016. 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 college graduates with at least a bachelor's degree, 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.
New growth areas will continue to arise from rapidly evolving technologies. The increasing uses of the Internet, the proliferation of websites, and mobile technology such as the wireless Internet and handheld devices have created a demand for a wide variety of new products. Information security concerns will present 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 and intrusion.