TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Wheel Reinventor’s Principles (2024)

213 pointsby TobLoef2 months ago

30 comments

sunrunner2 months ago
Like every single software development principle, this phrase really needs to be explained with more context and considered with more subtlety than the usual &quot;It&#x27;s best practice&quot; advice, for a number of reasons (some of which are stated in the article) of which I think the following two are the most important:<p>Firstly, if you want to actually understand how the &#x27;wheel&#x27; is invented then yes, you should re-invent it. The process of re-invention involves discovering what actually goes into some of the tools you use. Even if you never use your re-invented wheel in public (often advisable), the process of learning is invaluable in understanding the tools you do use.<p>Secondly, however, what wheel are we even talking about? The wheel is a timeless design, seemingly perfectly suited its task. The software libraries and tools that are usually picked as targets for &#x27;not re-invention&#x27; are not wheels. They&#x27;re higher level abstractions that pre-suppose certain ways of working. There&#x27;s no timeless design here, just a bunch of arbitrary desicions about how something should work at a higher level with some amount of the decision making you&#x27;d have to do without it already done. Is this a bad thing? Of course not. But understanding that all of the &#x27;wheels&#x27; are just this and are not magical black boxes that can&#x27;t be understoor or shouldn&#x27;t be looked at is important.<p>There are good times to not immediately go and re-implement *and publish* existing tools (emphasis on the publish, you should do things for learning), but understaning why you&#x27;re choosing to do or NOT do a &#x27;reinvention&#x27; is crucial.
评论 #43437310 未加载
评论 #43437209 未加载
评论 #43437674 未加载
评论 #43441259 未加载
评论 #43437696 未加载
JackC2 months ago
I&#x27;ll add &quot;reduce code size and complexity&quot; to the list of benefits. A python library to calculate a simhash, or track changes on a django model, or auto generate test fixtures, will often be 90% configuration cruft for other usecases, and 10% the code your app actually cares about. Reading the library and extracting and finetuning the core logic makes you responsible for the bugs in the 10%, but no longer affected by bugs in the 90%.
评论 #43435971 未加载
strongpigeon2 months ago
&gt; [...] Be wary of abstractions made for fabricated use cases.<p>Very well put and I would argue this applies to general software development. This is one of the biggest difference between my freshly-out-of-college self and me right now and something I try to teach engineer I&#x27;m trying to grow into &quot;seniors&quot;.<p>Too many time have I seen a lot of wasted efforts on trying to build hyper flexible components (&quot;this can do anything!&quot;) to support potential future use cases, which often never come to be. This typically results in components that don&#x27;t do that much and&#x2F;or are hard to use.<p>Design your components as simply as you need them, but no simpler. This typically gives more flexibility to grow rather than accounting for currently-not-needed use cases.
评论 #43439354 未加载
评论 #43438522 未加载
评论 #43439140 未加载
评论 #43438793 未加载
xipho2 months ago
In scientific software development &quot;don&#x27;t want to reinvent the wheel&quot; is an oft-repeated mantra that I like to push back on when I hear it. To be fair it&#x27;s often used in the context of &quot;we&#x27;d rather&#x2F;like to collaborate&quot;, rather than an appeal to use &quot;that exact thing&quot;.<p>Re-inventing things independently in parallel (parallel evolution analogies) is perhaps a strong indication that something interesting is going on. How do we know we got it &quot;right&quot; if we don&#x27;t converge independently? If we invent a square wheel, and stopped because &quot;wheel&quot;, we&#x27;d be in a horrible place. Science is a process, the process of reinventing is a great way to realize new things, and to train, at a low level, scientists. I suspect the process of re-inventing is also important in building out our (long term) ability to depend on our &quot;gut feelings&quot;, thus providing the ability to nudge us to experiment along one path or another.<p>[Edit ... all things the article mentions.]
评论 #43441302 未加载
评论 #43448880 未加载
0xbadcafebee2 months ago
More thoughts about reinventing the wheel:<p>- Did YOU invent the last wheel, or any before it? If not, then you will make the same mistakes the last inventor made. Until you make a bunch of wheels, you&#x27;ll probably suck at it.<p>- You learn more by studying old wheels than trying to bang one out yourself. Study the principles behind the designs rather than shooting from the hip. This is why we study medicine, science and engineering, and don&#x27;t try to invent new medicines, sciences, and engineering disciplines from ignorance.<p>- Novel-ness is only good when it fixes more problems than it introduces. Novel-ness introduces not only &quot;bugs&quot; from a new, untested design, but also the problems of changing people&#x27;s expectations, requiring new training, and possibly requiring all the other parts to change to fit the new wheel (which is often more work than just dealing with the old shitty wheel!). New things are <i>not</i> inherently good. Incremental change is almost always better, even if it&#x27;s <i>harder</i> because you have to struggle with all the existing limitations. Your job isn&#x27;t to do something easy, it&#x27;s to make a product better.<p>- Only after you make your new wheel will you find out if it&#x27;s good or not. Don&#x27;t go into it assuming what you have is better just because you like the idea of it better. In fact, the more you like the idea, the more you should question it; ego is a dirty liar. Kill your darlings and be prepared to accept others&#x27; judgement of the thing, and the reality of it moving on the road.
评论 #43437271 未加载
评论 #43439023 未加载
wcfrobert2 months ago
I find that for me to deeply understand something, I have to reinvent it. There&#x27;s SO many nuance not captured in textbooks or papers. I reminds me of the feeling of attending lectures by great teachers. Everything makes so much sense until you start the homework assignment.
jasonthorsness2 months ago
Creating a lighter, faster wheel that only works with sort of cart your company builds might invite accusations of “reinventing the wheel” but often it’s just “doing engineering”
评论 #43436026 未加载
Vox_Leone2 months ago
Most importantly, roll your own crypto!*<p>*<a href="https:&#x2F;&#x2F;www.schneier.com&#x2F;blog&#x2F;archives&#x2F;2015&#x2F;05&#x2F;amateurs_produc.html" rel="nofollow">https:&#x2F;&#x2F;www.schneier.com&#x2F;blog&#x2F;archives&#x2F;2015&#x2F;05&#x2F;amateurs_prod...</a>
the__alchemist2 months ago
I am a wheel re-inventor. Nice article. The _Specificity_ reason listed is usually the driving factor for me, with the others being downstream effects. In short, the wheels are often built for a different chassis than the one I&#x27;m using. Adapting these may be more difficult than making a new wheel.
评论 #43436137 未加载
评论 #43436747 未加载
roland352 months ago
It&#x27;s funny how often engineers say &quot;it depends&quot;! Even a basic axom like don&#x27;t reinvent the wheel doesn&#x27;t always apply. After all, we have entire industries dedicated to doing exactly that! Goodyear spends a lot of time investing in new wheel technology every year.
评论 #43435727 未加载
评论 #43435890 未加载
ozornin2 months ago
&quot;I am not reinventing the wheel, I am disrupting the wheel industry&quot; — TramSDK creator <a href="https:&#x2F;&#x2F;github.com&#x2F;racenis&#x2F;tram-sdk" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;racenis&#x2F;tram-sdk</a>
评论 #43435948 未加载
austin-cheney2 months ago
An often unintended benefit of reinventing wheels is vastly superior performance improvements, most of which are entirely unintentional.
pizlonator2 months ago
Great post!<p>If you&#x27;re a PL&#x2F;compiler&#x2F;GC hacker, then here are wheels you <i>should</i> reinvent in order to even just have a basic idea of WTF is going on in the Big Serious Production Wheels that you might end up being gainfully employed to maintain:<p>- Invent your own language, and write at least an interpreter for it, to get a feel for what makes a language work at all, or not.<p>- Invent your own compiler IR. Don&#x27;t worry if you make a bunch of mistakes. Don&#x27;t worry about whether you follow my advice for how to do it, or anyone else&#x27;s advice. Make it your own and learn from your mistakes.<p>- Invent your own way of doing the major compiler optimizations. Of course there are established ways of doing SSA conversion, CSE, constant prop, regalloc, instruction selection, etc. But you won&#x27;t know <i>why</i> they are that way unless you try to make your own, and then either succeed because you are smarter than everyone else (it&#x27;s possible that you are), or succeed because you literally reinvented the wheel (then you understand the compiler&#x27;s wheels better than your friends because you got there from first principles), or you&#x27;ll fail (most likely outcome) but then you&#x27;ll understand why the real wheels work the way that they do better than others.<p>- Reinvent memory management. Write your own GC or whatever.<p>That&#x27;s how I learned the craft. Can&#x27;t think of a better way to learn.
didgetmaster2 months ago
Reinventing the wheel often means breaking things. Innovation often requires getting rid of backwards compatibility. The status quo is promoted by those who have invested in it, so disrupting it can be met with fierce resistance.<p>When I tell people that file systems are antiquated and need to be replaced with something much better; I often get strong push back.<p>This is a wheel that I have been reinventing for some time. It&#x27;s not something that can be fixed with minor tweaks.
评论 #43436162 未加载
评论 #43436227 未加载
评论 #43436229 未加载
rikroots2 months ago
I decided to reinvent SVG Filters because Safari won&#x27;t let them be used with HTML canvas elements[1] ... well, at least that&#x27;s the official reason.<p>Unofficially I just wanted a decent filter engine[2] that worked well with my canvas library, and there were things like SVG &quot;filter chaining&quot; which I really liked the idea of - but could they be done in a simpler way[3]? Also: proving to nobody that canvas filters can be done (fairly) efficiently without the need for WebGL shaders (because: why not?). And then I discovered I really like coding up filter functions and went a bit mad with them[4][5] and now the hole is so deep the only option left for me is to keep digging ...<p>[1] - Though I think that&#x27;s changing this year? May already have changed - but I&#x27;m not gonna un-reinvent my filters even if the Safari folks have shipped the fix!<p>[2] - <a href="https:&#x2F;&#x2F;github.com&#x2F;KaliedaRik&#x2F;Scrawl-canvas&#x2F;blob&#x2F;v8&#x2F;source&#x2F;helper&#x2F;filter-engine.js" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;KaliedaRik&#x2F;Scrawl-canvas&#x2F;blob&#x2F;v8&#x2F;source&#x2F;h...</a><p>[3] - Why do the SVG filter primitives need to be so complicated to work with?<p>[4] - <a href="https:&#x2F;&#x2F;scrawl-v8.rikweb.org.uk&#x2F;demo&#x2F;canvas-007.html" rel="nofollow">https:&#x2F;&#x2F;scrawl-v8.rikweb.org.uk&#x2F;demo&#x2F;canvas-007.html</a><p>[5] - <a href="https:&#x2F;&#x2F;scrawl-v8.rikweb.org.uk&#x2F;demo&#x2F;filters-103.html" rel="nofollow">https:&#x2F;&#x2F;scrawl-v8.rikweb.org.uk&#x2F;demo&#x2F;filters-103.html</a>
rho42 months ago
&gt; Minimize third-party dependencies. Master the platform’s built-ins and accumulate your own toolbox over time.<p>I would like to work with this person.
评论 #43437373 未加载
turnsout2 months ago
There&#x27;s a big difference between &quot;reinventing the wheel&quot; and simply <i>making your own wheel.</i> People often conflate the two.<p>e.g. making your own static site generator is not reinventing the wheel. It&#x27;s making your own wheel, which is a perfectly cromulent use of time.
评论 #43436840 未加载
评论 #43436770 未加载
nuancebydefault2 months ago
The single biggest advantage of a self invented wheel is that you know how to use it. Most lines of code you write, because you know what they mean. Getting to know the pros and cons of somebody else&#x27;s wheel is often quite an investment.
jiggawatts2 months ago
I follow advice I heard decades ago (by I think John Carmack): Implement it yourself and then throw it away.<p>This is a great way to learn <i>why</i> libraries and tools like compilers are the way they are.<p>I practiced this in the late 90s by making my own 3D maths library and my own “standard” library.<p>I ended up using the built-in 3D maths in DirectX and the C++ STL in the commercial game engine code I worked on later. But having practiced on my own libraries helped me understand the standard ones a lot better.
amelius2 months ago
Should mention NIH syndrome.<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Not_invented_here" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Not_invented_here</a>
评论 #43435528 未加载
satiated_grue2 months ago
I think these folks, who reproduced the aircraft of the Wright Brothers using similar materials, methods, and tools, are a peak example of the value of reinventing as a path to deeper understanding.<p><a href="https:&#x2F;&#x2F;www.wrightexperience.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.wrightexperience.com&#x2F;</a>
dazzawazza2 months ago
&gt; Embrace the strengths of DYI. Create what you need and little more. Be wary of abstractions made for fabricated use cases.<p>DYI?
评论 #43435230 未加载
troman_dev2 months ago
I&#x27;m definitely a wheel re-inventor (in the educational and entrepreneur sense), and I&#x27;ve come across the same learning points myself. Recently, I just started blogging about my little wheels, and I think its been one of the most satisfying aspects of working on a project!
ikanreed2 months ago
This is what I want to do as an engineer, but I know damn well it&#x27;s a waste of time and money.
评论 #43436279 未加载
Lerc2 months ago
A lot of time I find myself reinventing the wheel is because of some framework that has decided that inverted catenary flooring is the future and their provided wheels are excellent for going in the standard use case direction.
um12 months ago
A little off-topic&#x2F;tangential it seems the real discovery or invention was the axle, or probably more specifically the bearing.
ian13212 months ago
When I was a CS undergrad, I used to love to write string libraries.
amelius2 months ago
But should I tell my boss that I&#x27;m reinventing everything?
评论 #43436515 未加载
bsoles2 months ago
The color contrast of the site, especially the background color and the font thickness (on android phone at least) is not good. Many visually impaired people would have very difficult time reading the content.
评论 #43436211 未加载
评论 #43436077 未加载
mrbluecoat2 months ago
Missing point: only reinvent the wheel when you control all the wheels<p>For large, complex systems with multiple developers this approach rarely works.
评论 #43436244 未加载