Reinventing the wheel and personal satisfaction

Started by
6 comments, last by alnite 12 years, 3 months ago
Hello,

do you sometimes feel like not reinventing the wheel and simply using/building on somebody else's work doesn't give you as much personal satisfaction? I.e. if you were trying to code up something interesting as a hobby, which you deliberately know someone out there has done better than you could ever do, do you give up on it and try and find something else to do, or do you keep going? And if you keep going would you code it all up yourself (barring perhaps some minor, painful to write code), or would you end up using an already existing library (which does the heavy lifting of your application) to reach your goal?

Just eager to hear everyone's opinion, because I have met a few people who tend to deflate as soon as they find out that it's been done before, and is a 'solved problem' , whereas other people just think "screw them, I'm doing this my own way and see where it takes me", and I wanted to know (out of curiosity) how the community as a whole feels.

“If I understand the standard right it is legal and safe to do this but the resulting value could be anything.”

Advertisement
Depends on what my goal is. I tried to write my own game engine once (well... I guess it kinda stretched into several times) because my goal was to learn about how game engines work. I learned a lot and I enjoyed it. But right now I have a different goal, which is to just get a game finished, so I'm using as many existing libraries as possible.

So yeah, I've been there, and there'll probably be another day when I do it again (not necessarily a game engine though). But I'm not there right now cause my goals have changed as I've progressed in my programming ability and my interests have changed. It is a good way to learn about something in particular, if you have that desire.
[size=2][ I was ninja'd 71 times before I stopped counting a long time ago ] [ f.k.a. MikeTacular ] [ My Blog ] [ SWFer: Gaplessly looped MP3s in your Flash games ]
I'm pretty much the same as Cornstalks. I've made my own DX9 engine from scratch but anymore I'm more concerned with getting the game done then endlessly fiddling with all the other bits. I think its kind of a natural progression of programmers. When I first started out I wanted to reinvent everything as a means to get experience but the older I've gotten the less interested I've become in how everything works. Just that it works is good enough for me. Once you get a job programming all day it gets harder to want to do anything outside of work (at least for me) so the more tools I can use to let me get a game done faster is great. Which is why I'm really loving Unity at the moment.

As a kind of a tangent, I would say that anybody who is truly interested in doing game programming should create at least one game engine on their own to see how everything fits together. Whether that is specifically a game engine or core code collected through several projects is up to the person. In retrospect, my game engine wasn't very good but it does give me an understanding why other game engines do some of the things they do.
As they say there is a time and place for everything. Reinventing the wheel is a great way to learn and as Cornstalks and stupid_programmer have said are great for learning how game engines work. However if you're more interested in making a playable game in a reasonable amount of time especially if that amount of time is limited due to work/college/school/etc.

Definitely when I get something working I feel a great sense of achievement even if I did just "reinvent the wheel". For example I rewrote a couple of STL headers like "string.h" and I had great fun and gained a lot of C++ programming knowledge by doing then, even if my friend told me I was completely bonkers.

There is of course a disadvantage to reinventing the wheel in that your solution may not be the most efficient method of completing the task and of course it is more often not the case that existing libraries and code that has been tested through fire and brimstone and used by a large number of people, therefore it is less likely to have any critical bugs or faults. This is a major factor when considering whether or not to use an external library.
My personal policy on "reinventing the wheel" doing so intentionally is best confined to side projects which have the goal of understanding the details of a particular concept. In projects in which actual work is to be accomplished, "reinventing the wheel" is permissible if it is the best way to solve the problem/meet the specifications for the software. Otherwise, it is best avoided; one should always try to see if somebody else has already solved the problem, and to determine whether their solution is applicable to your problem. Note well that this does not mean that one should seek the solution before the problem is fully understood; taking existing solutions to problems and adapting your problem to the solution is exactly backwards; one should adapt solutions to problems, not vice versa.
I'm in the "reinvent the wheel for fun, not profit" camp. If I want to actually get work done, then I will do my best to make use of existing software that solves problems for me. I rather take a week and learn a new extensive library than spending a month or more rewriting it to do the small part that I think I'll need.

On the other hand, I will happily work on making things like 1940's and 50's tech/hardware. I'm considering doing an Enigma Machine sometime soon.
Old Username: Talroth
If your signature on a web forum takes up more space than your average post, then you are doing things wrong.
I'm guilty of trying to "reinvent the wheel".

I'm doing some hobby general a.i. programming, and I know that people have coded the techniques and features I'm coding.

It's hard to continue. People value originality more than rehashes, even if those rehashes are done well.

A lot of people have discouraged me from pursuing my goals.

I want to learn, and if I can I want to make software better. It's easy to forget in the discussion of originality vs. reinventing the wheel that the first wheel isn't always the best wheel. There is always room for innovation. It is hubris for me to think that a novice programmer like myself can do things better, but knowing that doesn't dampen my desire to try.

I don't expect any help. If I do need help, I ask technical questions that have factual answers. I also research what people have done (which anyone who is trying to learn should do anyway) and try to find useful alternative or better ways to do it.
I think everyone needs to reinvent the wheels, up to a certain degree. You need to know how the wheel works before you can use it confidently.

The only time I would reinvent is when I don't need all the extra garbage that others have. For example, I need a linked-list, but find out that the existing linked-list implementations are creating a lot of dummy objects internally. Or I need a simple Python interpreter, but I don't need the full-blown features, just enough to parse basic Python scripts.

I'd reuse others when I know how to make it, but too lazy to do it myself.

This topic is closed to new replies.

Advertisement