The problem with Yourstreet, I reckoned, was that in essence it was a business venture backed by a website, more than just a web application. It was a typical chicken and egg/necessary critical mass quandary: nobody is going to join if not enough people are already using it. It would have taken a serious investment is sales and marketing. We didn't really want to run a software company: we just wanted to code. But...
- Rule one: there's a lot more to programming than just writing code.
- Rule two: there's a lot more to software development than just programming.
- Rule three: there's a lot more to running a software company than development.
Any programmer should be rudely awoken by rule one when she gets involved in any non-trivial application. Violations of this rule are responsible for more than half of all curious perversions on Daily What the Fuck. Good programming is about being considerate for your co-workers, not showing off your skills just for the hell of it, and basically treating your work as if the next guy to maintain it is a homicidal maniac who knows your address. Writing code that works is one thing. Writing code that other coders can read and improve is a necessary feature of good programming.
Software development involves business cases, requirements, project briefs, planning meetings, progress reports, release schedules, deployment diagrams, service level agreements. Well, you get the point. Especially in smaller projects you can't avoid becoming involved in one or more of these chores that have very little to do with coding, or even programming.
All of the above still has to do with building and maintaining the product. Elsewhere in the building they're hiring new staff, replacing lightbulbs (and planning the resources for it), answering the phone. O yes, and finding people who might want to give you money in exchange for yourstreet.org. Rule three is about creating Joel's development abstraction layer.
I don't want to run a software company, I really don't. Not even one with a casual dress code and gorgeous female developers who like classical music. That's why our Scotland partnership broke up -- that, and my marriage, but this being a software blog I won't elaborate. I moved back to the Netherlands and started work for a company in Rotterdam.
Meanwhile I had all this Perl code and too much time on my hands in the evenings. So I decided to reafactor yourstreet into something that didn't require a sales force to reach critical mass and was something that I could see myself using. I started building a web-based CMS/file synchronization/version-management apparatus. Started it, and abandoned it.
Don't even think for one moment that a team of one (or two) developers can out-perform a team of 500. If you want to write successful software on your own, you have to keep it small, smaller, smallest. More about that next time.