- 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.
- Computer programmers write programs.
- After computer software engineers and systems analysts design software programs, the programmer converts that design into a logical series of instructions that the computer can follow.
- The programmer codes these instructions in any of a number of programming languages, depending on the need. The most common languages are C++ and Python.
- Computer programmers also update, repair, modify, and expand existing programs.
- Some, especially those working on large projects that involve many programmers, use computer-assisted software engineering (CASE) tools to automate much of the coding process.
- These tools enable a programmer to concentrate on writing the unique parts of a program.
- Programmers working on smaller projects often use “programmer environments,” applications that increase productivity by combining compiling, code walk-through, code generation, test data generation, and debugging functions.
- Programmers also use libraries of basic code that can be modified or customized for a specific application.
- As software design has continued to advance, and some programming functions have become automated, programmers have begun to assume some of the responsibilities that were once performed only by software engineers.
- As a result, some computer programmers now assist software engineers in identifying user needs and designing certain parts of computer programs, as well as other functions.
- Overall, employment of computer software engineers and computer programmers is projected to increase. This will be the result of rapid growth among computer software engineers, as employment of computer programmers is expected to decline.
- Employment of 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.
- Employment of computer programmers is expected to decline slowly.
- Advances in programming languages and tools, the growing ability of users to write and implement their own programs, and the offshore outsourcing of programming jobs will contribute to this decline.
- Because they can transmit their programs digitally, computer programmers can perform their job function from anywhere in the world, allowing companies to employ workers in countries that have lower prevailing wages.
- Computer programmers are at a much higher risk of having their jobs offshored than are workers involved in more complex and sophisticated information technology functions, such as software engineering.
- Much of the work of computer programmers requires little localized or specialized knowledge and can be made routine once knowledge of a particular programming language is mastered.
Other professional workers who deal extensively with computer technology or data include Actuaries, Computer networks, systems and database administrators, Computer Scientists, Computer support specialists and Computer systems analysts, Engineers, Mathematicians, Operation research analysts and Statisticians.
- BS in Computer Science
- BS in Software Engineering
- BS in Mathematics
This career information is drawn from data provided by the U.S. Department of Labor.