4 ms·
Are you asking if I would be happier if there was testing done on my ABS brakes/chemotherapy/fly-by-wire software than if there wasn't? Seriously? You're sugge
by markdennehy 17y ago
Are you asking if I would be happier if there was testing done on my ABS brakes/chemotherapy/fly-by-wire software than if there wasn't?
Seriously?
You're suggesting there's an alternative?
Or are you saying you base your level of happiness on the experience level of the coders involved rather than their test coverage stats? Because last I checked, experience levels meant very little. The Tacoma Narrows bridge was designed by - at the time - the foremost structural engineers in the world. Their paper on its design was recognised as the single most important paper of its kind in that decade. The bridge still fell, not because they were wrong, but because of something nobody had encountered yet (in this case, aerodynamic flutter).
Critical code is precisely that - critical. You don't leave it to the "gifted engineer" model of development because that always fails. Noone is gifted and diligent 100% of the time, everyone screws up eventually. It's dangerously arrogant to think otherwise. You build a system of work that lowers the probability that those screwups make it into a working system, that's all. Civil and Mech. and other engineering branches have been doing it for decades. We're just getting started on it in this branch of engineering.
- eugenejen 17y agoYou can not write tests that test/discover defects that you don't know as defects. The Tacoma Bridge case proves exactly the above statement. If we all can conceive tests that remove all defects from past, now and future, then we all live perfect lives. But that is impossible, though we can try to minimize the impact. The problem is probably is undecidable in computational complexity sense. And to some point, we need people, maybe our beloved one, maybe ourselves to be sacrificed in order for scientists and engineers in the next generation to figure out and put them into their test cases to avoid repetition of tragedies. I think you misunderstand gifted engineers. Gifted engineers understand what they shipped are imperfect, but they have guts to ship them and see how they work. The failure will be lessons for next generation to learn. I feel more scared of people who think their tests have removed all known defects while they forget about unknown defects. They have committed the sin of "confirmation bias" and is much worse to welfare of humanity.
- deleted 17y ago[deleted]
- markdennehy 17y agoYou say "guts to ship and see", I say "piss-poor engineering at best, unethical criminal negligence at worst"...
- eugenejen 17y agoThere are part of computer science and engineering dealing with well defined problems. then it is easier to judge solutions to problems by proofs and test cases. Whoever can't prove their code is right or writing test cases are really criminal in their professions. But there are another part of computer science and engineering dealing with fuzzy requirements or unknown problems. I don't see any better way to explore that area except trials and errors and the scientists and engineers have to face possible charges of "piss-poor", unethical, criminal and evil for the consequences of their solutions. I feel that you have a very clear dichotomy of moral system. Unfortunately I deal with fuzzy things daily and see the harms of dichotomy in creating new stuffs and burning through money without any fruit of labor. It is easy for you to improve existing technologies because you can define criteria for improvements. But it is so hard in underfunding web startups that you can't expect in advance what a new solutions will be to users unless you make it and test it with them. If I need someone to preserve and maintain existing software systems, because specifications and use cases are well defined, people like you are well fit for the task. But if someone has a new idea to solve a new problem that no one solved before, I would rather to see an unsophisticated solution first to test against the problem and start from there, and I am ready to rewrite the system when the problem becomes clearer.
- markdennehy 17y agoI've spent a few years dealing with fuzzy requirement myself. And we tell outselves it hurts noone when a bug happens, but we're being deliberately obtuse in those cases I think. Does it really hurt noone if an online test which comprises a percentage of someones final degree grade, crashes repeatedly while the course tries to take the test? Does it really hurt noone if bad UIs cause people to lose time or money, especially when you add up all that time? I'm not suffering from an absolutist morality here - I'm pointing out that there are consequences to piss-poor engineering, and it is necessary for engineers to take the viewpoint of those being hurt rather than that of those trying to make money selling the product; because after four hundred years of training engineers, that's the best way we've found of preventing disasters. And the same should be true of developers, because just as civil and mechanical engineering before it, computer and software engineering are increasingly forming an integral part of the infrastructure we live our lives in.