On "Reinventing the Wheel"

I ranted a little bit on Twitter today about being told about things having been done before when expressing my ideas to others. I wanted to expand a little bit on that, because on Twitter there usually isn’t enough space to fit all of my thoughts. I tend to get a little wordier than I want to be sometimes. Anyway.

Essentially, what I wanted to say was that, when I have an idea, I usually like to express it to people in order to get their opinion on it. These are people I interact with usually on a daily basis. (I guess you can blame me for the disappointment then, because I opened myself up to it, but that’s not the point I’m trying to make.) The majority of them are supportive, but some of them respond with something like, “that sounds like [insert thing here],” or “that’s already been done” I’m not going to name people, mostly because I can’t remember who made these observations, but also because I’ve already forgiven them.

I also want to point out that I’m not talking about reinventing things like systems and frameworks—that ship has sailed. I’m talking about recreating high-level things, things that we don’t have ready access to the source code of, like Facebook or Twitter.

If someone had told Zuckerburg not to create Facebook because Friendster and MySpace already existed, the world would be very different right now. (Whether or not the world would be different for the better is an entirely different discussion.)

The thing is, developers love building things, even if it hurts us. We will spend countless hours exploring new ways to do things. It’s just our nature; we’re born tinkerers. If we are stuck doing the same mundane thing for a long time, we get bored. It’s a passion I haven’t yet been able to adequately describe, and definitely not as eloquently as Fred Brooks.

This is especially true for the young and maybe more shy developers, who have yet to learn how or may not be comfortable to argue against you. Do them a favor: let them play, learn and create something. Tell them it’s a cool idea and you can’t wait to see it in action. By creating something that exists, even if what they build is almost the same, they will come out of it having learned something useful.

I have finally learned that just because a thing exists doesn’t mean I am incapable of making a better version of it, especially if it’s not open source. When I was told that the things I had thought to create already existed, it discouraged me from pursuing them. Every time I gained the energy to restart the work, I remembered what I had been told and stopped working again. I restarted the same project at least four times. In hindsight, I ended up wasting more time after becoming discouraged because I didn’t even finish any of it.

I guess it’s just something to consider next time you hear someone say, “Hey, I think I might build this thing and I was wondering what you think about it.”