Programmable electronic computers emerged in the late 1940s. Just twenty years later, amid ubiquitous project failures, a 'software crisis' was identified. In 1967 the NATO Science Committee sponsored an international conference. The conference title itself—'Software Engineering'—carried an admonition: software development lacked essential theoretical foundations and practical disciplines of the kinds that had brought success in established branches of engineering.
The conference reports [1,2] show that among much—illuminating and sometimes brilliant—discussion of software development itself, the admonition of the conference title was largely unheard. Doug McIlroy pleaded for an industry of software components to emulate the availability of physical components. Andy Kinslow begged for fewer innovations and more progress towards normal designs: "I would like, just once," he said, "to try an evolutionary step instead of a confounded revolutionary one." And similar hints came from a few other participants. But no-one had been invited from the established engineering branches that the conference was intended to emulate. A sceptic might have asked: "If software engineers need to emulate structural engineers, why don't they invite them to a joint conference?"
A narrow focus on software development can be broadened by thoughtful reading. A wonderful book—a recommendation I owe to Tom Maibaum—is What Engineers Know and How They Know It , by Walter Vincenti. Vincenti draws on specific case studies from 1915 to 1945, to illustrate deep insights into the foundations, concepts and practices of aeronautical engineering in those years. He discusses the need for a community of cooperating practitioners to build up established normal design practices and products—such as Andy Kinslow begged for. He discusses the resolution of conceptual issues in the function and operation of an airplane: is the pilot an airman—almost like a bird—or a chauffeur—like the driver of a car? He illustrates a theoretical foundation for practice in the idea of a control volume—a spatial volume enclosed by an imaginary control surface that gives bounded form to a potentially unbounded problem. He illuminates the problem, and eventual solution, of satisfying what today we might call non-functional requirements by the twenty-five year effort to understand what was meant by flying qualities and how they could be satisfied. He discusses specialisations ranging from the overall design of an airplane to the long communal effort to engineer an effective design for the riveting that attaches the metal skin to an airplane's metal frame.
Thoughtful consideration of Vincenti's writings (and, not least, his copious footnotes) reveals their relevance to software engineering, and offers many lessons and insights that software engineers would be foolish to ignore. Peter Naur and Brian Randell eds; Software Engineering: Report on a conference sponsored by the NATO SCIENCE COMMITTEE, Garmisch, Germany, 7th to 11th October 1968; NATO, January 1969.
 J N Buxton and B Randell eds; Software Engineering Techniques; Report on a conference spon-sored by the NATO SCIENCE COMMITTEE, Rome, Italy, 27th to 31st October 1969; NATO April 1970.
 Walter G Vincenti; What Engineers Know and How They Know It: Analytical Studies from Aeronautical History; The Johns Hopkins University Press, Baltimore, paperback edition, 1993.