Recognize that this is all imo. Don't throw a hissy conniption if you disagree. I'll respect your opinion, even if I don't accept it.
Artemis sat back in their chair and pondered, once again, the great thoughts of life.
During this thought session, they remembered, "Why reinvent the wheel?" This question
is often used as a justification for using someone else's code in the interest of time.
Artemis pondered this a little while longer and came to this conclusion..."
All the time new programmers come up with questions on how to do X. Someone points out
that X is in some other available source, they should just download it and let someone
else have programmed this function for them. I don't exactly agree with this approach.
As some of you might know, I'm a physics major. I spend my days doing physics when I'm
not doing programming behind physics' back. (Also I've been trying to make 8-bit tunes.
Slowly getting something going!) I thought to myself, "Why do I go through the touble
of doing all of these problems that have already been solved?" In some cases, we do
take the "Don't reinvent the wheel" approach in class (usually when we need to use a
differential equation solution that's beyond the scope of the class) but it doesn't
detract from what I'm about to say.
You should reinvent the wheel.
Crazy, right? Here I am, novice programmer, telling you to reinvent the wheel. "What are
you doing Artemis? Why are you telling people to make more work for themselves?"
Because it builds character. Actually there's a better reason, but it will build
character too. No, the reason I'm telling you to reinvent the wheel is the same reason
I reinvent the wheel in my physics classes and the same reason you reinvent the wheel if
you take a geometry class. To build understanding of the process involved.
If this were a professional environment, (and for some, it is) then please, disregard this
message. Do not reinvent the wheel, you're on time constraints and whatnot. But for the
hobbyist developer I believe MOST of us are, there's time to stop and learn. There's time to
derive new solutions and re-derive old ones. In libraries, a lot of what goes down is "Here
is a function. This is what it does. These are the parameters you need. Don't mess with it
and break it. That would defeat the purpose of the library." That is true, that's what libraries
are for. But it doesn't mean you can't learn from the library.
In libraries, you find complete functions that serve a purpose. I believe libraries are a good
"proving ground" for your reading and comprehension skills. Demos a "training grounds", where
you can play with functions are see how they work, see how you can change them. You don't need
to reinvent the wheel off-hand without looking at other wheels. However, when it comes down to
it, you need to practice coding to really get it.
See, it's the same reason I do physics problems. I don't do them because they need to be solved.
I do them because they need to be solved by me, so I understand the process and how I can reach
conclusions. It's why you should be programming your own wheel as much as possible when you're
new to this "game developing thing" we do here on BYOND. Yes, understsand that utilities do
exist, they are out there for your use. But the last thing you should be doing is trying to use
libraries when you're still iffy about switch statements or input functions.
So at the end of the day, I guess what I'm saying is:
Reinvent the wheel to figure out how it works, then look at other wheels to see how you
might improve your wheel. Borrow their wheels if necessary.
Artemis falls asleep in their chair.
ID:1502668
![]() Feb 21 2014, 9:46 am
|
|
Ironically the typical BYOND problem is that reinventing the wheel is all they do, and never quite manage the rest of the car.
|
More like they spend ungodly amounts of time reinventing the wheel. Except it's not as good as the original and then they never manage to finish the rest of the vehicle (but they sure do loooove talking about it).
|
Stephen001 wrote:
Ironically the typical BYOND problem is that reinventing the wheel is all they do, and never quite manage the rest of the car. With most BYOND projects, they don't even get that far. They just end up with a lot of half-assed sketches of cars and call it "concept art." |
I don't think reinventing the wheel is BYOND's problem at all. All of those fan rips clearly reuse the same exact wheels over and over again. Some people desperately need to reinvent things like verb panels and right-click menus. They need to be completely replaced with HUDs and real controls. For us, it's just a complete replacement, but for them, it's more like reinventing the wheel, or at least that's how they see it.
|
I was talking about programming in general, none of this applies strictly to BYOND. When it comes to rips though, I'm not entirely sure they have the know-how to change anything. I mentioned it in my other post about rips. They at least have the sense to see where the admin powers are given, that's something I guess?
|
Sometimes there is a better reason to reinvent the wheel, other than just learning from the process. Sometimes you will encounter a wheel that just doesn't roll the way you need it to, and then you must reinvent it. Sometimes you just know that your wheel is going to turn out so much better than the one that is already there, and if you have the skills to do so, why not reinvent it?