History of Software Engineering – Who Was the First Software Engineer?

historyterminology

It's fairly well known who the first programmer was but who was or were the first software engineer(s)? By software engineer I mean someone who uses formalized specifications and methods to deliver software not just a batch programming job. When was the term first used?

Best Answer

The first discussions of software engineering began in the mid-1950s, which places it around the same time as the SHARE user group previously mentioned in a now-deleted answer.

The widely accepted beginning to software engineering as a profession was at the NATO Science Committee conference in 1968 in Garmisch, Germany. The conference report (PDF) is often considered to be the very first definition of software engineering. A second conference, held in 1969 in Rome, Italy, was also sponsored by the NATO Science Committee and continued the work of the first (conference report PDF). You could define the attendees of this conference as the first software engineers.

However, there is some evidence that the first person to coin the term "software engineering" was Margaret Hamilton. She started to use the term at MIT during the early days of creating software for the Apollo missions.

Some of the earliest contributors to software engineering include:

  • Edsger W. Dijkstra, creator of structured programming (1960s) in addition to numerous contributions to mathematics and computer science
  • C.A.R. Hoare, creator or Hoare logic (1969) and Communicating Sequential Processes (1978) in addition to the creation of Quicksort
  • Winston W. Royce, author of the paper that formally described the Waterfall model and how it was inappropriate for effectively building large-scale software systems (1970)
  • David Parnas, credited with creating information hiding (1972) as well as a strong promoter of professionalism and ethics in software engineering
  • Fred Brooks, author of The Mythical Man-Month (1975) and other essays about software project management
  • Michael A. Jackson, creator of Jackson Structured Programming (1970s) and Jackson System Development (1980s)
  • Edward Yourdon, worked on the structured analysis techniques (1970s) and the Yourdon/Whitehead (1980s) and Coad/Yourdon (1990s) object-oriented analysis/design methodologies
  • Victor Basili, author of numerous reports and papers on the software development process and often attributed to starting empirical software engineering, specifically the goal/question/metric approach, the Quality Improvement Paradigm, and the Experience Factory while working at NASA's Software Engineering Laboratory from the mid 1970s through early 2000s
  • Barry Boehm, creator of COCOMO (1981), the Spiral Model (1986) COCOMO II (2000), the Spiral Model, and author of numerous papers and books about software development process, software metrics, and software cost models (most notably Software Engineering Economics, 1981)

Searching for "father of software engineering" tends to turn up many different names, since there were many people doing both academic research, analysis of software projects, and applied software engineering work at universities and companies around the world. However, David Parnas (professionalism/ethics), Fred Brooks (software project management), Barry Boehm (metrics and cost), and Victor Basili (empirical software engineering) tend to come up pretty frequently in their respective fields.

Something else to consider is that software engineering is a team activity. Many of the people that I named above were leaders of teams or organizations, their work was supported by any number of people "in the trenches" who might never get credit for being a part of a project or research effort that today is viewed as the beginning of software engineering.