On Tuesday 19 August 2008 06:01:38 paron wrote:
Yes, there’s a fundamental difference between making incremental
changes and reimagining the problem domain.
Yes, there is. But it’s not a difference in testing methodology.
I would use Ruby for any program I could – I find it equally useful for
experimental greenfield apps and aging production apps.
Similarly, I would use BDD as soon as I could, in an experimental
greenfield
app. And I do.
That’s my opinion, of course. I’ll never understand why, but some people
prefer to use Ruby or Python to prototype an app, then throw away the
prototype and start from scratch in Java or C++.
Even a non-working prototype will help your customer make the leap to
see his problem in a different light.
That is true. However, properly-implemented BDD could (sometimes, at
least)
lead to that prototype faster.
All else equal, a working prototype is better than a non-working
prototype.
I’d also argue that a non-working prototype carries several other,
hidden
risks – mainly, the risk of promising too much.
No matter how many times you tell them “This is just a prototype; it’ll
have
to be rewritten from scratch; we can’t actually do this for another six
months…” They’re still going to come out of that presentation
thinking “Man, that’s an awesome prototype! I can’t wait!”
No, you show the awesome-but-nonworking prototype to your boss. Not even
that – if you can, you show him a whiteboard sketch of it.
But even with bosses, and especially with clients, remember the Scotty
philosophy: Underpromise, so you can overdeliver. That’s how you earn a
reputation as a miracle-worker.
It also helps if they are
desperate. If they aren’t desperate, they will stick with various
combinations of horse until they can no longer do so. Then they might
be willing to make the leap – but you still have to show them a
prototype.
If you’ve got all the time it takes them to figure out that various
combinations of horse won’t work, you have the time to do it right.
The first car that Ford showed the world didn’t explode. The Wright
Brothers
built a prototype plane, and it flew. They weren’t complete, but for
some set
of requirements (aka specs/stories), they were working.