Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question
4  
So... software programmers/developers/architects can't use formal specifications and methods? –  FrustratedWithFormsDesigner May 23 '12 at 17:43
3  
Is it well know who the first programmer was? I would guess "Ada Lovelace" but that may be debatable as Babbage's computational engine was only theoretical (I think) while she lived. –  Loki Astari May 23 '12 at 17:46
    
@Loki Ada was the first programmer, we already decided that, with Archimedes also being a solid candidate ;) - Also, yes the Analytical Engine wasn't build in either Ada's or Babbage's lifetime. –  Yannis Rizos May 23 '12 at 17:59
add comment

4 Answers

up vote 20 down vote accepted

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.

Some of the earliest individual 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.

share|improve this answer
    
"The widely accepted beginning to software engineering as a profession was at the NATO Science Committee conference in 1968 in Garmisch, Germany." though the committee used the term as a straw man, as noted in the extract quoted in programmers.stackexchange.com/a/149886/4051. –  user4051 May 23 '12 at 21:40
    
@GrahamLee That is true, however their work led to software engineering as not only a profession, but by the late 1990s, an academic discipline in its own right. Straw men typically get built up and (no pun intended) fleshed out, and that's exactly what happened. –  Thomas Owens May 23 '12 at 21:55
add comment

From NATO's Software Engineering report in 1968:

In the Autumn of 1967 the Science Committee established a Study Group on Computer Science. ... In late 1967 the Study Group recommended the holding of a working conference on Software Engineering. The phrase 'software engineering' was deliberately chosen as being provocative, in implying the need for software manufacture to be based on the types of theoretical foundations and practical disciplines, that are traditional in the established branches of engineering.

This implies that there were software professionals beforehand, but the job title didn't appear until the late 1960's.

share|improve this answer
add comment

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.

share|improve this answer
add comment

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 creative application of scientific principles to design or develop structures, machines, apparatus, or manufacturing processes, or works utilizing them singly or in combination; or to construct or operate the same with full cognizance of their design; or to forecast their behavior under specific operating conditions; all as respects an intended function, economics of operation and safety to life and property.

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.

Here is a recent editorial piece that kind of makes the point that Software Engineers don't exist because they can't be defined.

share|improve this answer
    
Engineering follow deterministic and linear rules. Good point made. So can software engineering be called Software Modeling since modeling in economics is naturally non-linear and complex (though theoretically a lot of linear models are taught in economics) –  Ubermensch May 24 '12 at 12:06
    
-1: I don't entirely disagree with your first sentence, but the argument is full of holes. Claiming software is not deterministic, if software isn't, what is? Full of bugs - just because a majority of us cannot get it right does not mean it is not possible. Buildings fell down and killed people in the city I live because a "Civil Engineer" got the design wrong, and another because the building was not constructed to the design, just one recent example of professional engineers being human. –  mattnz Jun 27 '12 at 22:41
    
I said physics is deterministic, software doesn't follow the rules of physics like material based engineering does, humans don't alter the rules of physics, sad you down voted me because a lack of reading comprehension. A metal at a given specification that tests to that specification is going to be deterministically able to perform to those specifications, no software, especially concurrent software system can claim that. –  Jarrod Roberson Jun 28 '12 at 0:17
    
@Jarrod -1: In software engineering, software can be also written to specification and tested to prove that it conforms. It is a logical fallacy to believe software cannot perform to specifications. See IEEE 830-1998 and regarding the definition see SEVOCAB pascal.computer.org/sev_display/index.action. –  user42242 Dec 30 '12 at 1:24
    
more lack of reading comprehension skills ... you are posting points that prove my point. Concurrent software is non-deterministic, distributed computing even more so; if you dont' understand that, you are part of the problem. –  Jarrod Roberson Dec 30 '12 at 5:49
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.