

Don't Reinvent the Wheel - brennannovak
http://oscargodson.posterous.com/dont-reinvent-the-wheel

======
tarunkotia
I think what the author is talking about is redesign and not reinvention.
According to Wikipedia "Reinventing the wheel is a phrase that means to
duplicate a basic method that has already previously been created or optimised
by others". What I understand and interpret is "method" implies "concept".
Reinventing the "concept" of wheel does not make sense especially if your end
product is not wheel but a car. The connotation here is more do with the focus
than improving the current solution. If you fundamentally want to redefine the
rolling motion of wheel with something else then I think the phrase applies
more appropriately.

~~~
vog
I fully agree with this.

Moreover, the phrase "Don't reinvent the wheel" is not meant to stop you from
reimplementing stuff. I just means that you should have a close look at what
already exists before reimplementing it, so you don't follow the path of
trials and errors that others have already gone for you. The best sign that
someone reinvented the wheel is that the "new" stuff is completely inferior to
what already exists. And this appears to happen quite often.

So in my experience, the phrase "Don't reinvent the wheel" is merely meant to
counteract the NIH syndrome.

------
rmoriz
Don't reinvent the wheel if you have no clear reason / vision to do so.
Period.

Also most "re-inventions" are driven by a lack of understanding of the
existing solutions or the non existing faith to stick to conventions. Many of
the conventions are probably a legacy and should be "attacked" BUT if you do
that, have a clear vision and reason to do so. Just don't go the road because
it looks easier. It won't.

~~~
abstractbill
Reinventing just about _any_ wheel will at least teach you a lot about how
that type of wheel works, even if your reinvention never makes it into
production.

~~~
smhinsey
This is my standard MO for learning big new ideas. Say for example I want to
use MVC for the first time. Once I think I understand the general idea, I will
build my own. I might peak at Rails or Struts or whatever to see how they
solve something, but in general I just go my own way. Once I have something to
approximately proof of concept level, I feel ready to go out and evaluate
existing options with a pretty high level of confidence in my conclusions.

------
_delirium
It's nitpicky, but the second time I saw "itself" written as "it's self" I
cringed extra-hard.

~~~
slewis
Its a good point but less relevant to the discussion than some of the other
comments here, and currently has 3x the points of all other posts in this
thread.

Don't just upvote just because you agree, upvote because a post contributes to
the discussion!

~~~
pemulis
I'm not so sure...

When a blog post has basic grammatical/spelling errors, it means that the
writer didn't bother to do any significant copy-editing. If the author can't
take the time to copy-edit their post, why should we take the time to read it?
The presence of obvious errors sends a signal that either the author's
thoughts are disorganized, or he doesn't take them seriously enough to make
sure they're expressed correctly.

Disclaimer: I'm an English major, and I mean this as constructive criticism!

~~~
weaksauce
I agree with you; however, it's also possible that English is not the posters
original language.

~~~
vog
In that case, it is even more important to do some basic proofreading. Or ask
some fried to do so.

~~~
hammock
When the same mistake is made multiple times, that's an indication that it's
not a proofreading error - instead it points to a poor understanding of
English (and maybe other things).

------
kleinsch
In the context of startups, I think reinventing the wheel makes sense when
it's your primary product and you can do better than what's out there. Most of
the examples listed in the article fit this. If it's what you spend all day
thinking about and working on, you're probably better suited to reinvent it
than anybody else.

Reinventing the wheel doesn't make as much sense for something that isn't your
core product. For example, if you're trying to create the next personal
financial webapp, it may not make sense to embark on a project to create a new
JavaScript AJAX framework or message processing queue, since those aren't your
product and there are a bunch of decent libraries already. There are
counterexamples to this (Ruby on Rails), but in most cases, startups with
limited resources need to take advantage of existing libraries/systems as much
as possible. Reusing existing technology frees up more time to worry about
your core product.

~~~
oscargodson
100% agree and a point I was _trying_ to make. This whole thing was a response
to a reply to a comment I made. I had made a comment that the library they
were doing a tutorial on was stupid because it could be done better and I
could do it better. They then told me not to reinvent the wheel since it was
already done by "geniuses". But yes, exactly.

