… a blog entry in which I define the term “proving”. I’m defining it here because I needed to link to a definition and couldn’t find a suitable URL to point to.

A few years ago, we were in a meeting when an architect explained to the project manager “we’ll be spending the first few weeks of the project proving the technology”. The manager was a taken aback. He took a deep breath and pointed out that the project was already committed to the technology - J2EE Web etc - and that the project sponsors would be a smidgen disappointed to learn that the underlying technology was “unproven”. Really, everyone was committed to the technology, but it was clear that no-one in the room (me included) had a solid understanding of “prove”.

What does it mean “to prove the framework” or to “prove the MVC architecture”? Are you proving these things exist? Checking if they’re feasible? Are you offering a mathematical proof that it’s the be-all and end-all? Here’s one definition:

  1. To establish the truth or validity of by presentation of argument or evidence.
  2. Law. To establish the authenticity of (a will).
  3. To determine the quality of by testing; try out.
  4. Mathematics. To demonstrate the validity of (a hypothesis or proposition). To verify (the result of a calculation).
  5. Printing. To make a sample impression of (type).
  6. Archaic. To find out or learn (something) through experience.

The third and sixth definitions say it best. Proving a technology means bashing it around to see what works and what doesn’t. According to The Straight Dope, it derives from a medieval term, Exceptio probat regulam, which is where you get seemingly paradoxical expressions like “the exception that proves the rule”, “proving ground”, and “the proof of the pudding”. However, said article also refutes that theory completely! In any event, it’s certainly a useful way to explain the usage in a software context.

Definitions - and arguments about them - are rather boring. This post is not here to prove a point (sorry), but to lend significance to an idea. Proving technology early on is a smart strategy for reducing risks later on. It’s really the idea behind the XP notion of “spiking” and also a key jusitifcation for the more traditional idea of throwaway prototypes; prototypes can be used to prove technology, not just for user acceptance.