Software engineers design, develop, and test many types of software, including software for operating systems, network distribution, and compilers, which convert programs for faster processing. In programming or coding, sofware engineers instruct a computer, line by line, how to perform a function.
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, and needs of consumers.
Software
engineers design and develop many types of software, including computer
games, apps, and other business applications. 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. They will work with hardward developers to improve the functionality of software based tools and devices...pushing the limits of both software and hardware as products evolve and technology advances.
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 tell the computer what to do. They also may be responsible
for converting these instructions into a computer language (programming or coding) but this may fall to others on a team to execute with specialised programming experience.
Computer
software engineers can generally be divided into two categories:
applications software developers and systems software developers. Applications software developers design computer applications, such as word processors and games, for consumers. Some applications software developers create complex databases for government or organizations. They will also develop resources and programs that are used over the internet or perhaps within a company's intranet. This might include personnel file management systems, accounting, reporting, and medical record-keeping. Systems software developers create the systems that keep computers functioning properly. These could be overarching, such as operating systems for computers that the general public buys directly, or systems built to solve a problem for a government or organization. Often, systems software developers also build the system's interface, which is what allows users to interact with the computer. Systems software developers create the operating systems that control most of the consumer electronics in use today, including those used by cell phones and cars.
Computer systems software developers 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 developers 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. This approach
yields more reliable and consistent programs and increases programmers'
productivity by eliminating some routine steps.
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. The job titles in these fields are morphing as skills and software develop.
Note: Some resources in this section are provided by the US Department
of Labor, Bureau of Labor Statistics.
|
|