Reinventing the wheel for fun but no profit

Everyone in programming knows about not reinventing the wheel. Everyone I've ever worked with professionally knows to check if there are decent libraries or applications available that do what you want before deciding to build it yourself. Some things are so commonplace that you'd never think of reinventing it yourself.

Blogs, databases, wikis. Tons of implementations exist, and you'd have to spend some serious amount of time on it in order to make something better than what's already out there. Sure, you can pick one particular trait and improve on that, which will give you a good reason to release your work out in the wild as a viable alternative, but outside of that scenario, there's just very little reason to build something that's already been invented.

But that's ok! Nobody ever said that you're not allowed to have fun, and if your idea of fun is reinventing the wheel, then you should absolutely go for it. I for one have been having tons of fun writing my own wiki lately. It's fun because it forces me to think about how common problems with wikis can be solved. I usually think of a solution randomly, and then while coding it I notice that my solution ends up being slightly different from existing wikis. And then I realize that that's for a reason, and my design wouldn't have worked. Of course at other times I end up implementing the 'right' solution on the first try, and I get to put on my smug face.

There's another advantage of homegrown never-to-be-released designs, although I'd never flaunt this bit of wisdom professionally. You get to integrate your 'wiki' in incredibly nasty ways with whatever else you're building. After all, if you're building for fun, why bother making it a generic package. Releasing yet another wiki would be a crime against humanity anyway, so don't even think about it. Instead, just keep building and have fun. While you're having fun, you might stumble upon that one brilliant idea that no other wiki has yet, and you can start a new project which implements that idea cleanly. But the mind needs a playground, a free area where it can do what it wants. Reinventing the wheel is a great way to learn.

(Fun, like chocolate, should be used in moderation.)

Posted in Tech | Tagged