Cold War comfort on software engineering’s birthday
Yesterday's issues at 40
Forty years ago today, at the height of the Cold War, around 50 computing experts gathered in the southern German market town of Garmisch to change history.
With the Soviet Union and Warsaw Pact glowering at the west, the participants - drawn both from academia and industry - met under the auspices of the North Atlantic Treaty Organization (NATO) and spent four days discussing the problems of producing reliable software for the rapidly-growing population of digital computers.
The event was called the NATO Software Engineering Conference because the phrase "software engineering" was, according to the official proceedings, "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".
It was the birth of a phrase that has today become pervasive.
Exactly who thought up the phrase is lost in the mists of time, but it is generally attributed to Friedrich "Fritz" Bauer, professor emeritus at Munich University of Technology and the chairman of the Garmisch conference.
The argument over whether software production can legitimately claim to be an engineering discipline continues to this day and, even after 40 years, the formal qualification "software engineer" still does not exist despite hundreds of thousands of programmers claiming the title.
Against the background of the continuing Cold War and acutely aware of the strategic significance of computer technology, the NATO Science Committee had tossed around the idea of holding an event to look into software production for a couple of years.
From bullets to bytes
In 1968, the year the Soviets put down the Prague uprising, programming was still a very young discipline. Knowledge of good practice was beginning to emerge, but it was still far from clear how the fast-growing demand for software would be met.
It was, after all, only 20 years since Tom Kilburn at Manchester University had written what is usually thought of as the first program and only ten years since the word "software" had first appeared in print - in an article by the statistician John Tukey. So, at the time, programming was still seen as an arcane pursuit more akin to alchemy or magic than engineering. The Garmisch conference changed this forever and paved the way for software engineering to become the pervasive discipline it is today.
It was an unusual gathering because it brought researchers and teachers together with industrialists and commercial programmers. So Turing Award winners such as Edsger Dijkstra, Peter Naur and Alan Perlis sat next to programmers from IBM and Bell Labs and software entrepreneurs.
The discussions were divided into three main streams - design, production, and service - with an additional stream on "special topics" that covered education and software pricing.
With one key exception, most of the issues raised at Garmisch are as relevant today as they were in 1968. The exception was the hot issue of pricing software separately from hardware - so-called unbundling. The following year IBM preempted a potential anti-trust suit by doing just this - pricing its hardware and software separately. It was a move widely seen as the beginnings of an independent software industry.
"What do we have for our current popular languages? C++, which is a bad preprocessor hack, and Java and C#, which are kind of cribbed from C++. And what do we get from all of this? Garbage."
Which is of course why Java and C# both incorporate GARBAGE COLLECTORS.
Oh it kills me, it really does. (wipes tear from eye holding sides in blissful agony)
is conducted today using (inherently) faulty software.
CAD, CAM, rafts of custom-written CivEng software galore. Calculations in engineering are analysed using computer algorithms and so how is material engineering any more inherently safe than software engineering?
Pray, do enlighten me. If it is simply a question of peer review (as has been suggested earlier) then that also happens in the world of so-called software engineering,
Faultless (in practical terms) software does in fact exist, and most of it is never seen and doesn't even have an interface, per se. However, it works silently and faultlessly in the background flying planes, controlling aircraft safely to their destinations, overseeing nuclear and chemical processing facilities the world over. When accidents do happen its almost always down to human error where someone over-rides the system and causes an almighty fuck-up.
That's engineering. If you don't believe it is, why are you flying still or not being upset that all the nuclear reactors and chemical refineries in this country are controlled by software?
Yes, it sometimes goes wrong but so do bridges and aircraft design. After all, nothing's perfect.
Bring back proper systems analysts, I say.
So, why are the IET letting me - and many others - work towards CEng chartership, then? And how have they chartered software engineers in the past?
*Proper* software engineers are capable of managing risk, taking responsibility, and signing off safety-critical systems. This has nothing to do with cobbling bits of code together until it works, and it's most certainly not Agile, but it's every bit a real engineering discipline.
Sadly SE is rare because it's difficult, it's expensive, there are no statutory barriers to entry, and the market simply doesn't care - if it can even tell the difference!