I’ve been thinking about web application frameworks. These days we are both blessed (and perhaps cursed at times) with a richness of choice. This abundance reminds me of a scene from Moscow on the Hudson where the main character (Vladimir Ivanoff played by the amazing Robin Williams) goes to a regular American supermarket isle for coffee and has a mental breakdown due to the vast choices on the shelves. He’s a Russian defector that had only one coffee choice in Communist Russia, and now there’s just too many options.
So how does one avoid the analysis-by-paralysis break down that vast choice of frameworks present? One approach is to use a logical approach choosing something that is “boring, old, and popular”. This approach is perfectly reasonable for a work related project. But what about a personal project or experiment – how do you choose a framework to learn for that? It has to be something that gives you some spark of excitement – doesn’t it?
The main Ruby on Rails page speaks of “optimizing for programmer happiness.” I love the “optimizing” part since it makes sure to remind you that you’re speaking to a rationally focused audience. But what is “programmer happiness” and how can a framework provide this? Or better said, how can I recognize that a framework has this very personal component for me – this elusive feeling thing called ‘happiness’?
For me as an engineer, the term “happiness” is a bit too fuzzy and perhaps that is the case because I’m in “feeling” territory rather than “thinking.” How do I identify this feeling, this joy component that the RoR page speaks of?
There was a moment a few days ago where my car, my 4Runner, provided the answer (yes – I know – I suppose that it is a guy thing to find an answer in a car).
So it all starts with my history of cars. My first car was a Chevy Chevette that I bought using some very hard earned paperboy money. The Chevette was a somewhat terrible piece of crap that leaked rainwater into the driver side compartment. The final act of Chevette crappiness came in the form of the engine seizing at highway speeds. So if there were a “car owner happiness” scale – it would have been a -5 (on a scale from 0 to 5).
After the Chevette, there was a cavalcade of cars including a Chevy Malibu (my last American car) that bled to death when its transmission case cracked during a nasty East Coast winter storm. Then there was the Honda Civic (super-reliable but blah), the Acura Integra (super-reliable and slightly less blah on the joy/happiness scale), a used Isuzu Trooper (the SUV equivalent of the Chevette in terms of reliability and crappiness…I had weekly visits to the mechanic with this 4WD disaster), a very used Lexus ES 300 (engine blew up a year after purchase; it had an amazingly smooth ride but everything on that car cost 4 times as much as a regular Toyota) and finally the 4Runner.
I bought the 4Runner with one hundred and thirty thousand miles, and it has served me well for almost a decade. The one mistake that I made was not getting four-wheel-drive, but that’s on me, not the car.
For the past few days, I’ve had to switch cars with my wife due to a home renovation project. She has a zippy Prius that can run circles around the 4Runner in terms of maneuverability and fuel economy.
So there’s this one day when I come home and see the 4Runner on the driveway. There’s this momentary internal (nice) sigh with this “I really like this car” feeling. I look at it, and I see this “real life” version of a toy car that I used to play with as a child. And at this joyous point, I remind myself that this car is mine. It’s this odd momentary joy that is hard to put into words.
I think that when I look for a web framework for personal projects, I need to find the sigh…I really like this framework feeling. This is programmer happiness and joy – isn’t it? Now this is not to say that my 4Runner doesn’t have issues (like the lack of the 4-wheel-drive and all the bumps and scratches of a used car) but that joy…that joy is still there when I step back and take a look at this vehicle. I need to find a similar vehicle for code – a vehicle that gives me the same feeling as the 4Runner.
I need to find my 4Runner of frameworks.