Honestly? I think it's probably some combination of the following:
- It's a relatively well-known,
well-understood domain,
- It still hasn't been perfected (and
amazingly, it hasn't),
- It can be as simple or as complex as
the developer wants it to be,
- It's not too complex, though; most
devs can handle the basics,
- It can incorporate just about every kind of content the Web can deliver,
- It's a great way to continue developing one's skills,
- It's much more satisfying to use something
you built than someone else, and
- Who knows -- it might even make you
rich someday.
I'm definitely one of those developers, though. I admit it! And I'm a bad case, too, because I keep writing them over and over and over again, probably because I'd rather be coding than blogging. But the biggest reason, for me, is that the services out there really do suck (IMO), and it's hard to sit back and just accept that without imagining ways it could be done better. That's usually how it gets started.
I wrote a bit about this last year actually, after quitting TypePad (it just wouldn't do what I wanted -- i.e., 2, above) and rewriting the site I'm actually, right now, in the process of rewriting yet again, for probably the fifth or sixth time over the past seven or eight years, doubtlessly for the last time:
I could never shake the nagging
irritation I felt when I couldn't get
TypePad to do something I wanted,
however trivial. Why, again, couldn't
I search my own freaking blog? To
find an old entry, I had use either
the next/previous links (lame),
category links (assuming I'd bothered
to categorize the entry I was looking
for) or even worse, the proverbial
"archive" links, organized
descendingly as they are by date,
hoping I might get lucky and choose
the right month-year combo during
which I'd happened to submit the entry
in question. And why couldn't I just
create a new, non-blog-oriented page
containing some other kind of managed
content, like my reading list, or a
collection of movie reviews? Sure, I
could succumb to the rigid structure
of the TypePad system and simply "tag"
all movie reviews as "movie-review"
and dump them into the blog alongside
everything else -- but why should I
have to do that? I was an engineer,
for God's sake -- I'd done this
before. A blog was just CRUD -- a web
app in its simplest form. Why hadn't
anyone gotten one right, after nearly
a decade of requirements gathering?
Screw it, I thought. I'm going to do
this myself. Again.
Everyone's reasons are different, but most folks probably do it because they can. Spolsky said something about this a while back, in a podcast I think, or an interview -- something about how the first thing every Web developer wants to do is build an image-upload service.* Why? It's what they know. And it's something they'd use themselves, if it were done the way they believe it should be done.
To be fair, though, a good commercial blogging service? That's a hard problem. If it weren't, it really would've been done by now, and it hasn't. Not perfectly. Anyone can build a CRUD app for himself, select *, sort by date, done deal. Building a good, full-featured personal-expression engine, though, intended to serve hundreds of thousands or millions of users? Done right, that's a much more complicated undertaking than one might think.
* See? Told ya.