Building of Basecamp
A one word summary: “wow!”
Jason Fried, Ryan Singer, and David Heinemeier Hansson gave the presentation, each standing to offer something to the current topic. That approach worked very well. They fielded questions throughout the eight-hour workshop, and were very professional.
Virtually everything they talked about rang true for me, even their most controversial statement that denied the conventional wisdom of the usefulness of functional specifications. Jason was quite firm on this point, even in the face of some push-back from a few attendees. He believes (as do I) that one of the big problems with functional specs is that it gives a false sense of solidarity between the parties involved. The spec, which is typically a written document, can (and will) be interpreted in any number of ways by those participating, which means that when the document is approved, it is approved with different ideas of what it means by everyone involved. Thus, when the product is finished, there is disagreement about whether or not it actually meets the criteria given in the spec.
Instead of a functional spec, the 37signals crew recommends paper sketches and HTML mockups. These, being visual elements, are much easier for participants to relate to, and are more susceptible to immediate feedback regarding their accuracy.
I also really liked Ryan’s segment of the presentation, in which he talked about some of the design issues involved in the creation of Basecamp. He demonstrated the Yellow Fade Technique that 37signals introduced with Basecamp. He also emphasized the importance of semantic markup. This came up when asked what HTML editor they used—they replied, “vim”, and said that they prefer to write the markup themselves.
And then, of course, David talked about the implementation of Basecamp, taking it from the HTML screens mocked up by Jason and Ryan, and plugging the code into it. This was fascinating because he talked about the evolution of Rails. He didn’t sit down intending to write Rails—he was out to write Basecamp. But as he worked on Basecamp, he saw portions of the code that were reused frequently, and he refactored those pieces out into a separate framework. This framework eventually became Rails. He emphasized, as he did at RubyConf, that a “framework should be extracted,” not just built ex nihilo.
Then the 37signals crew treated me to dinner at “The Pink Door”, an italian restaurant in a dark alley with no sign… The restaurant was recommended by a native that we asked, but it still felt like we were entering a speakeasy. ;) It turned out to be a very nice restaurant, and the food was magnificent.
I was originally going to hook up with David and Dave Thomas the next morning, but my flight had to leave a few hours earlier than I had thought, so I had to skip out on them. And not having any way to contact them (I didn’t know what hotels they were staying in) I could only hope that they wouldn’t wait around too long for me. I’m not usually a flake, I promise!
Anyway, it was a great workshop. If you ever have a chance to attend a Building of Basecamp workshop, do not pass it up. Fantastic stuff.