Wednesday, October 26, 2005

Lets go make some Corollas!

I know, I know, I've been negligent in my blogging responsibility. The world wants to hear my voice, but I lay silent. I apologize.

Today's topic is performance.

Nearly every developer is obsessed with making their applications go as fast as possible. I guess its a badge of honor to say we are faster than our competitor. Mine is faster, so I must be smarter.

Here's something you won't hear many people admit: My apps aren't fast.

I rarely use caching. I don't optimize every line of code.

But I will say: My apps are fast enough!

Most software engineers are busy designing their customers a Jaguar. Fast fast fast.

I like designing the Corolla. Economical to buy, reliable, and easy to maintain. Simple design, fewer tricks to speed things up, test, test, test.

I was recently reviewing an application with a developer who noticed that we are loading the same data often from the database. This data rarely changes, and if it does, its a big deal. Its a great place to cache the data on the server. Additionally, the server is set up so its not as scalable as possible, that needs to be fixed to make it more scalable.

My response: No need. 1st, every user that going to use the app is currently using it. We have scaled and it works fine. Secondly, those things all add complexity. If a bug is found, you have another layer to determine where the bug resides - Did it cache right? Did the session server fail? Avoid that complexity. The application is as fast as the users need. If the customer desires speed, we can work on it. Until then, no request, no complexity.

The moral here is that while its fun to build with the fastest, coolest techniques possible, they have a short term and long term costs. The challenge is building what your customer needs, not what you want. If the requirement exists for blazing speed, then design a system around that need, however there are costs to that performance. 90% of the time, reliability and low maintenance costs trump the speed factor.

The Jag might be faster than the Toyota, but they both go the speed limit, and the Corolla costs half as much, gets 35 miles per gallon and spends a lot less time in the shop.