“Proving” a Technology

… 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.

Including modern words in modern dictionaries

What manner of 19th century public domain dicitonaries are packaged with 21st century software? For Montogomery Burns, these word lists would be just spifflicastic, but maybe not for the average citizen.

I just installed Thunderbird 1.5RC1, keen to check out the spell-check. Neither “blog” and “podcast” were recognised as valid words, despite one of the other new features being RSS and podcasting support! Not pointing the finger at Thunderbird, since most dictionaries in usr/dict and ispell and Office(s) seem to be equally ancient.

Many web-related terms turn out to be unsupported:

  • blog.
  • rss.
  • podcast.
  • www.
  • weblog.

  • mozilla.

  • thunderbird.
  • firefox.
  • netscape.

  • perl.

  • usenet.
  • cgi.
  • http.
  • dotcom.

  • flickr.

  • technorati.
  • google.
  • ipod.

Further curious (bordering on obsessive), I then tried OED’s top ten new entries for 2001, specifically those with exactly one term. All but one of these fails too.

  • doh.
  • balti.
  • Doh!
  • Ladette
  • Mullet (Passes spell-check.)
  • Alcopop

Yep, forget about quoting the Simpsons and partying with Red Bull. At the end of the day, it’s the Mullet that commands your respect.

I’m sure Google Labs could run some algorithm against the web to produce a more useful spell checker. It would obviously find many new words that should be added, but furthermore, it would find obscure words that should be removed. And it could probably go a lot further too, and build a very clever grammar-checking algorithm. But for now, there’s plenty of mileage to be gained from a simple manual list.