topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • Thursday October 31, 2024, 5:55 pm
  • Proudly celebrating 15+ years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Author Topic: Is "easy" learning a valid (quality) experience?  (Read 5952 times)

CodeTRUCKER

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,085
    • View Profile
    • Donate to Member
Is "easy" learning a valid (quality) experience?
« on: November 06, 2010, 07:04 PM »
Is "easy" learning a valid (quality) experience?  I had that thought challenge me when I read this post.

The statement, "... It's just so much faster and easier if you can see it done rather than having to figure it all out yourself..." just provoked a *ping* inside my mind somewhere and I began to think.  Now, this is not a criticism of the poster.  He is well respected for his contributions and he certainly is nobody's fool, so I am hesitant to criticize his comments.  I know he is not suggesting anything resembling cheating.  I do have some thoughts that apply to a broader spectrum. 

My concern is that how common it would be for new (maybe old?) coders to just cut-and-paste from the resource and others, not bothering with the learning part.   Human nature has cheated us all out of greater value.  I have no power to do so, but I wish that every "new and improved" thing, technique and gizwort had an appropriate warning label to prevent beginners from choosing a pathway just because it is easier for the moment.

So, what do you think?  Do the "new and improved" shortcut techniques of learning coding equate to the quality of programming that is produced from paying dues in the trenches?

Renegade

  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 13,291
  • Tell me something you don't know...
    • View Profile
    • Renegade Minds
    • Donate to Member
