What Do Software Engineers Do? Would you like the opportunity to code software that creates virtual reality for a new generation of users or new types of artificial intelligence that can solve the world’s most complex problems?
Do you dream about developing cutting-edge computer programs or mobile device apps used in business, industry, research, and by everyday consumers?
Are you excited by the possibility of performing tasks that evolve quickly, reflecting changes in technology and new areas of specialization?
The field of software engineering offers unique opportunities to make a real difference by being the creative minds behind computer programs, developing the applications that allow people to do specific tasks on a computer or another device, and/or developing the underlying systems that run the devices or that control network.
- Design and develop many types of software, including: computer games, business applications, operating systems, and network control systems.
- Create, test, and evaluate the software applications and systems that make computers work.
- Create or adapt customized applications for business and other organizations.
- Analyze users’ needs, and then design, test, and develop software to meet those needs.
- Create flowcharts, diagrams, and other documentation, and may also create the detailed sets of instructions—called algorithms—that tell the computer what to do.
- Convert software programs designed by computer software engineers and systems analysts into a logical series of instructions that the computer can follow.
- Assist software engineers in identifying user needs and designing certain parts of computer programs, as well as other functions.
- Use a number of tools including:
- Computer-assisted software engineering tools to automate much of the coding process and enable a programmer to concentrate on writing the unique parts of a program.
- “Programmer environments,” applications that increase productivity by combining compiling, code walk-through, code generation, test data generation, and debugging functions.
- Libraries of basic code that can be modified or customized for a specific application, yields more reliable and consistent programs, and increases programmers’ productivity by eliminating some routine steps.
- Computer software engineers can generally be divided into two categories:
- Computer applications software engineers:
- Analyze end users’ needs and design, construct, deploy, and maintain general computer applications software or specialized utility programs.
- Use different programming languages, depending on the purpose of the program and the environment in which the program runs, including:
- Computer systems software engineers:
- Coordinate the construction, maintenance, and expansion of an organization’s computer systems.
- Coordinate each department’s computer needs and make suggestions about its technical direction, including: ordering, inventory, billing, and payroll recordkeeping.
- Set up the organization’s intranets—networks that link computers within the organization and ease communication among various departments.
- Design and implement system security and data assurance.
- Work for companies that configure, implement, and install the computer systems of other organizations.
- Identify and explain needed changes for customization of complex computer systems for purchasers.
- Computer applications software engineers:
Famous Software Engineers
- Mary Shaw – worked on software design projects at the architectural level, including Vituvius and Unicon
- Rebecca Jacoby – CIO and Senior Vice President of the IT and Cloud & Systems Management Technology Group at Cisco; manages Cisco’s internal IT department and leads the strategy for how Cisco should offer cloud technology to its customers
- Michal Segalov – software engineer and manager who leads a group of engineers on the Google Play team, focusing on apps and games, Play Store consumer features, and program interfaces for developers; cofounded Mind the Gap, a program that encourages girls to study computer science and math in school
- Marc Lowell Andreessen – American entrepreneur, investor, and software engineer, coauthor of Mosaic, the first widely used Web browser, and cofounder of Netscape Communications Corporation
- Eric Schmidt – in charge of building Google’s corporate infrastructure, formerly led strategic planning at Novell
- Anthony James Barr – American programming language designer, software engineer, and inventor, noted for the Statistical Analysis System
- Linus Benedict Torvalds – Finnish-American software engineer, who was the principal force behind the development of the Linux kernel for operating systems
- Sean Eagan – software engineer at Google, where he worked on Google Talk and Google Maps, former project leader at Pidgin, a popular instant messaging client
Areas of Employment
- Computer systems design and related services
- Software publishers
- Finance and insurance
- Computer and electronic product manufacturing
- Management of companies and enterprises
- Consulting firms
- Local, state, or federal government
Career Guidance Suggestions for Pre-University Students
- Advanced algebra
- Engineering fundamentals
- Computer applications
- Computer architecture
- Fundamentals of hardware
- Software system design
- Web security and privacy
- Business applications
- Summer programs
- Afterschool programs
- Online puzzles and games
- Online courses
- Maker Faires
- Design projects
- Science centers and museums
- Professional societies like IEEE
- Analytical skills: analyze users’ needs and then design software to meet those needs.
- Communication skills: give clear instructions to others working on a project, explain to customers how the software works, and answer any questions that may arise.
- Computer skills: understand computer capabilities and programming languages in order to design effective software.
- Interpersonal skills: must be able to work well with others who contribute to designing, developing, and programming successful software.
- Problem-solving skills: solve problems that arise throughout the design process because developers are in charge of software from beginning to end.
- Creativity: be the creative minds behind new computer software.
- Detail-oriented: work on many parts of an application or system at the same time, and must therefore be able to concentrate and pay attention to detail.
Links and Resources
- Association for Computing Machinery: the world’s largest educational and scientific computing society focused on advancing computing as a science and a profession.
- American Association for Artificial Intelligence: a nonprofit scientific society devoted to advancing the scientific understanding of the mechanisms underlying thought and intelligent behavior and their embodiment in machines.
- Association for Women in Computing: one of the first professional organizations for women in computing focused on promoting the advancement of women in the computing professions.
- Computing Research Association: focus is to enhance innovation by joining with industry, government, and academia to strengthen research and advanced education in computing.
- Institution of Engineering and Technology: inspires, informs, and influences the global engineering community, supporting technology innovation to meet the needs of society.
- IEEE Computer Society: the world’s leading membership organization dedicated to computer science and technology; the trusted information, networking, and career-development source for a global community of technology leaders.