facebook twitter mail share

Software Engineering


    
          Software Engineering

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.

Software engineers

  • 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.

Specializations

  • 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:
        • C
        • C++
        • Java
        • Python
    • 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.

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

Coursework to consider
  • Pre-algebra
  • Geometry
  • Advanced algebra
  • Engineering fundamentals
  • Computer applications
  • Chemistry
  • Calculus
  • Trigonometry
  • Statistics
  • Physics
  • Psychology
  • Robotics
  • Programming
  • Networking
  • Computer architecture
  • Fundamentals of hardware
  • Software system design
  • Web security and privacy
  • Business applications
  • Usability
  • Economics 
Suggested extracurricular activities
  • Competitions
  • Summer programs
  • Afterschool programs
  • Clubs
  • Internships
  • Online puzzles and games
  • Online courses
  • Maker Faires
  • Design projects
Local programs offered by
  • Science centers and museums
  • Professional societies like IEEE
  • Universities

Important Skills

  • 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.

Engineering Majors

More than 25 major specialties are recognized in the fields of engineering and engineering technology. Select a degree field from the list below to find out more:

 

Get Involved!

Find opportunities for pre- university, undergraduate, and graduate students all over the world.

getinvolved

more

 

Insights from Experts

Experts tackle some of the most important questions for students who might be interested in pursuing an education or career in engineering.

more

 

Life of an Engineer

Find out what it takes to be a successful engineering student and professional engineer. A series of profiles will help you understand the challenges and rewards you might face.

more

 
Quickstart: we have resources for Students, Parents, Teachers, and Guidance Counselors