Comments on: No Free Silver Bullet Lunch http://tleaves.com/2005/02/25/no-free-silver-bullet-lunch/ Creativity x Technology Sat, 17 Mar 2012 05:09:58 +0000 hourly 1 http://wordpress.org/?v=3.3.1 By: Alex Groce http://tleaves.com/2005/02/25/no-free-silver-bullet-lunch/comment-page-1/#comment-999 Alex Groce Sat, 26 Feb 2005 20:56:25 +0000 http://tleaves.com/?p=317#comment-999 > And that means you will be alerted to any > non-local impacts your change has the moment you > make it. Changing software is *not* expensive > unless we make it so. That assumes (1) that if you're alerted, the non-local impact is no longer expensive and (2) that the test suite really will alert you to all the important non-local impacts. I think both of these are simply false in practice, most of the time. Knowing that a non-local effect exists isn't the battle--dealing with it is. You're pushing back the assumption that changes are cheap and easy. And sometimes even a "good" test suite simply won't expose all the important non-local impacts. > And that means you will be alerted to any
> non-local impacts your change has the moment you
> make it. Changing software is *not* expensive
> unless we make it so.

That assumes (1) that if you’re alerted, the non-local impact is no longer expensive and (2) that the test suite really will alert you to all the important non-local impacts.

I think both of these are simply false in practice, most of the time.

Knowing that a non-local effect exists isn’t the battle–dealing with it is. You’re pushing back the assumption that changes are cheap and easy.

And sometimes even a “good” test suite simply won’t expose all the important non-local impacts.

]]>
By: Robert 'Groby' Blum http://tleaves.com/2005/02/25/no-free-silver-bullet-lunch/comment-page-1/#comment-998 Robert 'Groby' Blum Sat, 26 Feb 2005 17:55:28 +0000 http://tleaves.com/?p=317#comment-998 What Chris said :) If you're worried about non-localized impact, you can chose to handle it manually - exponential cost driven by the number of paths your software can take. (With the implication that, sooner or later, modifications to software are commercially unfeasible!) Or, you can do what every other industry did when a process became to costly to do manually: Automate - i.e., a test suite. It still doesn't solve the problem completely - test suites are still to some extent incurring exponential cost - but you've flattened the curve enough to make it almost flat for even large projects. (There are other things that impact the curve, choice of language for example. But it still remains flattened ) And that means you will be alerted to any non-local impacts your change has the moment you make it. Changing software is *not* expensive unless we make it so. Refactoring plays another significant part here. If you let your code grow into a tangled mess, more and more of the impact is non-local. So you need to clean it up regularly. What Chris said :)

If you’re worried about non-localized impact, you can chose to handle it manually – exponential cost driven by the number of paths your software can take. (With the implication that, sooner or later, modifications to software are commercially unfeasible!)

Or, you can do what every other industry did when a process became to costly to do manually: Automate – i.e., a test suite.

It still doesn’t solve the problem completely – test suites are still to some extent incurring exponential cost – but you’ve flattened the curve enough to make it almost flat for even large projects.

(There are other things that impact the curve, choice of language for example. But it still remains flattened )

And that means you will be alerted to any non-local impacts your change has the moment you make it. Changing software is *not* expensive unless we make it so.

Refactoring plays another significant part here. If you let your code grow into a tangled mess, more and more of the impact is non-local. So you need to clean it up regularly.

]]>
By: Chris Hanson http://tleaves.com/2005/02/25/no-free-silver-bullet-lunch/comment-page-1/#comment-997 Chris Hanson Sat, 26 Feb 2005 07:13:01 +0000 http://tleaves.com/?p=317#comment-997 There are ways to manage this though. In my experience, the better an automated unit test suite I have and the more diligent I am about writing unit tests in advance of the code they test, the less fragile and the more amenable to quick changes the codebase is. (And a unit test suite doesn't count as one to me unless it runs every time I type command-B in Xcode, and it's trivial to add new tests to...) Test-driven development isn't a panacea. But I've found that it works far better than any other technique I've tried. There are ways to manage this though. In my experience, the better an automated unit test suite I have and the more diligent I am about writing unit tests in advance of the code they test, the less fragile and the more amenable to quick changes the codebase is.

(And a unit test suite doesn’t count as one to me unless it runs every time I type command-B in Xcode, and it’s trivial to add new tests to…)

Test-driven development isn’t a panacea. But I’ve found that it works far better than any other technique I’ve tried.

]]>