This guy gets something wrong in just about the first paragraph. The Volkswagen diesel issue did not happen because of a software failure - the software did exactly what it was designed to do. Now we don’t know who wrote that spec, but calling it a software failure is idiotic. His bio says he is a game designer - which could mean anything - and a professor of media studies and interactive computing, whatever that means.
That sounds just like Dijkstra, who I believe was involved in this very famous NATO conference. In 1968 the concept of structured programming was unknown - I certainly never learned it in college, and we were on the leading edge when we taught it in grad school.
He seems to dismiss the entire field of electrical engineering - well, maybe he’d let power engineers in. My computer-filled car has always started - and far more reliably than my old non-computer filled car. I’ve never been stuck in a modern elevator. It appears to have been quite common in the past, but the problem is seldom the control, which 40 years ago was random logic, not programmed.
Bridges and such have relatively few requirements - they have to survive a certain load of traffic, various wind conditions, possibly seismic events. Large software projects have a lot more requirements. And they change also. Windows may crash, but it also has to support all sorts of configurations and devices and programs showing up for the next ten years unanticipated by the designers.
I don’t have time to read the whole article right now, but I wonder if he has ever done programming in the large.
I’d argue that most programmers aren’t engineers, even the ones who are well versed in software engineering.
Coding’s a relatively small part of the process of making functional applications and systems, and it seems to be the one that everyone focuses on. Look at it this way- if you were building a building, would you be more concerned about the qualifications of the architects and structural engineers, or about the qualifications about the immigrant construction worker running the circular saw and nail gun? Yet that’s what, in many ways, the industry(as a broad term) has going on- a bunch of half-trained analysts, managers and architects designing and specifying the thing, and then a bunch of highly trained guys doing the nitty-gritty work of building it. I mean, I have a CS degree, a MBA AND a MS in IT and Management, and I don’t feel particularly prepared for doing high-level application design/process flow type stuff, and nor do I feel particularly prepared for managing projects, etc… And I know that I’m about as formally educated for that kind of thing as people get. Most analysts, PMs and system architects I know fell into those positions- either they were programmers who got promoted (with no formal training), or they did something else and ended up in that position somehow. There’s no college track for “IT analyst” or “software architect”; imagine if construction workers ended up being engineers and architects the same way!
Thanks for the bio info on the author, Voyager. I had not looked at that.
I don’t have a dog in this fight, I just think the topic is interesting, so please know that I don’t advocate the views of the article.
I see what you are saying about the VW software doing what it was supposed to, point well taken. I wonder if the author would reply that the software engineers for VW failed to be professional when they enabled illegal activity. Do regular engineers risk losing their licenses/accreditation (are there such things for them?) – sort of along the lines of a lawyer getting disbarred?
The demand for software to have a success rate comparable to bridge building is strange to me. We’ve been building bridges for millenia. Besides, different kinds of engineering have different tolerance for failure. It doesn’t matter if cars breakdown more than nuclear power plants melt down, after all.
On the other hand, would it be completely crazy if software engineering in 60 years had professional boards granting licenses to people who had done a 5-7 year academic preparation? Codified professional standards and ethics? Most activities don’t require that, but might software engineering?
I do have this thought – the most serious professions in our society are practiced by folks who have a vocation, a calling, to do so (doctors are most often cited as the example here). What would it mean to have a vocation for software engineering? What about regular engineers having the same? Those are honest questions, I just lack information here, but what makes me ask is that so many people do regular engineering tracks for jobs and financial security that I wonder if such motivation crowds out others.
My friends at the time who were CS professors dreaded the crops of freshmen who thought that because they could write a BASIC program on their C64 they were true programmers who knew it all. The kids got this idea knocked out of them. But he might as well say airplane design is not engineering since kids build model airplanes out of balsa. There is a bit of training between this point and being a professional - ditto for software. In any case, hardly anyone with a PC programs anymore.
This about says it all. He seems to think that most software is like Instagram. He does mention self driving cars. but every car nowadays is full of software. A braking problem with my Prius got fixed by a firmware update. Not to mention all the code in your DVD player or microwave oven.
I don’t use Instagram, but I suspect the code is not copying things to a server. It has to allocate space, check permissions, and no doubt interact with code for advertising. Maybe the game code he is aware of only interacted with one user on a PC or console - multiplayer web based games are a bit more complicated.
Abstracting messy internals into modules is a basic principle of much of engineering, even buildings I think. It is certainly true for hardware design. A big flaw of early software was that every variable was global, and everything interacted with everything else. Modular design involves interfaces, which this guy seems not to understand.
Enough. Suffice to say that the comments, which are about 99% against him, are actually pretty good for once. This clown should concentrate on media studies. I hope he is better at it.
My dad was a software engineer when the concept was fairly new. From what I understood there was an almost reverse snobbery going on, for example there was a real resistance to wearing ties or white shirts as they were engineers and hence blue-collar. This was even though my dad had a degree in the classics from Oxford University and was on a very healthy salary.
No worries. Thanks for the link, and I get to do my Lewis Black impression.
IEEE has a set of ethics you agree to when you join. I bet VW has some too. But when a big project fails you don’t pull the licenses of everyone working on it. With any luck the people responsible will get penalized plenty. And when a “real” engineer does a shoddy job we’re not satisfied with just pulling his license.
Good point. If you compare complexity, production software is probably more reliable than bridges. When he says that you don’t update construction projects, it is because he does not live in California where all our bridges and many buildings get sesimic retrofit upgrades. Why? For new requirements, which is why software gets updated also, mostly.
BTW, a lot of breakins are due to lax security procedures, lack of attention to intrusion logs, or lack of caring. If a county government lets a bridge rot so much it falls into the water, they shouldn’t hold the designer at fault.
He mentions the guy who tweeted that it was incompetent software design when told his password had illegal characters. No, it was probably because the guy didn’t read what the legal character set was.
I’ve been programming since 1968. My CS degrees are from really top schools. But if the call for software PEs that was big in the late 1970s had caught on, and I got one (and I could have) my certification would be useless today.
The guys pushing for PEs back then were mostly mainframe guys, and the exam would be focused on COBOL which was what they used. (Never heard of it? My point exactly!) As one of the comments said, this is about job security.
The equations used in civil engineering haven’t changed. There are some new materials, but mostly things are the same. Not true in computer design or software engineering.
I’ve got exactly such a vocation. Weinberg in “the Psychology of Computer Programming” talks about compulsive programmers, people who love to program, and I’m one of them. EEs with vocations built radios as a kid. When I was a kid Fisher Body had a contest for high school students where you designed a car out of a block of wood. Car designers probably loved to do that - I loved to stay late at school and write Tic-tac-toe programs in machine language.
And when I retire next year I’m going to teach myself JavaScript to do a paint-by-number puzzle solver. I can’t wait.
That might have been because IBMers were forced to wear ties and white shirts, and we didn’t want to be like them.
Even back in the '70s CS grad students were on a first name basis with their professors. When I went to Bell Labs in 1980 no one wore ties either. The informality of Silicon Valley has deep roots. I think it is based much more on caring about ability more than status than wanting to be a blue-collar engineers. Who weren’t blue collar. My uncle was an engineer working for Grumman and places like that, and he wore a suit in the 1960s.
An interesting article from the 90s that was pointed out to me recently, covering the software development process for the space shuttle’s critical systems. With the right process, software can be as defect-free as the products of traditional engineering disciplines.