29

Edsger Dijkstra, who could be somewhat abrasive at times (he called "Carl Friedrich Gauss, the Prince of Mathematicians but also somewhat of a coward") said in his essay "On the cruelty of really teaching computing science" (EWD1036):

A number of these phenomena have been bundled under the name "Software Engineering". As economics is known as "The Miserable Science", software engineering should be known as "The Doomed Discipline", doomed because it cannot even approach its goal since its goal is self-contradictory. Software engineering, of course, presents itself as another worthy cause, but that is eyewash: if you carefully read its literature and analyse what its devotees actually do, you will discover that software engineering has accepted as its charter "How to program if you cannot.".

Is this true?

cjs
  • 25,752
  • 9
  • 89
  • 101
  • 12
    Wow, a downvote and four close votes in 17 minutes. Software developers really do still hate Dijkstra. – cjs Jun 07 '09 at 08:24
  • 3
    This is reaally ***really*** subjective, please make it a wiki – hasen Jun 07 '09 at 08:25
  • 4
    No, we just hate non-questions. –  Jun 07 '09 at 08:30
  • 3
    It's a serious question. Would it be fair to say that Stack Overflow is not for questions that don't have simple answers? – cjs Jun 13 '09 at 04:14
  • 3
    @CurtSampson: Yes, it is true. Nobody cares, though. Teaching as many people as the software industry needs how to become competent programmers is simply not cost-effective. In all fairness, one of our main limitations is the primitiveness of our tools: We need to enforce pre and postconditions, yet we do not use dependent types. We need to guarantee resources are properly cleaned up, yet we do not use linear types. Heck, if we do types at all, we design class hierarchies mostly based on "intuitive" truths that fail to hold in corner cases. Good results cannot be achieved through bad means. – isekaijin Jun 22 '13 at 10:46
  • 1
    The "how to program if you cannot" reflects Dijkstra's complaint against the cultural direction Computer Science has been taking during his years. People were obsessed with building complexity on top of complexity, then giving each other different titles/certifications for it, while ignoring that their complicated non-solutions actually just revealed problems, which gave academics decades more research and head-scratching to resolve. And this was happening constantly. – Daniel Dinnyes Jun 23 '17 at 16:54
  • 2
    In the above context this quote from Dijkstra fits well too: "Simplicity is a great virtue, but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better." – Daniel Dinnyes Jun 23 '17 at 17:25
  • 1
    "Is this true?" is a real question. It's questioning the validity of an argument and with that eliciting counterarguments or other arguments that support the original one. – luenib Apr 16 '19 at 16:30

3 Answers3

10

you will discover that software engineering has accepted as its charter "How to program if you cannot."

I think I agree with this. At least when I reflect on what we were taught, and a lot of literature, I kinda realize that it's aimed to guide people who can't program.

hasen
  • 161,647
  • 65
  • 194
  • 231
  • 4
    Except that, once they're working in a team on a piece of software too large for a single person to write or maintain, those who think they can program usually find that they, by this definition, can't - if they have the humility to accept this. – Michael Borgwardt Jun 07 '09 at 08:47
  • 3
    @MichaelBorgwardt Completely agree, Software Engineering shines in the field of humanity in the discipline. It helps answer and the study the question "How can people work together to make software?" And I'd rather have someone who knows the science of software engineering who's been a programmer/developer make those decisions, rather a manager who has only been a programmer/developer or even not at all. – Derek Litz Dec 07 '13 at 16:32
7

I wouldn't agree. For me, software engineering is how to go about attacking complex problem and Getting Things Done which involves more than just writing some code here and there.

Even if you can program, you need to know about the discipline in the large, etc etc etc. Taking science into engineering is about making decisions on a practical basis with the current technology available, and having a team (large, small or singular) that designs and produces a product that works, here and now.

Computer Science is IMHO a much narrower scope and less of a daily problem when doing software development.

(This of course depends on your product. Some products have more technology and science in them than does others, regardless of whether they're software, hardware, buildings, bicycles, cars or space rockets.)

Macke
  • 24,812
  • 7
  • 82
  • 118
7

I got a wee-bit curious -- some older discusions on this quote.

This question should be retained here for posterity. Collect all opinions from people who are directly associated with the subject, for those who lookup interpretations of his quotes.

nik
  • 13,254
  • 3
  • 41
  • 57