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?
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
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.
Some of the earliest individual contributors to software engineering include:
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.
From NATO's Software Engineering report in 1968:
This implies that there were software professionals beforehand, but the job title didn't appear until the late 1960's.
I'd say Herman Hollerith pretty much had "formalized specifications and methods" down in his design for a census tabulating machine back in 1889. His specs are pretty typical for engineer specs from that era. While there's a lot of hardware involved, you can take the software portion of his specs and write a decent tabulation program using modern tools.
I would argue that there isn't a first software engineer because I don't think that Software development is an engineering discipline to begin with.
The American Engineers' Council for Professional Development (ECPD, the predecessor of ABET) has defined "engineering" as:
The bold part of the quote above is where is my emphasis.
Engineers work with materials that follow rules of physics which are deterministic, there are not any materials in software development, and software, especially concurrent software is not deterministic by nature.
Material based engineering can prove the behaviors of a design under any conditions because those conditions are finite because of the laws of physics.
Even with critical systems software that run nuclear power plants, medical equipment and other control systems, there is no way to prove that the absence of bugs in a system because the behavior of the inputs of a system are not finite and thus the behavior of the system is not deterministic.