4 ms·
So, do you believe that proving the structural integrity of an engineer's work is less expensive or difficult? No, they are simply built according to several,
by mfukar 17y ago
So, do you believe that proving the structural integrity of an engineer's work is less expensive or difficult?
No, they are simply built according to several, well-established, well-studied principles. Which software engineers not only lack, but are not interested in pursuing.
- davidw 17y agoPeople have been building bridges for a lot, lot longer than they have been building software. Also, you can go on all you want about how to engineer quality stuff, but if you ignore the economics of the situation, you'll end up pricing yourself out of the market by an order of magnitude in many fields. For instance, the web or mobile phone stuff I have been working on lately: it's important that it mostly works, and is reasonably priced. The cost of making sure it never, ever has any downtime or ever fails would simply not be worth it to my customers and clients.
- wallflower 17y ago> if you ignore the economics of the situation The classic software development triangle. "The iron triangle refers to the concept that of the three critical factors scope, cost, and time at least one must vary otherwise the quality of the work suffers. Nobody wants a poor quality system, otherwise why build it? Therefore the implication is that at least one of the three vertexes must be allowed to vary. The problem is that when you try to define the exact level of quality, the exact cost, the exact schedule, and the exact scope to be delivered you virtually guarantee failure because there is no room for a project team to maneuver. Software development projects often fail because the organization sets unrealistic goals for the "iron triangle" of software development: * Scope (what must be built) * Schedule (when it must be built by) * Resources (how much it must cost)" http://www.ambysoft.com/essays/brokenTriangle.html http://www.ambysoft.com/essays/brokenTriangle.html
- davidw 17y agoOr the quick version: "fast, cheap, good: pick two".
- mfukar 17y agoYou are contradicting yourself: nobody thinks it's even remotely realistic to give assurances with 0 margin of error. Of course it's expensive, of course it's difficult. It is likewise unrealistic for traditional engineers to do so - everyone knows that buildings will eventually collapse. However, we do need some quality assurance which is more reliable than "this piece of software passes all the tests which guided its development" - which is a nonsensical statement that somehow TDD fans hail as absolute truth. It'd improve our applications and it'd improve our skills. I can't see how it's a bad idea, unless taken to the extreme.
- davidw 17y ago> we do need some quality assurance which is more reliable than "this piece of software passes all the tests which guided its development" We do not necessarily need even that. The web site for the little antique bookstore in downtown Padova really doesn't - it doesn't even handle money. They're happy to get something that mostly works and fix the rare bug that does come up when it's noticed. The software responsible for safely guiding a 747 full of people into an airport at night, on the other hand, probably does something more in terms of tests/QA/provable correctness/whatever else makes it safer, even if it makes it significantly more expensive. There's no contradiction, and I wasn't talking about TDD. My point is merely that you have to consider the economics of these things, and software projects vary to the extremes in terms of their importance and impact on our lives.
- mfukar 17y agoIf the scope of your statement was that narrow, I will agree with you. Though, the article does point out that eventually, code you've written and perhaps released without claiming any responsibility whatsoever might be used in something more important than what was originally intended. Certainly a lot of food for thought there.
- davidw 17y agoIf someone takes something of mine that's not been built for 'safety critical' use, and wants to use it there, the onus is on them to put the extra effort/money/time in. Same as if I built a one story house and someone wanted to add 5 floors to it - it's not really my fault if it doesn't work out.
- tomjen2 17y agoThat is because engineering is about repeating the same old shit again and again, whereas software development is new each time you do it.