Reinventing the wheel and personal satisfaction
Crossbones+ - Reputation: 9886
Posted 24 December 2011 - 09:11 AM
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.
The slowsort algorithm is a perfect illustration of the multiply and surrender paradigm, which is perhaps the single most important paradigm in the development of reluctant algorithms. The basic multiply and surrender strategy consists in replacing the problem at hand by two or more subproblems, each slightly simpler than the original, and continue multiplying subproblems and subsubproblems recursively in this fashion as long as possible. At some point the subproblems will all become so simple that their solution can no longer be postponed, and we will have to surrender. Experience shows that, in most cases, by the time this point is reached the total work will be substantially higher than what could have been wasted by a more direct approach.
- Pessimal Algorithms and Simplexity Analysis
Crossbones+ - Reputation: 6995
Posted 24 December 2011 - 09:20 AM
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.
Members - Reputation: 1375
Posted 24 December 2011 - 12:04 PM
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.
Members - Reputation: 100
Posted 24 December 2011 - 06:05 PM
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.
Crossbones+ - Reputation: 2212
Posted 24 December 2011 - 06:20 PM
Crossbones+ - Reputation: 1978
Posted 24 December 2011 - 08:23 PM
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.
If your signature on a web forum takes up more space than your average post, then you are doing things wrong.
Members - Reputation: 174
Posted 30 December 2011 - 08:16 PM
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.
Crossbones+ - Reputation: 2327
Posted 31 December 2011 - 09:27 AM
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.