What's the difference between building a truck (a big 18-wheeler), and building a racecar? They have a lot in common. They both have very powerful engines. They both meet very exacting quality standards. They're both very complicated. But there's a different mindset that goes into each one. Let me table you:
Truck | Racecar | |
speed and handling | not important | vitally important |
weight and aerodynamics | not important | very important |
reliability target | months, years | one race |
maintenance costs | must be cheap to fix | not important |
fuel efficiency | very important | not important* |
You see a lot of trucks on the road. Building trucks is serious business for serious people. People who build trucks can be proud of what they're doing. But you'd rather drive the racecar. (Or at least a sports car.)
So, I'd like to apply the analogy to something closer to my field of interest, namely browser-based MMOs. When you're making such a beast, you have a choice. You can look at it like a web application (see: facebook, amazon, gmail...) or you can look at it like a game (see: mario, halo, starcraft).
My contention is simple: web-apps are the trucks of programming, games are the racecars.
Web App | Game | |
interface speed and handling | not very important** | vitally important |
cpu efficiency and network latency | not important | very important |
user accessibility, availability | 99.99 or better | 95? 90?*** |
maintenance costs | must be cheap to fix | not important |
bandwidth costs | important | not important |
I think you can take this analogy a lot further, to look at the people who work on cars and programs, to look at their tools and trends, etc.. Anyway it upsets me that we're building a racecar, but our engineering decisions seem to follow the current truck-building trends and best-practices. They're not appropriate to our business and they've put us in a world of hurt.
>:-(
*This is a guess. Maybe fuel efficiency is important for racecars? I don't really know.
**web page response times of 1 second are acceptable. If you press a button in a game and don't see a response within 0.5 seconds, the game has crashed.
***World of Warcraft goes down for 6 hours every week, on Tuesday morning from 5AM to 11AM. If KFPW went down for a (scheduled!) 2.4 hours every day and was fine the rest of time, that would be just fine with me. But can you imagine if gmail did the same thing?
Thank you for making such thoughts accessible to non-programmers. :) Even if they're very abstract, it's still really neat to get a peek into that world.
ReplyDelete