I use jQuery, but I usually write my own plugins. Id never been able to write
a library like jQuery on my own, or in any reasonable time frame, but I can
write a slideshow for example in the same amount of time it takes me to find
one that works for the project, read through the docs, read the API and
implement it. But to some, and some past clients, thats stupid and im
"reinventing the wheel."

Thanks for the comment!

------
6ren

      For example, in programming there is a wide-spread 1st order theory
      that one shouldn't build one's own tools, languages, and especially 
      operating systems. This is true — an incredible amount of time and
      energy has gone down these ratholes. On the 2nd hand, if you can build
      your own tools, languages and operating systems, then you *absolutely
      should* because the leverage that can be obtained (and often the time
      not wasted in trying to fix other people's not quite right tools) can be
      incredible.
    

Alan Kay
[http://webcache.googleusercontent.com/search?q=cache:fPHDWbw...](http://webcache.googleusercontent.com/search?q=cache:fPHDWbwm5E0J:http://www.viewpointsresearch.org/pdf/m2004001_power.pdf+%22build%20ones%20own%20tools%22)
<http://www.viewpointsresearch.org/pdf/m2004001_power.pdf>

~~~
oscargodson
And, how would one learn how to make their own tools, languages, and operating
systems? You have to build them to learn how. So how does one build them
without ever having built them?

------
dawkins
The good thing about reinventing the wheel is that you can get a round one.

\--Douglas Crockford

~~~
InclinedPlane
Go ahead and reinvent the wheel if you think you can do a tremendously better
job of it. Generally speaking if you don't have confidence that you can sell
your wheel to the public at large on its own merits then you probably
shouldn't reinvent it.

------
terryjsmith
Totally disagree. I don't think I've ever heard this phrase used when
someone's primary intention is to make a better wheel. If you're building
cars, _do not_ try to reinvent the wheel. Leave it to someone who is all about
wheels.

Which is my main beef with this article: when it comes to developers, you
absolutely can reinvent a piece of technology, but if it's not the focus of
your business, you need to be prepared to make it your focus if it's really
that important or that big an opportunity. There are a ton of great examples
of technology being reinvented or improved (see HipHop from FB and FlockDB
from Twitter), but they tend to represent a marginal plus to the business and
are still not their core focus. I hate it when developers want to create their
own database for their app, their own game engine for their game, etc. Wheels,
game engines, and most software is a full time business, not an adjunct. Just
use what's available to you until you absolutely need to do it over or do it
yourself.

------
hardik988
The author is taking the phrase too seriously. I think he has a problem with
people misusing or over-using the phrase. I think don't reinvent the wheel is
a great phrase when a particular action is futile with respect to a much
bigger goal, and is often due to the negligence/naivety of the person who's
not supposed to reinvent the wheel.

When I was working on my undergraduation project and building a chatbot, I was
trying to make it smart by querying Wikipedia. I started writing a web scraper
since I had no idea how else to do it (I was new to web programming at that
point since I was a total C++ freak.) My prof told me, "Don't reinvent the
wheel. Use the MediaWiki API or something like Beautiful Soup"

------
colinhowe
Agree with the post but it's ignoring the countless number of people who
decide to write their own library for X that adds _nothing_ beyond what
anything else already does.

Don't reinvent the wheel. Do invent a new type of wheel with more awesome.

------
Rhapso
The Wheel re-invented: <http://boingboing.net/2009/12/18/sideways-rolling-
omn.html>

And that is just an example.

If your goal is to make money the exact same way the man before you made
money, then do not re-invent the wheel.

If you want to change the world, then try and make a better wheel.

~~~
ignifero
They did not reinvent the wheel, they invented a new thing that reminds of a
wheel. I can't believe we are actually arguing this post. Basically, it stems
from the misuse of the word "reinvent" in the media instead of "revolutionize"

~~~
Rhapso
You are right. That is a better way to think of it.

------
dpcan
On one hand, he says he hates the phrase, but it doesn't look like he hates
what it means - or maybe he doesn't understand what it means - I'm a little
confused by the take-away from the article.

That being said...

Re-inventing the wheel should mean throwing away everything we know about the
wheel and inventing something that solves the same problem - only better.

~~~
oscargodson
I said, and mean "Reinventing the wheel is what makes good developers legends,
not the other way around. Remember that." And i never said i hate what it
means, ever. I said I hate when people say it as a bad thing.

------
RBerenguel
I guess an old post from my blog is relevant (I think it was already submitted
to HN a long time ago): [http://www.mostlymaths.net/2010/03/8-reasons-for-re-
inventin...](http://www.mostlymaths.net/2010/03/8-reasons-for-re-inventing-
wheel-as.html)

------
threepointone
relevant - [http://www.codinghorror.com/blog/2009/02/dont-reinvent-
the-w...](http://www.codinghorror.com/blog/2009/02/dont-reinvent-the-wheel-
unless-you-plan-on-learning-more-about-wheels.html)

------
Be-The-Water
I don't think it is just about improving, reinventing or redesigning
something. Each problem has its own issues and maybe different in enough
unique ways that its better to start from scratch every time so you solve the
problem fully with out being trapped by another solution. Then decide to pick
up a well known tool or make your own that fits.

I think this saying is an unfortunate one and becomes more misleading as newer
and newer "wheels" keep coming out.

------
kapitalx
The saying refers to the roundness of the wheel, which has not been re-
invented for thousands of years. Changing the material are optimization which
deserve much credit but aren't new inventions on the definition of the wheel.
Wikipedia defines a wheel as "A wheel is a device that allows heavy objects to
be moved easily through rotating on an axle through its center"

------
sbochins
Generally when people use that phrase, they mean don't recreate something that
has been implemented if you are not going to make it faster, more modular,
contain more features, etc.

Saying that developing GIT is reinventing SVN seems problematic. Both are very
different version control systems. GIT isn't simply reimplementing what SVN
does.

------
dstein
What I have discovered is the more you learn about any particular technology
the more you fully understand its weaknesses and limitations. If you learn
enough you eventually get so frusterated that you have no option other than to
sit down and start over from the beginning.

------
abbasmehdi
This is one sided, there are many instances when people repeat the same
process over and over again to get to get the same results. Improving
something is not reinventing the wheel, building the exact same thing over and
over again is.

~~~
KeithMajhor
If it takes less time to do it again yourself than it does to find and
understand someone else's solution is that so bad?

~~~
abbasmehdi
That's a systemic flaw, not a justification for redundancy.

~~~
spc476
So I guess writing a DNS resolving library wasn't justified, even though it
dropped the memory footprint from 15M (when using C-Ares) to 400k (a bit more
information about this here: <http://news.ycombinator.com/item?id=2324428>)

~~~
abbasmehdi
Reinventing the wheel, not making a better wheel.

------
gruseom
_Is there anything more reinvented than the wheel?_

This line is brilliant. How often does one run across such a definitive reply
to a shibboleth?

~~~
3am
That's not what a shibboleth is.

~~~
gruseom
My usage is a well-established if secondary meaning. See for yourself:
<http://www.merriam-webster.com/dictionary/shibboleth>,
<http://dictionary.reference.com/browse/shibboleth>,
<http://www.google.com/search?q=site:wikiquote.org+shibboleth>, even (selected
at random from project gutenberg texts)
<http://www.gutenberg.org/files/356/356-h/356-h.htm>. Can you find a better
word? I'd happily replace it, but I can't think of any other that means a
platitude that happens to be false.

Just to get back on topic, I'm disappointed that no one else seems to
appreciate the beauty of oscargodson's question. It's one of those things that
is dope-slap obvious, but only once you see it.

~~~
3am
Right on both counts! Consider the upvote my atonement for being overly and
not entirely correctly nit-picky.

------
hanifvirani
Don't _reinvent_ the wheel. But by all means, upgrade and evolve the wheel.

------
ajaimk
Sometimes, reinventing the wheel works. Literal Example: the Dyson ball.

------
sagarun
well said, if we didn't reinvent the wheel, we will be having just one type of
wheel!

------
dotcoma
So, this is a top5 post on HN?

>The phrase it's self is flawed.

itself. I stopped reading there.

