| Roughly, I think the point is to solve for X:
blueprint:building :: X:code This is exactly backwards. The answer is:
blueprint:building :: code:software Failure to understand this is the reason why most comparisons between software and engineering are, as the author has correctly identified, nonsense. He is unable to recognise this error due to a lack of experience with engineering, as evidenced by this statement: If my grandfather had responded "It depends" to a question about how to produce a 1-ton spool of 2mm-thick copper strip, he'd have been fired on the spot. To a first-order approximation "It depends" is the best answer to any engineering question, not just any software engineering question; the author's grandfather may well have agreed with this. Don't get me started on the footnote. If the author wishes to actually learn something about engineering instead of just repeating erroneous clichés about it, I would recommend he start by reading anything by Henry Petroski. |
I stand by the blueprint:building :: X:code concept. Brian posted a comment on the actual post along the same lines as your rebuttal:
"With regard to "blueprint:building :: X:code", I think code is the blueprint. If not code, then a specification that's precise enough that it may as well be code."
And I'll repeat here that if precise specifications required code, then you wouldn't have regexes, SQL, or any of the other common (and uncommon) DSLs that flit about. If you think those things are code, then what about BNF grammars? RDF triples that inform expert systems? There are a lot of things that system behaviour that don't suffer from the problems of software as I described, and they often are far closer to the relevant domain than any "code" that would be required to implement the desired behaviour directly.