Re: Is "easy" learning a valid (quality) experience?
« Reply #1 on: November 07, 2010, 12:54 AM »
This seems a bit like the old "buy vs. build" debate. (This is strongly related, though it does stray somewhat -- in any event, it's still in the same "thought mode".)

I'm solidly on the "buy" side of things. If I can purchase the functionality that I need (e.g. to cut down the time to market), then I will. I think that there are significant benefits to buying:

  • You're likely not an expert in the subject -- Buying gets you an expert
  • Time to market -- Much faster
  • Resources can be used elsewhere
  • Don't reinvent the wheel -- ok - not a benefit, but all the same...

The first there is what I think is the most important. Here's an example.

Imagine you're going to write a simple MP3 player. Well, in order to do that, you need to have an MP3 decoder to decode the encoded data in MP3 files (sorry about the verbosity there). Now, you *could* write one, but why? It is a non-trivial thing to do any kind of compression, and especially complex compression like MP3. The chances of you being able to actually create an MP3 encoder or decoder that even begins to approach the level of the Fraunhoffer or LAME (RareWarez) MP3 software is highly unlikely. There are many casualties there that attest to it, e.g. Xing and Blade. The only real solution is to use an existing MP3 codec.

The same thing goes for pretty much all encryption and all compression. Both those are extremely technical fields where the level of expertise required is simply massive.

Actually, I'd go so far to say that unless someone is an expert in the area of cryptography (or a mathematical savant), if they attempt to write cryptography software, they are not merely a complete fool, but completely irresponsible and totally wreckless. That can be extended to other areas in security as well.

Ok, well to sort of get somewhat back on topic...

I think the same principle applies to learning as well. If you repeat things long enough (copy & paste), eventually it's going to sink in.

A lot of things are merely matters of logic. Those you really need to be able to tackle with brain power. But a lot of things aren't a matter of logic at all; they're matters of knowing completely arbitrary rules.

For example, looping structures are all pretty much the same and follow the basic structure:

Loop

...do stuff...

End Loop

An exit condition is either at the top or bottom, and possibly in the 'between' part. There's no point to copying & pasting that. You need to know it flat out.

The same goes for conditional structures, e.g.:

If... then... elseif... else...

Or

switch... case 1, case 2... (or select case)

But things like opening a file or writing out an XML serialization are completely arbitrary with no predictable pattern. That is, they are always language specific, even if different languages are significantly similar.

Those things you really need guidance in using. A small set of rules won't help you in many cases.

Asynchronous calls are another area where you just have to roll with what you're given. Callbacks or events or delegates or whatever they're called... The ways to get them done differ significantly in different environments. The only thing you can really do is know when to use them and when not to use them. Doing networking? Well, you probably need to use non-blocking methods, or asynchronous calls.

Some concepts don't even exist in some languages, so you have to work your mind around the new way and come to terms with it. After that, you're good to go but you'll likely need to do some copy & paste along the way until it's familiar enough to just write it out.

Still... Yeah... I can totally see how blindly copying & pasting can be one of the worst things you can do. Understanding something doesn't mean being able to do it though. But if you can get that basic understanding about what things are for, then try to be responsible in copying & pasting, it seems like a good way to get things done.

While I rarely literally copy & paste, quite often what I'm doing is very much about the same thing. I look at an SDK or API, read the samples, then start coding/typing. But what I'm really doing is basically just copying. This is the ACME SDK, and they say I need to do X, Y and Z in order to achieve A, so... I'm sure anyone that's worked with different SDKs, APIs or frameworks knows what I mean.

Here are 3 lines from a piece of software I'm working on right now:

Code: C# [Select]
  1. ProcessStartInfo psi = new ProcessStartInfo();
  2. // openssl genrsa -out my-private-key.pem 1024
  3. psi.Arguments = string.Format("genrsa -out \"{0}\" 1024  -rand \"{1}\"", file, randomDataFile);

The second line I literally copied & pasted from some documentation in some other software of mine. That was copied and edited from other documentation. Sometimes there's only 1 way to do things, and you basically either retype it or copy it outright.

The third line is just retyping, editing, and adding in some extra things from the second line. 

But this is starting to get very long... I'm going to leave it at that for the moment. (Decidedly incomplete.)
Slow Down Music - Where I commit thought crimes...

Freedom is the right to be wrong, not the right to do wrong. - John Diefenbaker

CodeTRUCKER

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,085
    • View Profile
    • Donate to Member
Re: Is "easy" learning a valid (quality) experience?
« Reply #2 on: November 07, 2010, 01:07 AM »
This seems a bit like the old "buy vs. build" debate. (This is strongly related, though it does stray somewhat -- in any event, it's still in the same "thought mode".)
...

Good argument, but wrong target.  :)

What I am really shooting for is the validity of "Instant Breakfast" learning versus "paying the dues" of old-school methods.  "Does the new methods produce the "right" results?" (I'll leave the definition of "right" to the reader.)

In the old days I remember when a function on the computer failed I was able to actually read the memory dumps and find the problem and guess what?  I could fix it!  Now days there is never time to fix a computer when something goes south.  "Reboot!" is the dogmatic mantra.  

I realize that trying to compare a couple of hundred punched cards in PL-1 with the 50 million lines of code (to say nothing of the fifty or so layers of dependency in the architecture) of Vista is ludicrous, but I knew what was really happening in those three hundred statements.  Does anyone really know anything for sure about what is really happening in those 50M lines?  

In 1964 "Fail-Safe" prophesied our present circumstance when Gordon Knapp explained to Sen. Raskob and Gen. Bogan...
"Look, it's just that the more complicated these electronic systems are... the more accident-prone they become."

So, here we are in 2010.  The new has certainly produced quantity, but how does it stack up on quality?  (Again, I'll leave the reader the chore of defining, "quality.")


« Last Edit: November 07, 2010, 01:10 AM by CodeTRUCKER »

Renegade

  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 13,291
  • Tell me something you don't know...
    • View Profile
    • Renegade Minds
    • Donate to Member
Re: Is "easy" learning a valid (quality) experience?
« Reply #3 on: November 07, 2010, 01:51 AM »
You're absolutely right.

I would blame a lot of it on modern society and modern economics though. We simply don't have the time or money to be so leisurely with a lot of things. Made in China? Might as well stick that on just about every piece of software out there.

Well, not all. But enough.

For NASA and all that space shuttle code, it's nuts. They have like 50,000 lines of documentation for every line of code. When they say mission critical, they mean it. That stuff is so far beyond reproach that the only thing all of us out here in "the real world" can do is bleat "we're not worthy". But that's an entirely different world.

Back to economics...

It's simply too difficult now to truly run through all the nitty-gritty. If you're a full time programmer, and you are not a generalist, but you are a true specialist, then it's likely that you do have that luxury.

For most errors, god only knows what you'll dig up. It's often easier, cheaper, and faster to just work around a problem.

I've got a problem right now that I really should solve, but it's simply so bloody esoteric and I would have to go out and master an entire new skill set with new tools to solve it. There's no way I'm going to be able to do that. Food. Table. They win out. Would I like to be able to solve it? Sure. Will I attempt to? No way. I know that going down that path is a downward spiral into insanity. :)

The quote you have there is SOOOOOO on the money! The bigger the system, the bigger the problems. And the biggest problem I think is that no one (and I mean no ONE) can understand them. They're too big for one person now. So we all rely on each other. i.e. The chain is only as strong as the weakest link. Actually, that's a bit of a bad analogy, but it's kind of true.

Like you mentioned though, way back it WAS possible to understand the complete system. We just can't do it anymore. Which I why I think "buy is better than build", or "copy until you 'get' it." We can only dedicate so many resources to things. At some point we need to cop out and take the easy way so that we can make it to the destination.

Maybe I could sum it up as saying that there's simply such a vast QUANTITY of things to learn, that the QUALITY of a lot of learning must suffer for it.



Slow Down Music - Where I commit thought crimes...

Freedom is the right to be wrong, not the right to do wrong. - John Diefenbaker

mahesh2k

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,426
    • View Profile
    • Donate to Member
Re: Is "easy" learning a valid (quality) experience?
« Reply #4 on: November 07, 2010, 02:42 AM »
Maybe slightly tangent reply to what you guys are discussing. One way to look at this is : code reuse. You can't waste your time inventing same things over and over in different way. We wasted a lot of time in development by making monopoly in what we do to give it feel of uniqueness and forgot about important points like - reuse, invent wheel argument etc. These days because of open source -software industry is improved as they reuse code. Now that you wish to re-use so you prefer to learn from blocks rather than from scratch. This approach works when you want to get things done but when you want to do particular thing in dedicated manner in that case 'easy' learning approach is similar to band-aid.

Renegade

  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 13,291
  • Tell me something you don't know...
    • View Profile
    • Renegade Minds
    • Donate to Member
Re: Is "easy" learning a valid (quality) experience?
« Reply #5 on: November 07, 2010, 02:45 AM »
@mahesh2k - Well put. Particularly the part about "done", "dedicated" and "band-aid". That really sums up things very well I think.
Slow Down Music - Where I commit thought crimes...

Freedom is the right to be wrong, not the right to do wrong. - John Diefenbaker

CodeTRUCKER

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,085
    • View Profile
    • Donate to Member
Re: Is "easy" learning a valid (quality) experience?
« Reply #6 on: November 22, 2010, 03:38 PM »
I appreciate the insight you folks have offered.  I have spent some time just thinking about this for a while.

I think what I may be trying to get at is the feel of how a brain/person actually works (thinks) in learning.  I am wondering if the brain kind of, "automatically" kicks into a "higher gear" in terms of "quality" of acquiring data (learning) while working or authoring? 

I am acquainted with the long-known "facts" of learning, but I'm coming at this from a more visceral as opposed to empirical vista.  If I can use the term, it seems that knowledge that is learned is more "meaty."  When I take the "easy" or "quick" pathway I do gain the knowledge, but if I have to work for it... it's mine!  It's almost like a 2d compared to a 3D experience. 

In regard to "code reuse," I'm very much in agreement, but only if it is "my" code snippets.  I know production deadlines sometimes force us to the push-button solution, so one may not always have the luxury, but I do know the author of a book knows the story in intimate detail which a reader can never know.  This intimacy allows the author to add or omit characters and story lines at will and maintain the whole intact.  I think coding is like authoring a book in this regard, so the ability to author all of the code allows a programmer to "know" the code in a way only he /she can.  I'm using "coding" as the example, but this would apply to all areas of  learning and knowing.  I realize this is the ideal, but it would substantiate the concept of the mind gaining a qualitative advantage while learning.

Please feel free to take a blind stab to help me get my head around what I think I'm trying to say.  Someone once said, "No man is an island."  Maybe the progenitor of that wisdom had "thought" in mind? :)

Stoic Joker

  • Honorary Member
  • Joined in 2008
  • **
  • Posts: 6,649
    • View Profile
    • Donate to Member
Re: Is "easy" learning a valid (quality) experience?
« Reply #7 on: November 22, 2010, 06:42 PM »
I think what I may be trying to get at is the feel of how a brain/person actually works (thinks) in learning.  I am wondering if the brain kind of, "automatically" kicks into a "higher gear" in terms of "quality" of acquiring data (learning) while working or authoring? 

I am acquainted with the long-known "facts" of learning, but I'm coming at this from a more visceral as opposed to empirical vista.  If I can use the term, it seems that knowledge that is learned is more "meaty."  When I take the "easy" or "quick" pathway I do gain the knowledge, but if I have to work for it... it's mine!  It's almost like a 2d compared to a 3D experience.

Let me see if I can Chicken or egg this thing - There really isn't a wrong way to learn.

I've never been formally trained in anything; it's all self study, OTJ training and trial & error. I started programming with a copy of Borlands C++ 4.52 which came (from Staples for $10) with the book Sam's Teach yourself C++ in 24 hours. After 24 hours the only thing that was crystal clear was that Sam was completely full of shit. However, I met a kindly programmer that showed me how to get a "Hello World" messagebox program to compile and run and I continued on from there on my own (that was 10 years ago).

There are many college grads that can quote the book chapter and verse but can't apply the info to save their ass. Turn them loose in the field and they'll destroy something in short order. (Other side of coin) There are many seasoned field techs that can't remember half of the stuff the new kid is quoting, but they can apply the concepts involved without need to know their origins or minuet details. Which one it "right"... *Shrug* ...Neither really, they're just different ends of a timeline we call experience. Sooner or later you gotta put down the book and think for yourself.

As long as one truly understands the facts they are applying, and is aware of what they don't know...The learning process can continue safely. It's impossible to know everything - and foolish to try. The key is truly wanting to learn.

CodeTRUCKER

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,085
    • View Profile
    • Donate to Member
Re: Is "easy" learning a valid (quality) experience?
« Reply #8 on: November 22, 2010, 08:06 PM »
@SJ - Thanks for your input.  What you were shooting at you hit right in the bull's-eye, but it wasn't the target I was trying to put up.  Maybe I didn't get my words just right? 

Within the context of what I am trying to get to, what you are talking about is "acquiring information" (sort of), but what I am trying to get at is something less poindexter-ish (2D) and more gut-level (3D) is "eating knowledge."  I know that sounds kind of odd (it does to me), but I'm trying to the idea that just like food, knowledge becomes a part of us and not just external.  Just like food we eat has a direct effect on our outward body, the knowledge we "consume" on this level has a direct effect on our "outward" mind. 

To get an idea of what I mean, let's assume you were a science geek, football brute or band member.  Do you remember the history you learned in high school?  If you were like me the answer is, "naw... I don't think so."  Why?  Because it was only temporary data I (we?) "acquired" for the purpose of passing the test with a "C."  We really didn't "learn" it in the sense I mean.  Now this makes perfect sense to me because my brain never entered "passing gear" due to the fact I never really worked to learn it.  All I wanted was just to get it in short-term recall long enough to regurgitate it on to paper.  Once that was done, I had no reason to retain it, so my brain never engaged on a "3D" level and what I "acquired" went out with the garbage.

[Disclaimer - I can see what I am after, but I'm not having much success in explaining it.]

Just try to think of it like a drawing on paper and a hologram.  I conjecture the brain compensates us based on our effort.  If we take the easy way out, the brain helps us just to get by, but if we really work, our brain really gets it's own shoulder under the wheel too!  Think of the brain as a kind of self-aware entity inside of our selves.

Stoic Joker

  • Honorary Member
  • Joined in 2008
  • **
  • Posts: 6,649
    • View Profile
    • Donate to Member
Re: Is "easy" learning a valid (quality) experience?
« Reply #9 on: November 22, 2010, 10:32 PM »
Within the context of what I am trying to get to, what you are talking about is "acquiring information" (sort of), but what I am trying to get at is something less poindexter-ish (2D) and more gut-level (3D) is "eating knowledge."  I know that sounds kind of odd (it does to me), but I'm trying to the idea that just like food, knowledge becomes a part of us and not just external.  Just like food we eat has a direct effect on our outward body, the knowledge we "consume" on this level has a direct effect on our "outward" mind.
So we are an eclectic mixture of the people we've met and the experiences we've had?

To get an idea of what I mean, let's assume you were a science geek, football brute or band member.  Do you remember the history you learned in high school?  If you were like me the answer is, "naw... I don't think so."  Why?  Because it was only temporary data I (we?) "acquired" for the purpose of passing the test with a "C."  We really didn't "learn" it in the sense I mean.  Now this makes perfect sense to me because my brain never entered "passing gear" due to the fact I never really worked to learn it.  All I wanted was just to get it in short-term recall long enough to regurgitate it on to paper.  Once that was done, I had no reason to retain it, so my brain never engaged on a "3D" level and what I "acquired" went out with the garbage.

Ah! History... Great example (I hated it). People who don't know their history are doomed to repeat it - Is the common mantra. Frankly, I think the opposite is true; people that fixate on history will never move forward (but I digress).

The regurgitation part is key (I feel), as it speaks to a lack of interest. As the saying goes if ones heart is in it, a way will be found. It's the difference between actually doing a job and 9 to 5'ing it. So if a topic is truly interesting, enjoyable, and allowed to consume ones full intent. Learning it is no longer drudgerus work. Absorption is much easier & quicker when the game is relaxed and the goal to string new facts together is exciting (Strangely much like your digestion analogy).

[Disclaimer - I can see what I am after, but I'm not having much success in explaining it.]
We can go Zen, Perhaps you already know the answer, but have not yet found it within.

Just try to think of it like a drawing on paper and a hologram.  I conjecture the brain compensates us based on our effort.  If we take the easy way out, the brain helps us just to get by, but if we really work, our brain really gets it's own shoulder under the wheel too!  Think of the brain as a kind of self-aware entity inside of our selves.

You must realize that I have great difficulty with words as I work almost entirely by visualization. So if I picture that in my head, I'll implode... ;)