I recently built a blogging tool from scratch. No, I'm not joking.
The problem was I knew that even if I started off with a good off-the shelf solution (like Wordpress) I was going to spend a lot of time customizing it. For example, it needed to integrate with the existing authorization system and it needed to use the existing WYSIWYG editor. (No, I didn't reinvent the editor, but I had customized it. :-)) And it had a couple of extra (albeit minor) features that you don't find in a typical blog.
In the end, I think I saved myself a lot of frustration. Building a basic blog was easy. It's a well understood problem, and I had no trouble designing and programming the specific features I needed. I spent most of the time on the "custom" parts that I would have had to build into an off-the-shelf solution anyway. And that work was easier because I was starting from scratch rather than modifying an existing system.
I felt vindicated the other day when I came across this nugget in Robert L. Glass's Facts and Fallacies of Software Engineering.
Fact 19: Modification of existing code
is particularly error-prone. If more
than 20 to 25 percent of a component
is to be revised, it is more efficient
and effective to rewrite it from
scratch.