Last week I attended the 37Signals “Getting Real” workshop where they indoctrinated the attendees on their parsimonious approach to building and running web applications. Getting Real is an exciting approach to software development currently largely practiced by Mac-toting revolutionaries. But rumours of folks building really useful applications and economically sustainable (hell, profitable) businesses on a shoestring has been spreading fast. And raising some interesting debates.
A suit in hacker’s clothing
I came prepared. I knew I would be walking in to the lion’s den with my spartan Thinkpad running Windows and Ubuntu. Sure enough there was an eerie sea of glowing white Mac logos in the conference room which reminded me vaguely of Wyndham’s Midwich Cuckoos. I surreptitiously covered the IBM logo with a white Apple sticker which came with my new iPod (a black nano). I don’t think I fooled anyone, but perhaps the monoclonal Applefolk gave me points for trying. Last time I had an Apple sticker was 1984, it came with an Apple IIe and was coloured like the rainbow. Now Apple, apparently, is all about black and white. Which strikes me as some kind of hommage to the 80s. But it also works – their products look great.
Given the call for “comfortable attire” I wore my Denis Savard hockey jersey. Number 18 for the Chicago Blackhawks, Denis was one of the most exciting hockey players of the last 3 decades. Montrealers are still bitter that we didn’t draft our homie back in 1980 given that we had the #1 pick that year. Anyhow, wearing the jersey was a nice change from business casual, and it allowed me to mix part of my culture with something relevant to Chicago.
So I’ve let the concepts percolate for a few days and here is what I found to be of particular interest:
“Craftsmanship is more important than ever” Craig from Devshop does a great job of explaining this concept which is pervasive in the 37signals culture. In an evolutionary software market where there are more choices than ever and they are all immediately accessible via the internet, software businesses will no longer survive and thrive because they were in the right place at the right time. Design matters enormously: the human factors of aesthetics, intuititiveness, and findability can no longer be afterthoughts. Simple yet powerful will rule.
Execution is paramount. Great design and cost effective organization are things that will set you up for success. Execution is required to drive it home. It matters HOW you work. Standup meetings, the ability to make decisions and move on quickly, the wilingness to get it wrong and then turn around quickly and get it right. The ability to spend periods of time concentrating without interruption. The strength of convinction to stick to what is simple and important, necessary and sufficient. After 4 years of running my own business and 7 years of startup involvement I agree that “ideas” are, while a great place to start, not worth the napkins they are written on. The brilliant and skillful execution of a particular idea is what counts.
Charge for your product. It is amazing that this needs to be said but with the heady success of YouTube and a few other internet lottery winners, we need to be reminded that there is reliable and repeatable value in developing something which people are willing to pay for, and collecting more money monthly than you spend on running the business. ‘Nuff said.
Design and deploy first, worry about scaling reliably and cost effectively later. Huh?
Scale the Rail.
I own a specialized consulting business which does outsourced 24×7 operations for web applications. Call it advanced or complex or custom hosting if you will, we spend a lot more time than most ops teams interfacing with our customers’ code and marketing teams. Our focus is the optimization of performance, reliability and scalability of web applications. The fact that we live and breathe this stuff daily establishes our credibility for the consulting work we do for larger online businesses. Worrying about scaling afterwards is what leads many such businesses to ask for our help in the first place. So I could hardly recommend building first, and worrying about scaling later (unless it was part of dastardly plan to create more business).
As with many of their claims, it starts to make more sense when you consider:
- They seem to be competent at building efficient code which helps a lot
- They are conservative about their features, avoiding anything computation intensive
- As they put it: “nobody is putting their lives in the hands of our code”
- They don’t charge much for their product which limits their liability to any given customer
- Scaling is kind of a champagne problem – it means you have paying customers!
So they don’t have don’t spend too much time on this aspect compared with other development teams. It seems they deal with issues as they come up and at worst have to optimize their code a bit more or add servers in response. Part of why their approach works is that they pick and choose the kinds of problems they are willing to solve.
That said, it didn’t take much looking to find Jason Hoffman of Joyent who is interested in scaling RoR. He offers an excellent presentation on the topic. The43things folks seem to have additional useful advice. I’m interested in anyone else’s experiences with this since we expect to be facing the challenge of scaling rails soon enough. I hope that our traditional methods will be equally effective with RoR.
At Syntenic we have 2 “secret” weapons that work in conjuction with code and server optimization. One, we measure the performance experienced by our web users, the other is the use of purpose specific hardware to offload all commodity layers (TCP, SSL, GZIP) from our customers’ servers to help them focus on application performance.
So the good news is that cost effective things can be done with suboptimal code, which lacks the characteristic 37Signals elegance. Take the e-commerce order form performance in the graph below. Every transaction is worth a fair sum and yet page load times during the ordering process (which is quite complicated) can drive customers away. By watching the network with a real user monitoring appliance we can measure the performance experienced by every user on the site and improvements experienced by users thanks to our optimizations and accelerators. Typically our customers can reduce the number of servers by at least twofold and improve the performance of the worst 15-20% of users tenfold. I’m interested to see how well this will work with a RoR application.
A lot of what was discussed was pretty specific to developing relatively simple web applications so if you work on bloated Microsoft-Office-like applications or real-time financial trading software, and are forced to release on draconian schedules, this advice may not be for you. If you need to build high value apps on a small budget with a crack team, and make money too, then your next step should be to get their book which pretty much covers it all.
I really enjoyed my first real trip to Chicago, special thanks to locals Stu and Josh for their hospitality. I’ve landed there 50+ times was starting to have a bad association with it because all I had experienced was O’Hare. It is clearly one of the great American cities (architecture, culture, history etc) and is surprisingly underpromoted in Montreal given that smoking in bars would be popular selling point to this demographic.
In summary, the workshop was much more valuable than I expected. It was small so you got to meet a lot of people. Jason, David and Ryan are engaging and passionate presenters, which helps when you spent the previous evening at an Irish pub. The Gleecher center facility was excellent and there was plenty of hot coffee. Wifi access and group chat added an extra dimension to the procedings. Highly recommended to anyone like myself who is embarking on some web application development projects and wants a refreshing take on how to build a business around smart and simple code. We’ve already started working on a project using the approaches learned here. If it works out, hopefully we will soon be helping our customers Get Real too…