📜 ⬆️ ⬇️

End of software engineering and last methodologist

This is a translation of the article by Professor Bertrand Meyer from the Communications of the ACM blog.
The article is relatively recent (compared to the previous translation).

Besides the fact that Bertrand Meyer is known to most specialists as the creator of the Eiffel programming language and ideas of contract programming (design by contract), he is an honorary doctor and head of ITMO, he teaches at Innopolis University. And he is fluent in Russian. ;)

The topic of software engineering has never been particularly popular. This area began as a “programming methodology,” which gives rise to the image of a middle-aged bearded man. Whoever calls you, with a Dutch, Swiss-German or Oxford accent, repent and take the right path. Overwhelmed (paraphrasing Mark Twain) by the obsessive fear that someone, somewhere, can actually enjoy programming.

But it was in ancient times. With a few exceptions, one of which will be mentioned below, if someone continues to study programming methodologies, he is already engaged in this in the world of agile , where decisive arguments often begin with the phrase “I always say ...” (Example from the consultant’s page : “I I always say to the team: “I would like the [user] stories to be small, fit in one iteration, but this path is not always acceptable” ). Dijkstra used to appeal to intuition, but he confirmed it with rigorous conceptual evidence.

The field of software engineering, where the programming methodology today is only a small part, has expanded incredibly both in depth and in breadth. Conferences such as ICSE and ESEC still attract large crowds, magazines are buzzing, researchers are still delighted with their work, but ... am I the only one who feels the frustration growing around? It is not clear whether all this is interesting to anyone outside the community. The world seems to consider software engineering to be something familiar to anyone in IT, we all develop programs, or manage people who develop programs. The review of hiring by computer science departments in the USA from 2017 shows that in one hundred leading universities that provide professorship, software engineering took only 3% of all vacancies! (In universities, which are limited to the master's level, this figure is 6%, not to say so slightly, but also not impressive, considering that these institutions are mainly responsible for the training of future software engineers.) From an academic point of view careers, an obvious direction to choose is “Artificial Intelligence, Data Analysis and Machine Learning,” which gained 23% of those hired at these top 100 universities.
')
I have nothing against colleagues from AI; I have always believed that “AI is winter” was overkill [1] and they have the right to spring. Does this mean that software engineering should now go to winter? This is madness. Software engineering is more important than ever. A recent article on software apocalypse (more about the problem than about the solution) is one of the latest reviews sounding like an alarm. Or, as one of the recent examples, read about the loss of a satellite in Russia [2] (a juicy quote that you can use the next time you teach the class the complexity of software testing: “This revealed a hidden problem in the algorithm that did not manifest decades of successful launches ligament "Union" - "Frigate" " ).

Such cases, by the way, illustrate what I would call the professor of software engineering a dilemma much more interesting, in my opinion, than bizarre ethical puzzles (you understand what I mean - the problem of the trolley and the like) over which people from the philosophical faculty carry out their days: is it ethical for a professor of software engineering, every morning, immediately after waking up, to open the site cnn.com in the hope of doing some program-initiated catastrophe that would finally legitimize his profession? The answer is simple - no, this is not ethical. However, when you observe the state of the usual software development, it’s scary to think (although it’s not right to wish for it) about all of the catastrophes awaiting one’s time, which, as you may suspect, have already been laid there and are just waiting for the right combination of circumstances.

So, yes, software engineering is more important than ever, as is the programming methodology. (Personal revelation: I think of myself as the very model of a modern methodologist [3], without a beard or a Dutch accent, but trying to bring the torch of the productive work of the seventies and eighties to the modern IT scene.)

What is valued, however, is not what the world needs, but what the world considers necessary. It does not seem that the world thought about the great need for software engineering. Even when software leads to disasters, we see headlines for a day or two and then nothing. Radio silence. I argued ad nauseam, including four times on this blog (now five), about the need for a simple rule that would require a public audit of each such event; quoting myself : air travel becomes safer not by accident, but due to accidents . These warnings remain deaf. As another sign of a downturn in interest, many, including me, received most of their understanding of software engineering from the ACM forum about risks , a long-standing and unique source of technical information about software troubles. The forum is still thriving and still, at times, informs about software engineering problems, but most of the traffic is about privacy and security (with particular affection for libertarian tirades against any reasonable privacy rules that are approved in the EU). Important topics, of course, but where do we go for comprehensive information about what goes wrong with the software?

Another circumstance deserving attention is the evolution of programming languages. Creating languages ​​is again a loud topic, with every kind of fashionable newcomers. I see one example (TypeScript) in which the driving force is the engineering goal: to make Web programs safer, more scalable and more manageable by introducing some discipline into the world of JavaScript. But this is an exception. Arguments of many new languages ​​tend to see how skillful they are and what expressive constructions they introduce into use. Fine. We need new ideas. They could be even more convincing if they were aimed at solving old and boring software engineering problems: correctness, reliability, extensibility, and reusability.

None of this makes software engineering less important and does not diminish the passion of those of us who have dedicated our careers to this field. But the time has come to put on our coats and hats: winter is before us.

Notes

[1] AI was my first love, thanks to Jean-Claude Simon of Polytechnic / Paris VI and John McCarthy at Stanford.

[2] I thank Nikolai Shilov for turning my attention to this information. The text is in Russian, but you can skip it through a web-translator, which will allow you to understand the most important thing.

[3] This time I will borrow a phrase from James Nobel.

Source: https://habr.com/ru/post/350260/


All Articles