I recently read a review of a new Lotus (the car, not the spreadsheet), and the reviewer recalled the defining design tenant of Colin Chapman, who explained that his goal was always to “add lightness”.
This isn’t as straightforward as one might imagine in car design — we don’t easily give up all the conveniences we’ve come to expect over the years (radios, antilock brakes, windshields, etc.). Similarly, government regulations insist that our cars meet certain safety standards.
These are certainly good things for us and our automobiles, but they’ve resulted in a substantial bloating of our automobiles over the years. It’s simply easier to make a car safer by adding more steel, for instance. When the performance of the car suffers, it’s far easier to bore out the motor or add a couple more cylinders than it is to find and trim excess weight.
A typical sports car has a power-to-weight ratio of 1:10 or better (or 10 lbs. per horsepower). This means that if you want to boost the performance of your car by either adding power or reducing weight, this ratio suggests that adding 10hp would be roughly equivalent to dropping 100lbs. Which do you think is easier? How about if we make it 50hp or 500lbs? There’s simply no way you can remove 500lbs from a modern car without making some compromises, and/or incurring extra costs by employing exotic materials.
So why bother “adding lightness”? Why not just bulk up with a bigger motor? Part of the answer is the feedback loop you start. A bigger motor will itself weigh more, so part of its additional power is offset by its own weight. You’ll need bigger brakes to slow this extra weight down. Bigger brakes will call for larger wheels to clear the discs. Maybe a bulkier frame to accommodate the power. Beefier suspension pieces to deal with the extra weight. Pretty soon you’ve eaten up a fair bit of the power you just added, and the weight of your car is up dramatically.
The rest of the answer, though, can only be appreciated by driving a light car. Rather than rely on huge tires to grip the road and a huge engine to move you, a light sports car is quick because it’s light. A Lotus is more nimble, tossable, and agile than its competitors in large part because it doesn’t carry as much mass. There’s less inertia to overcome when changing directions, and the driver feels much more connected to the road.
There’s got to be a software lesson here, doesn’t there?
Indeed, there is. In our world, we add lightness by adding simplicity. Just as we don’t want to live without antilock brakes, nobody really wants to go back to running DOS or green-screen applications, but where are the places where we’ve accrued bulk unintentionally?
Do you remember your reaction the first time you saw Ruby-On-Rails, or maybe even MS Access? A simple approach to software can make us question how we ended up with all the bulk we see in many of our applications. How many lines of code exist simply because “that’s the way we always do it”? If you start simpler, can you do without some of the layers we take for granted?
How do you add lightness to your software?