If you re-invent the wheel and try to use it as a component of a more complex system, by far the most likely outcome is that you'll discover that your novel wheel has some interesting failure modes that you hadn't considered.<p>Hence, if you need a simple database for your desktop application, using sqlite is a better option than trying to cobble together something similar using your own special hash tables and b-trees. However, trying to do the latter will certainly help you understand a quite a bit about database architecture.<p>However, many people who say 'don't re-invent the wheel' are really saying 'you're just a worker bee and so you don't need to know anything more than how to operate this here machine' - and that's a trap, as you're then not developing your skills and knowledge to a higher level.
Like anything in life, context is everything.<p>This "Don't reinvent the wheel" thing comes from the observation some people (software engineers in this case ) tend to spend a huge amount of time ( aka money ) creating things that were already created AND could just be used by them. It's a very valid point, especially when you have to pay salaries every month and don't have a money printing machine.<p>However.. the motto is also used to justify mental laziness and protect egos from ignorance.<p>People learn by doing, you can read all the books you want and you'll be a very competent parrot but you'll never really know. The question is, what do you choose to know and what to you choose to parrot? Since time is finite (for you ).
<i>> Diversity, then, means voluntarily accepting that not everything be optimal.</i><p>I think a better mental model is to accept that <i>optimal is contextual</i>, i.e. it depends on the environment on which you build your gadget.<p>Diversity happens because the environment is not homogeneous, so each region produces local forms optimally adapted to its niche conditions - and some generalist forms that work well in a large range of conditions without beint optimal at any of them.
I have reinvented the wheel.<p>My 'reinvention' could be considered as swapping the 'bearing bits' around a bit if you wished to mock my efforts. I was only interested in one particular application, the goal to reduce the parts count, to make servicing easier and to have a lighter/stronger product.<p>As a thought exercise I highly recommend reinventing the wheel, not for the sake of it but to solve a real world problem. For instance, if people struggle to use your widget and assemble it incorrectly. Or if regulatory and safety requirements have made the original design somewhat cumbersome.<p>We live in a great time for reinventing the wheel with open source CAD tools and 3D printing making it possible to create a functioning prototype.<p>You can also check your homework to see how far others have got. Patents relating to wheels are what you might call numerous, however, with first principles thinking and an in depth understanding of how it works there is the possibility to devise something that is actually novel, even if it is just swapping a few 'bearing bits around'.
I don't like how this article wants you to waste time getting tripped up and frustrated with basic problems just for the sake of figuring it out on your own. There are major companies doing research on wheels in a variety of contexts and constraints (trains/planes/automobiles). The folks involved all likely have engineering degrees which taught and challenged them in more effective ways than just having them sit down and reinvent wheels on their own for 4-8 years.<p>>You should reinvent the wheel because it’s fun.<p>Passion is great, but it can wax and wane because we're humans, and that's where discipline keeps you moving forward so you don't drop out of reinventing wheels and waste all of that time you invested because it stopped being fun one day.<p>Discipline means you block out some time, do a wheel iteration knowing it'll suck to do and it isn't fun, then forget about it.<p>Only the luckiest people constantly have fun with a subject and then actually contribute to the state-of-the-art.
I know of at least 3 times, off the top of my head, that the literal wheel was successfully and usefully reinvented in the 20th century alone. People saying "don't reinvent the wheel" to talk others out of their project ideas is one of my biggest pet peeves.
For me this is how I learned mathematics up until university. By just going unprepared to exams or doing extracurricular competitions and then "inventing the math" in the exam. In the case of competitions it was a bit more fun than exams which would still just be testing one or two ideas with a few examples but still it is in my opinion the more fun way to go about it. All these kids who were memorizing things, or studying the thing to death, a lot of them had trouble understanding what it was that they were doing.
Often people think something is a wheel when it is rather more of a pulley. My experience has taught me to avoid this saying because the real questions are:<p>- Do I gain anything valuable (including knowledge) by doing this myself<p>- do we have the investment to do so (time and money)<p>Too often when this phrase is evoked it's because folks want an engineer to simply wrap and extend when the proper thing to do sounds a little too expensive.
I agree about re-inventing anything. What people really mean when the say "don't reinvent the wheel" is "don't copy the wheel":
<a href="http://move.rupy.se/file/wheel.jpg" rel="nofollow">http://move.rupy.se/file/wheel.jpg</a>
You can reinvent as many wheels as your heart desires when you're in your own home, but when you're at work, just go take a wheel off the wheel shelf and get on with your day.