A few years back, I found myself learning carpentry, as part of a large-scale Burning Man project I was working on at the time. (Carpentry, I should probably mention, is where you build things out of wood instead of bits.) I was lucky enough to have help from a friend, who was an expert on the subject. When we got to a part of the project that required drilling, he pointed out that the drill that I had wasn’t up to the task. The drill actually belonged to my girlfriend, which tells you how much of a handyman I was at the time. We went to Home Depot to remedy the situation.
Walking through the drill aisle in the tool shed, we looked at the options available. Each successive drill was a step up in price, strength, and features from the one proceeding it. Toward the far end he put his hands on a “cordless Milwaukee hammer drill”:http://www.homedepot.com/webapp/wcs/stores/servlet/ProductDisplay?storeId=10051&productId=100019095&langId=-1&catalogId=10053&ci_src=17588969&ci_sku=100019095&cm_mmc=1hd.com2froogle-_-product_feed-_-D25X-_-100019095. “Oh hell yeah,” he said as he hefted the demo unit, “now we’re talking. 460 inch-pounds of torque.” His eyes lit with a fiery passion as he spoke. “This bad mother can drill through concrete!”
I have no idea what an inch-pound of torque is like, let alone 460 of them. Nor did I anticipate any need to drill through concrete in my future. But I bought the drill, even though a less expensive unit would have sufficed for the task at hand. Why? I recognized that look in his eyes. Even though this guy had never touched a computer a day in his life, it’s the very same look I see in the eyes of my fellow programmers as they talk about some amazing new software tool that they’re in love with.
The right tool for the job is a joy. More than just the right tool; a tool that solves the problem effortlessly, with power to spare. It makes you want to use it. It makes you look for problems you can solve with it.
This is what Rails is like for me and many others. People throw around numbers like 3x productivity gain, or 5x productivity gain. Are those numbers accurate? Well, yeah - but not for quite the reason you’d expect. Rails saves you time over PHP or JSP, sure, but that’s not the whole story. It’s that it makes the process of developing web application such a joy that you want to do, you’re happier doing it. You spend more time in a coding frenzy and less time sighing in frustration.
That’s a huge part of my motivation in creating Heroku. The one part of Rails development that has consistently been anything but joy is setting up development environments, and (worse) deployment. These aren’t programming, but they are necessary steps in the process to having a working, public application. My personal goal here is to bring the same level of joy to deployment as Rails bring to the rest of the process.
I still use my drill from time to time, and every time I do, it puts a smile on my face. I’ve not once drilled through concrete. But I’m happy with my purchase all these years later. A tool that makes me happy, makes me productive.