Speed vs accuracy tradeoffs - get it fast, then get it right
I just read Jeremy Zawodny's post (of Yahoo!) about his desire for speed (or efficiency) more than relevancy in search results, but preferably both.
Outside of the context of search, we've been tossing around the same set of choices recently, both on our major new 11179 metadata registry Sytadel project for AIHW, and in our internal new product development project building on Sauce.
Conventional software development wisdom says that: first you get it right, then you get it fast. On any number of projects I've worked on, we followed this approach, building the correct solution, and then if it runs like a dog, looking to start optimising it (and usually finding 1 or 2 orders of magnitude speedup by looking carefully in the right places). That's equivalent to building a car that can drive at 10km/h, and then finding ways to tweak the engine performance so that it runs at 100 to 1000km/h.
Since we often follow a loosely agile approach to building software, the overriding cause of customer frustration however is that when they use a version of the system sometime in the first half of the project, their immediate and dominating perception is of the performance limitations. No matter how much you explain that everything will get much faster by the end, that first impression is still formed, and it's a negative one.
I'm starting to think it might be better to design and build with the opposite choice as the dominating factor. You'd still have explaining to do for the customer: don't worry about bugs, we'll sort those out. (After all, you're always going to have bugs anyway.) But if the system is fast from the very first time it gets used and stays fast, then the customer is always on side with regards to being able to use the system efficiently. Increasingly, I believe we have very low tolerance for inefficient (read slow) systems, perhaps of our need to get faster.
Despite this going completely against new software development practices such as test driven development, my new software development meme is: get it fast, then get it right.