Cal Henderson (of Flickr fame) gave a keynnote address at DjangoCon 2008 titled "Why I Hate Django" that is worth watching for many reasons. At one point during the talk he asks the audience to put up their hands if they were building a blogging engine. Nearly everyone did, which elicited the response to someone who wasn’t “Why aren’t you?”
I don’t really understand this need. Well, I do sort of understand. Most programmers have pet projects they’ve been working on, sometimes for years. The common thread with most of these is that they will never be finished. Starting things is easy and fun. Finishing things is hard and often painful.
It isn't a programming blog unless you write the platform yourself :)
This is a common sentiment. Spurred on by the success of Wordpresss, programmers seem particularly predisposed to believe they can produce something better, which is why there is no shortage of Google killers and failed social networking sites
You see this attitude at the code level too. There is a tendency for programmers to constantly rewrite things because “next time it will be better”. I’ve certainly suffered from this malaise—and believe me, it is a malaise—but I guess perfectionism is part of the programmer package.
The other part of this is the Not Invented Here syndrome. Programmers almost universally prefer code they wrote over code they didn’t. After all, you understand what you wrote. what’s more, it coincidentally behaves exactly like you’d want it to (or, rather, is has the promise to once you put a whole lot more time into it, time that never seems to materialize).
Apart from these obvious and universal reasons, I see several distinct motivations:
- To learn something new or just for fun;
- To compete with Wordpress or Blogger; and
- To use for one’s own blog.
Now I have no issue with (1). Code exercises are the best form of programming-related learning.
(2) can probably be ascribed to either extreme naiveté or hubris. As the list of Google killers and failed social networking sites should tell you: chasing the leader is usually a recipe for failure. As Zed Shaw said:
If you tell me that your social network will take on facebook because it includes baby pictures then I’m going to laugh in your face. They are an established player with CIA backing. You won’t wipe them out.
As incendiary as Zed Shaw was (and is) and as tongue-in-cheek as the above comment is, he’s right. A venture capitalist I met once said something along the lines of twice as good isn’t good enough. To be even considered a worthwhile risk, something has to be an order of magnitude better, faster or cheaper.
Fact is, the blogging problem is solved. That doesn’t mean you can’t do it better. It just means we’ve reached the point where it no longer matters.
This brings me to (3), the real crux of my argument. Time spent writing a blogging engine when you are a blogger (or aspire to be one) is time not spent blogging (or something else productive for that matter). But how much time is that?
The minimalists will argue not much at all. Take this comment:
The only real requirement to start a programming blog is to start generating content. It doesn't matter how you publish that content, but what your content is. You can use freaking plain text files.
While I agree content is king, I have to disagree with the rest. Where once the above might’ve feasible—even common—the world has changed. Blogging is a crowded space. Writing for its own sake can be rewarding and one can certainly hope that through some good fortune and grass roots growth, such a blog might one day be read by thousands or even millions. this is largely idealistic, anachronistic, pie-in-the-sky nonsense.
A modern blogging engine does an awful lot these days, including:
- Allowing designers to create templates that can be plugged in. At the risk of offending such minimalist plain-text purists but you’re living in the past. Presentation matters. There is a reason the Web isn’t just hyperlinked plain text (any more);
- creating navigation;
- creating site maps for search engines;
- allows commenting with protection from spamming;
- has syndication (ie an RSS or Atom feed);
- integrates with distribution platforms (eg Technorati). Distribution matters;
- allows third-party widgets (although personally I think this is of little value beyond the standard ones);
- and so on.
Now sure you could do each and every one of these things yourself (and more) but why would you bother trying to reinvent this particular wheel? Can you live without these features? Maybe, but why would you?
You should write a blog because you’ve got something to say. Doing so just because you think you might be able to make some money or make a name for yourself will lead you down the road to frustration , uninspired writing and probably failure. But I can tell you from experience that writing stuff people read is way more fun than writing things people don’t read.
I wrote Do Programmers Optimize... Life? because it had been on my mind and I got a kick out of (hopefully) providing an insight into my mental process (particularly to non-programmers I know) but thanks almost entirely to programming.reddit.com, over 13,000 have read it (according to Google Analytics) to date. I suspect—but can't confirm—that it garnered enough up-votes to make it onto at least the second page of the main reddit site or possibly the first.
And while this could’ve been written in raw ASCII, If your idea is worth spreading, then presentation matters. Sir Ken Robinson said:
Professors look at their bodies as a form of transport for their heads.
If you haven’t gotten it yet, presentation matters. A blog is not just an HTTP delivery mechanism for raw text. Your goal is to engage the reader.
Like Steve Yegge, “I'd love to read your blog”. If you’re going to write something then write something. Don’t waste your time figuring out how to implement RSS, hook into OpenID, stop spam with CAPTCHA and so on. If that’s your equivalent of horsing around in the tool shed for relaxation then knock yourself out but not at the expensive of writing something.