Re: RECALL

From: Daniel Koepke (dkoepke@CALIFORNIA.COM)
Date: 09/15/97


On Mon, 15 Sep 1997, Co-Sysop wrote:

-+I think you misunderstood what I was saying.  I have a command that does
-+something cool.  I want a spell that does the same cool things exactly like
-+the command.  I don't write that code from scratch.  Why would I want to?  I
-+already have a working verson of what I want to do.

I don't have a problem with this; and I didn't say it was wrong.
I do, however, have a problem with this,

-+Now let's say I want to do something that I haven't put anywhere
-+else in the code but I know someone who has something that works
-+just like I want it to.  It would be a much better idea to see if
-+I can get the code from that person than to go and waste a lot of
-+time writing something that is already written.  Don't go through
-+the trouble of inventing a light bulb when you have a light bulb
-+shop across the street.  If you want to spend hours writing code
-+that is already written just so you can say you made yourself seems
-+a bit unneccessary to me.

This "reinventing the wheel" discussion went on only a few months
ago, and it was ugly.  I actually thought twice about referring to it
as a "discussion"; but irregardless, the "light bulb" and the "wheel"
analogy are off-center.  They don't reflect coding in the slightest;
and while they make the perfect argument for someone that doesn't
want to code--only cut-and-paste--they don't actually apply to coding.

In coding there is hundreds of different ways to do the same thing.
In actuallity, in all computer programming jobs that are out there you
are required to write your code *yourself*.  Borrowing or using someone
else's code is all well and fine if you can't do it yourself, but it
certainly doesn't teach you anything.  You assume that "reinventing
the wheel" (or in this case the light bulb; of course, both things have
been reinvented several hundred times and usually for the better) is
only good for being able to take credit for something yourself.  This
is false, and I said in my original message that reinventing the wheel
is useful for teaching yourself how to code something.  You may have to
struggle through it, but at least you'll learn it.

-+Now before you went and said that everything I said was wrong maybe you
-+should have paid more attention to what I was talking about a recall command
-+that would work just like a recall spell could easily just be copyied to
-+save time.

If all you meant was to copy the recall code, then fine, I misunderstood
you--but only because you were too general.  But, as you have said in
this message yourself, you did not only mean to copy the recall code to
a new place.  But then you argue that all I'm saying is that you should
rewrite your code to take credit for it.  That is only one out of a
hundred benefits for rewriting your code; and the best one is, and the
one that I made an effort to point out, is that you *learn* from doing
it yourself.  You don't learn to drive just by watching someone else
drive.  You have to get behind the wheel, and learn it from there.

-+Mindlessly duplicating it by hand isn't really going to help you
-+as much as spending time on more complicated and important tasks.

Ehhhh...?  Mindlessly duplicating it by hand?  When'd I ever say that?
If you mindlessly duplicate someone else's code by hand, I can't
fathom you calling it your own code if you had any sense of morale.

-+You could also put shoes on your hands and walk on your feet.

<blink>

-+My point is that sometimes imitating someone else's work
-+is a lot more important than your desire to have people respect
-+your ability to do something different (which they don't always respect
-+anyway).

By cutting-and-pasting you are not imitating someone else's work,
you are using someone else's work.  It's an exact clone.  If you
take the time out to write something for yourself, not only do you
get better code for yourself (eg., you're familiar with it, because
you wrote it); you learn how to write that code.  Perhaps you stumble
upon a better way to write the code.  In any case, you'll most likely
come out of the experience with a little knowledge under your belt.

-+I would ask not to be flamed but since someone will do it anyway try to do
-+so intelligently.

You shouldn't douse yourself with gasoline then ask for no-one to
have any open flames near you.  I am, of course, referring to your
paragraph which says, "Now before you went and said everything I said
was wrong maybe you should have paid more attention to what I was
talking about...," which is rather an aggressive comment for someone
that doesn't want to be flamed.  Of course, I can easily just turn it
around.  But, then, I don't recall saying that everything you said
was wrong.

I would never say that using someone else's code is wrong, because it's
not.  If you don't have the time or inclination to write it yourself;
or even the skill to (although, really, in coding, you only need the
most basic skills and a lot of time and inclination), then, okay, use
someone else's code.  Such as CircleMUD.  But don't get it into your
head that from then on you should just go through life cutting-and-pasting
other people's code, because you'll never learn anything from it.  Okay,
fine, there is a lot of times when it makes more sense to cut-and-paste;
such as the recall situation.  But conversely, there is a lot of times
that it doesn't make sense to cut-and-paste.  If you can write your
own mud from scratch, and there is some kind of benefit from it (and I
don't mean just being able to call it your own code), and you have the
time and inclination, then why shouldn't you?  Such as, if you can
write your own mount system, improved 'who' command, ANSI query,
improved prompt system, etc. and there is signifigant benefit in doing
so, then why should you use my patches?  There is no benefit (at least
none that is signifigant) in rewriting the four or five lines to make
the recall command, but there are many (more?) cases where it makes
perfect sense to "reinvent the wheel".

Why?  Because there are so many different ways to code something, and
if you bother to write it yourself, you can probably come up with
something that is better for *you*.  Maybe not better for everyone in
the world, but what does that matter.  There will always be someone
with code that they call the "best", and then there will be someone
that will come in and revise that code to make it better; and then
someone will write new code to do the same thing that is better than
even that...and it goes on and on.  And while "cutting-and-pasting"
certainly makes a newbie's immediate life easier, it doesn't help them
learn anything, and makes their life in the future that much more
difficult.


--
Daniel Koepke -:- dkoepke@california.com -:-  [Shadowlord/Nether]
Think.


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/08/00 PST