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.