Sponsored Link •
Bill Venners: Another development technique you talk about in your book is prototyping. What is prototyping, and when it is appropriate?
Dave Thomas: Prototyping is when there is a specific aspect of something—whether it's an interface, or an algorithm, or a performance problem—that you want to investigate.
Andy Hunt: Prototypes are for your learning.
Dave Thomas: Yes, prototypes are a learning tool. For example, the requirements may say you need to get 10,000 transactions an hour through the database. But you may know that the highest throughput you have ever gotten with that database is 5000 transactions per hour. You need to find out if this is actually going to work or not. So you hack together a real ugly little script that poke 10,000 transactions in an hour and see if it works. That's a prototype.
Andy Hunt: And maybe the script doesn't even go through your code. You might not even know if the database can do 10,000 transactions in an hour. You may start with a prototype to see if the database can handle the load, because if the database can't do it, there's no way your application on top of the database is going to be able to do it. Prototypes allow you to investigate.
Bill Venners: Is their a danger of management trying to turn the prototype into a tracer bullet?
Dave Thomas: Prototypes by their nature are not designed to be long lasting code. Prototypes are designed to be thrown away. They're one-offs. It is inappropriate to over-engineer a prototype. A prototype is like a town in a western movie. It's all facade. There's nothing behind it. You cannot move in and raise a family in one of those houses.
Come back Monday, April 28 for Part IX of this conversation with Pragmatic Programmers Andy Hunt and Dave Thomas. If you'd like to receive a brief weekly email announcing new articles at Artima.com, please subscribe to the Artima Newsletter.
Andy Hunt and Dave Thomas are authors of The Pragmatic Programmer, which is available on Amazon.com at:
The Pragmatic Programmer's home page is here:
Dave Thomas was not the first person I've interviewed who mentioned the arcade
game Whack-a-Mole. James Gosling also called upon the versatile Whack-a-Mole
metaphor while pointing out that it is sometimes hard in
engineering to know if you've solved a problem or moved it:
The Agile Manifesto is here:
Ward's Wiki, the first WikiWikiWeb, created by Ward Cunningham, is here:
Extreme Programming: A Gentle Introduction:
XProgramming.com: An Extreme Programming Resource: