Hasso-Plattner-Institut für Softwaresystemtechnik
Engineering Culture

Engineering Culture

What do we mean by engineering culture?

On July 5, 2002, the University of Potsdam's Faculty of Mathematics and Sciences awarded Hasso Plattner an honorary doctorate. In his address, one of the questions Hasso Plattner considered was: "What do we mean by engineering culture?" He compared the mechanical and software engineering disciplines, using the examples of a car engine and a software-based purchasing system to illustrate fundamental differences - but also important commonalities - between the two. Here are some excepts from his talk:

"Unlike the engine, which uses many different materials and technologies, the software-based purchasing machine makes use of only one material, the stored-program digital computer, and there is only one single manufacturing technology, the program development environment with its various programming languages and management tools.

In mechanical engineering, the technology and the application area are much more closely interlinked. Engine builders have strong mental associations with respect to the automobile: nearly all of them have cars of their own and are therefore familiar with every aspect of an engine's practical operation. By contrast, we as software engineers are rarely conversant with the application domain. We have little or no experience of the business processes we are designing solutions for. In the past, the business management and business informatics disciplines have invested a good deal of effort in process modeling with a view to improving understanding of applications and the way they are linked to the technology used.

Repeated attempts have been made to model the software itself, but most of them were rejected as too rigid or ideologically colored. Bill Gates has said that, for him, only one thing counts: the original code. Here the entire software sector is at a decisive disadvantage compared with classical engineering disciplines. It has no formal language to describe the models that would allow free communication among all the parties involved. Instead, we have a wide variety of approaches, ranging from text and PowerPoint formats to Rational Rose's UML graphs. The lack of a globally recognized methodology for describing software systems is preventing us from communicating - and thus, ultimately, from learning. Experience cannot be passed on to the same extent as in mechanical or electrical engineering. Reusable components continue to be confined to sales presentations and have not yet found their way into everyday software engineering practice. The most complicated engineering discipline - software engineering - has by far the least developed design and documentation methods. Houses, ships or computers could not be built in this way, but the most complex processes - whether in the business world or for controlling machines - are developed using early prototyping. I will gladly admit that the concepts of object orientation have brought significant progress in recent years. But what is still lacking is a description method that is used by nearly all software engineers and that enables experience to be exchanged swiftly and without transmission errors. There is a tendency to constantly re-invent everything although a considerable wealth of experience already exists - but it is experience that cannot be tapped.

(...) Even today, we can still build the machines invented by Leonardo da Vinci from his drawings. And how will we see the software industry a few years from now? It would be a good thing if the academic community were to at least recognize the crisis in software engineering. The path toward a genuine engineering culture in the software world would then be much clearer and less stony".