What is wrong with reinventing the wheel?

I also would like to note here that apparently (I haven’t really checked it yet…) the game company Blizzard makes their own tiny engine from scratch each time they make a game… Don’t know how they do it though…

Right. But that is improvement as opposed to reinvention.

Hi

In my humble opinion, reinventing the wheel is acceptable for learning purposes, it allows to understand some concepts, how things work internally. It can take a lot of time. Therefore, you should wonder how deep you want to go and evaluate your priorities before doing it.

I’ve found an extremely poor first person shooter on Sourceforge recently (yes, poorer than mine) and I am annoyed because its creator has the “not invented here” syndrome and he overpraises his tiny editor. His source code is almost fully undocumented, his software renderer is extremely slow, you have to extract a directory to make it work, he is proud to claim that he uses neither OpenGL nor Java 3D. Sometimes, some people should keep cool and humble. When you start from scratch, your wheel might be a lot worse than existing ones and then I agree with some people here, I’m annoyed by those who overpraise their unfinished libraries to attract newbies with the risk of making them waste their time and discouraging them, they should rather ask them to contribute, it would be more honest.

If you build a “better” wheel, then it won’t just consist in reinventing the wheel and it can be a step before switching to an even better wheel. For example, I stopped developing a piece of wheel for my own engine and I preferred developing “wheels” for engines with a larger user base, this is more useful for the community. We have to think about effort duplication too.

As said: The learning experience is a very valid reason. My personal opinion is that even the wheel has it’s flaws, so if enough people keep reïnventing the wheel even the slightest flaws will get less… well… flawed.

But, ofcourse, my opinions are a little bit off every now and then :smiley:

This ‘reinventing the wheel’ stuff is simplified business bullshit talk that totally misses the point. A wheel in the context of inventions is a concept, a basic idea. You can create an unlimited number of variants based on this idea and you really have to. That’s what developers do. Some create new implementions of wheels, some build cars based on these wheels and some might even question the wheel idea itself. And that’s great, because otherwise we would still drive around in Ford Model Ts or even more basic vehicles.
So if you want to create a new kind of wheel, go for it. If you want to use existing wheels to build a new car, that’s cool too. But please stop honoring clueless managers by using their language… >:(

True. Notice you need to understand wheels if you want to create a better one.

Pride is the enemy of innovation.
Program games, not wheels.

Often for simple task its faster and easier to make quick implementation yourself than using unknown code with unknown bugs and still spending non trivial time to integrate it your engine/framework conventions/codestyle. The trick is how to know when. Even then always use look all the open reference implementations and knowledge that is out there. This is more true in c++ than in java because java has lot unified codebases than at dark side.

Call me lazy, but I like making my own libraries because you don’t have to learn it if you wrote it :stuck_out_tongue:

Yes, but you have to learn the required information to write the library. So learning VBOs,FrameBuffers,etc. vs learning LibGDX.
I rest my case.

CopyableCougar4

LibGDX doesn’t work with other languages. OpenGL does.

Good points. The important thing is to differentiate the pure NIH syndrome from the reinvention that is driven by necessity and this is the most common trap I see. You have to choose your battles. Leave the wheels to the wagon builders and buy a wagon if you need one. Then focus on airplanes if that’s your thing. That’s how societies progress. High and low level in technology is also pretty relative. Again you just have to pick a level and work with it even though the whole building is comprised of lots of levels with their own quirks and complexities.

There is a BIG difference between re-inventing the wheel and improving the wheel and just wasting time. Wasting time is when you spend a long time making something that isn’t even as good as whats already out there in any way. A true re-invention of the wheel means starting from scratch and making something in a completely different way from the norm but proving it is better to do it that way. If you are looking to improve the wheel (wagon wheel to a car wheel), don’t go back to the drawing board and rethink up how to make something for the car to sit on and move on. Go look at the wagon wheel and change it and add on to it.

Ignoring all the metaphors, CONTRIBUTE TO OPEN SOURCE. You will learn a lot, learn how things work at the lowest level, read better (and worse code), learn to work in a team, and actually make a contribution that everyone who uses the software will feel.