Code is the easy part

37signals gets a lot of flack in blog comments and elsewhere from people who probably aren’t as good, and likely have serious self-esteem issues. I disagree with the haters in all cases. The 37signals folks almost always say exactly what I meant, only better and to a much larger audience. A fun thing they’ve begun doing on their Signals vs. Noise weblog is to post some of the highlights of recent Campfire conversations. It’s another good idea I’ll probably copy here.

And speaking of copying…

One of the Campfire items mentioned was a reaction by Jamis Buck to someone suggesting that developing Basecamp was easy…

A forum poster wrote, “We might just use one of our coders and designer to make a clone of this project manager to be used on our own servers. It would just save us the hassle.” Jamis: “hahahayah, just whip out basecamp in an afternoonhow hard could it be?”

When Basecamp first lauched I was immediately in love. It was just so damn simple! We were using an Issue Management System I wrote in ColdFusion back in 1997 and it was showing its age. Before signing up, I wanted to take it for a few laps. Overall, Basecamp was perfect. There were, however, some critical (for us) features missing or implemented in a way I didn’t care for (File uploads, inline image display and notifications, to name a few). So, I set about to culling the best ideas from Basecamp and writing my own version of it for internal use. This was on a Friday evening. Monday morning **I had built 80% of the existing Basecamp feature set**, and added inline attachments, configurable permissions, better To-dos and a nifty email notification system – in three days and in PHP no less! (Let’s pretend for a moment that I didn’t spend the next week or two tweaking and debugging. I did say 80% right?)

Was I able to do this because programming is easy? Nope, it’s hard – at least doing it well is hard. Was it because I’m a programming genius? Nope, I’ve seen Jamis' code and he’s a far far better programmer than I’ll ever be. The reason I could do it is that 37signals had done the truly hard part – _designing the damn thing_. I don’t mean visual design, but interaction design. The way they planned features and implemented the majority of them was (and is) brilliant. What they knew to leave out was even more so.

I’ve learned a lot from those guys, but I think maybe I’ll just subscribe to their products from now on and be done with it.