a thoughtful web.
Good ideas and conversation. No ads, no tracking.   Login or Take a Tour!
comment by user-inactivated
user-inactivated  ·  3844 days ago  ·  link  ·    ·  parent  ·  post: Programming Sucks

No it won't. You need a stable body of knowledge to have an engineering discipline, and attempts to build one for software do more harm than good; see UML architectural astronautics and the patterns cargo cult. Engineers wouldn't have one either if they got to replace physics when they found it inconvenient.

I wish people would stop talking about software engineering and software architecture. We have a bad habit of believing analogies too much in software. It works well in AI, it doesn't work well in how we think about what we do. What we do isn't really like engineering at all.

We could become an actual profession, with an enforceable code of ethics, but I doubt that will happen either. It has fewer advantages than it used to, and people would balk at not being able to form corporations for some sorts of software companies.





rjw  ·  3844 days ago  ·  link  ·  

You make a good point regarding software engineering having no stable body of knowledge (apart from project management - The Mythical Man-Month?).

I agree that analogies are shit, unfortunately the practice of using them to explain things is easy to pick up and hard to lose. Have you read "The cruelty of really teaching computer science" by Dijkstra? A lot of what you have said reminds me of that essay (regarding analogies).

Program derivation sounds interesting, though. I'm tempted to say that that would count as "Software Engineering". Do you know anything about this?

user-inactivated  ·  3844 days ago  ·  link  ·  

Analogies aren't necessarily shit, you just need to keep in mind how deep (or shallow) they are. "Software engineering" is a very shallow analogy. You can use it to give laymen an idea what it is you do, but you don't want to believe it too much yourself.

The predicate transformer stuff Dijkstra advocated was beautiful. Pick up a copy of David Gries's The Science of Programming if you can find it. Formal methods aren't worthwhile for programs that aren't really high risk though. Even in mathematics you only get that formal for important and hard theorems. Dijkstra was great, but he was still a product of his time, and Dijkstra's time was still a little too in love with formalism because of all the exciting stuff happening in mathematical logic in the first half of the century. By all means prove your space shuttle control system and pacemaker correct, but trivial CRUD forms are fine if they're legible and have some tests.

rjw  ·  3844 days ago  ·  link  ·  

I'll check out The Science of Programming.