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.
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.
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.
Agreed, I think the OP is missing the real meaning of the phrase "don't reinvent the wheel". The phrase does NOT mean "don't improve on the wheel". Nor does it mean, "The stone wheel is and always was great, don't try new materials." It means, "Don't create this whole thing from scratch thinking its original and new, when some research will reveal that it isn't." In patent terms, it means, "Check for prior art."
Linus Torvalds (OP's example) had a deep knowledge of Unix before he began what became Linux. If he hadn't such knowledge, he would have not been successful, for one of the great draws of Linux was its familiarity. In other words, he didn't "reinvent the wheel".
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.
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.
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!
I actually agree, and would probably downvote it if I saw it at +16 and it weren't my comment!
(Actually, is there HN etiquette on that? If I think a comment is ok, but doesn't deserve to be as high up as it is, can I strategically downvote it? Or should I up/downvote comments without regard to their present score?)
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!
I think there are people who have interesting ideas but who can't express them as well as others. The ideas may still be worth discussion. And of course anyone who doesn't want to comment doesn't have to.
Its a bit dissonant when a post is upvoted enough to be on the front page but the highest voted comment is about the post's style rather than content. The post upvoters were probably voting on content, not style.
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).
1. This was a response to a reply from a comment I made on a blog.
2. My grandmother has a Ph.D in linguistics and knows probably a dozen languages. Boy would it be hilarious for you to talk to her. I can't even mention how many times I've talked to her about how spelling and grammar doesn't matter as long as the point and idea is conveyed and UNDERSTOOD. She's even against spelling out of things like "though" and apostrophes altogether.
3. If my blog post put you off this much because I spelled "it's self" instead of "itself" and had grammatical errors when I was in a hurry to write a response to someone, don't read it.
4. Not saying I'm even 1% as smart as him, but saying my thoughts are disorganized is a compliment. Einstein and some of the smartest people of all time have failed at writing/english and always been known as "disorganized": http://25.media.tumblr.com/b9vfl4b63gnm701hGDPaIVP0o1_500.pn... -- his desk. Organized people bore me to death.
I'd like to address your third point right off the bat, since it's the most important one: I didn't read your blog post. I stopped reading it after you spelled "itself" as "it's self". And, just like you said, it's because your grammar put me off. It's not that big of a deal to me, and shouldn't be to you, if you never intended anyone to read your post except for the person you were replying to. But if that was the case, why put it on a blog? If you want your blog posts to have the widest possible appeal, you should use standard spelling and grammar. It looks better, and it's easier to understand. No matter what your opinions on the relative importance of grammar, things like readability and aesthetic appeal matter. And if your work is not of a technical nature and is being published for a wide audience - like this blog post - they matter even more.
I'm not sure what to make of your point about your grandmother, since I'm sure you're aware that there are plenty of people with Ph.Ds in linguistics who would disagree with her intensely. I'm sure that a conversation with her would be interesting, and she might even change my mind, but the fact that she has a Ph.D wouldn't factor into it at all. My personal opinion is that spelling, grammar, and other elements of style are extremely important. The way that something is written has a major affect on the way it is received by the reader, and slight variations in word choice and spelling can change the actual semantic meaning of a sentence.
Using the "itself"/"it's self" thing as an example: Their meanings are not identical. "Itself" is often used as an apposition, which is how it would have been interpreted in the context of your sentence. "Its self", on the other hand, puts extra emphasis on the "self". Someone might legitimately want to spell it this way to emphasize both the phrase and "its self", which would be the phrase's characteristics. It doesn't read as an apposition, though, so the meaning is different. This gets right to the heart of what we're talking about: Using incorrect grammar has changed both the stylistic emphasis and the literal meaning of the sentence in such a way that makes it harder for the reader to understand. The reader shouldn't have to reconstruct what you meant to say out of what you actually said. (And, in any case, it would never be "it's self". Even following your grandmother's grammatical rules, you should have cut out the apostrophe entirely.)
As far as disorganized thoughts, that's fine when they're in your head, but when you put them on paper, you have to organize them. Organizing thoughts is what language is for.
Sorry for the looong post, but I wanted to make sure you understand me. I don't mean to attack you personally, but that seems to be how my comment was interpreted. A criticism of your writing is not a criticism of you. The main point I wanted to make is that style matters. It really, really, really does. I know you didn't necessarily mean for your post to climb to the top of Hacker News and get this level of scrutiny, but I hope you found the feedback useful. Don't take it too personally when someone criticizes something you write; it's just an opportunity to improve.
Listen, you're still missing the central issue here. "It's" and "its" do not mean the same thing. Not even close. It's not like the distinction between "less" and "fewer" noted in the Stephen Fry video, where there's some sort of reasonable gray area in the usage. "Its" is a possessive form of it. "It's" is a contraction of "it is". So, this is what you wrote: "The phrase it is self is flawed."
Which is wrong. Full stop. This isn't being pedantic about grammar or usage. You used the wrong word. That's not something that you can defend from any kind of fortress of linguistic theory.
And, yes, we could figure out from the context that you meant to write "itself" or "its self". But we could also figure out what you meant if you wrote, "The phrase itsalf is flawed." The fact that we can decipher your writing is not the point. You weren't trying to employ creative, heterodox language here. You simply wrote the wrong word. And I think that you know that. You went back and changed it, as you would go back and change any other typo after it was pointed out to you.
If you changed it, why defend it? The correct response is, "Yeah, I wrote this in a hurry, and I used the wrong word." Don't get all umbraged and whatnot. Just fix it and move on.
My mother tongue is not English, but such silly errors are inexcusable. It takes a second to google the correct form. In fact, "it's self" put me off completely and I never completed the article.
So, IMHO, good spelling and grammar are essential to any discussion.
Such silly errors are entirely excusable. I would like to know more about all these commenters who are so up in arms about this mistake that they did not deign to complete the article. You would have been very unhappy people before English spelling was standardized.
I cannot imaging rejecting the substance of an article due to such cosmetic issues. I guess this is a consequence of the group here considering your postings on HN to be some kind of resume or CV. Colour me unimpressed with the herd.
Thanks! I don't read Hacker News often and when I heard the article was here and 2 of the top comments were about my grammar I thought "and that's why I never read Hacker News". I was actually excited to see some discussion around the subject matter. I was pretty disappointed by all the talk about my "engrish".
Hmm. I use a password in the similar vein of 1Q@w3E$r
You can most assuredly figure what it is, and the stupid pattern I follow.
Now, one thing I failed to remember is my girlfriend is dyslexic. Unless she hunts and pecks one key at a time, she cannot read, or even comprehend, that password. L33t is also the same way: its unreadable to her. Though, one really cool thing about her dyslexia is we can read the same book together: I read it right side up, and she reads it upside down (she reads faster that way too).
I agree :) and yes, but apparently because I spelled itself like it's self they were too stupid to read the article. Funny how many of these people can read code, but can't figure out what I meant from it's self.
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.
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."
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.
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?
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.
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.
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"
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.
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.
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.
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"
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.
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"
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.
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.
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.
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)
From the perspective of an individual, fixing a systemic flaw is going to take much longer than just operating within it. There are cases where "reinventing the wheel" is just the best way to go.
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.