Friday, October 10, 2014

Learning Blog Week 3

Expertise

   First, a little house keeping.  For the third straight week I've made a course correction to the structure of my learning regime.  I have abandoned the Lynda.com tutorials because I am learning on the CodeAcademy.com tutorials so much faster it makes more sense to build on what I'm learning through one source (at this point)  I'm pretty sure I'll rethink this decision in the next couple of weeks as I start to branch out, but I've found that I've been plowing my rows to broadly and they aren't going deep enough (more on this later).  So, for this week I did the Looping with Ruby section on the CodeAcademy tutorials and since the topic was expertise I turned for the first time to the CodeAcademdy forums/Q&A section to get a little advice from the experts themselves.    

The Experience

   I hadn't thought too much about what it really means to be an expert, and when I saw the topic for this week was expertise I was a little bit uninterested.  However, I found the reading to be pretty informative and quite helpful.  I wanted to involve experts early in my learning experience for this week, so I posted several questions on the forums at the CodeAcademy website, and this was a very disappointing experience.  I can't blame the experts wholly because I admit I'm a terrible question asker.  Ever since I was young I've always been asked after being taught something if I have any questions and my answer is always no.  I don't know what it is about my mind, but I can never think of questions at the appropriate time to ask questions.  Write them down you say?  Great idea... but that doesn't work either, and I really don't know why.  I guess if I write something down to ask later usually the question is answered before I get a chance to ask.  Anyway, I wanted to ask some meaningful questions about Ruby programming to some folks who are in the know.  I wanted to ask some broad questions about Ruby in general and then some specific questions about the lessons I was doing currently.

These are the questions I posted:
1. What can you do with Ruby?  Are there any websites or apps that you know of that have been programmed with Ruby I can look at for an example of what it can do?
2. At what point in the process should somebody start using Rails?
3. Help I'm stuck: I am trying to figure out how to duplicate a string 30 times using an iterator.  I can do integers easy enough, but I can't figure out how to do strings!

   You may have realized that his blog is REALLY late this week.... It's 9:13pm Friday night right now as I'm writing it... and that's because I have been waiting to receive feedback on my questions and as of right now, I have received 0 responses.  So much for involving the experts!

   Expert source number two- my friend who turned me onto Ruby in the first place.  Next I turned to my friend for some advice and asked him the same questions.  It became very obvious right off the bat that I was way in over my head.  I couldn't understand a lot of the lingo he was using.  You should know that my friend is fluent in many programming languages and sometimes gets really technical without realizing it. 

   INSIGHT #1:  Sometimes experts don't know what they know, or how much.      The book talks about how abstraction is replaced with perception in the expert mind.  My friend was talking about all these ways to solve this tiny issue that had to do with these broad concepts.  He went on and on about how some such thing affects some other such thing and asking if I'd done this or that or some other thing and I kept telling him I wasn't quite to that stage in my learning yet.  I told him that I was just trying to get this thing to work so I could go on to the next step. 

  INSIGHT #2: Experts aren't always good about explaining things to novices.  The book explains how experts and novices see different patterns.  The expert will recognize patterns and be able to sort through them and access the most useful information based on the pattern, where novices aren't able to do so.  Even really talented novices can't parse relevant chunks of information nearly as effectively as an expert.  It says in the book that this is called having conditionalized knowledge.  You already know the contexts in which certain information is useful or not.  I certainly feel like I have been gaining some knowledge during the past three weeks, but that it's mostly inert, as I have no clue as to how any of the things I'm learning can work together in the formation of a useful program.  This is very frustrating for me as I'm sort of lazy and just want to get on with it!  My friend on the other hand is a very meticulous person who likes to understand every nuance of every iota before moving forward.  We often times drive each other crazy when we work on projects together (and yet we work really well together because we compliment each other).  In this situation however I was just feeling frustrated.  I asked my friend to slow down, and maybe to explain some of the things he was talking about.  He had a really hard time answering my specific programming question about duplicating a string until finally it dawned on him how rudimentary a thing we're talking about. 
 
  INSIGHT #3: The expert recalls information automatically and it can be hard to shift back into purposeful recollection on things your mind breezes past generally.  What I was so effortfully trying to remember my friend had automatically recalled and moved past.  I think this is a really important concept.  In the Ambrose et al article I found the Stages in Development Mastery diagram very helpful (and maybe even a little hopeful).  Before I started this project I was Unconscious Incompetent.  I didn't even know half of what I didn't know.  I had no clue and I couldn't do anything.  Now, I feel like I'm transitioning into the Conscious incompetence stage, though very slowly and probably not quite enough to claim conscious incompetence.  I now know that there is so much I don't know... though I am now equipped to think about and gain some competence.  I've moved through these stages before, though I didn't have a name for them at the time.  At work I've gone through a lot of training, and I think the Conscious incompetent stage is really the toughest stage to push through.  I feel like that is going to be the hardest stage for me in this project as well.  For now, I'm unmistakably in the effortful category in terms of knowledge retrieval.  If I'm able to meet my goal, creating a website to host this blog, I think I'll need to move toward the effortless retrieval, though I'm not hopeful to attain the automatic yet.  I think this relates back to why my friend was struggling to explain some very basic ideas to me.  for him, he thinks of things in broad terms, with big chunks of knowledge all categorized together and conditionalized by context.  I have none of those tools, and he has lost the ability to recall the novice perspective.  He can't remember these things outside of their current order.  His schemata are all put nicely into the proper places, where I don't even have them yet.  This means that as he jumps from topic to topic he's providing me with a very broad array of ideas that all relate back to my current problem.  However!  All these things are interconnected and chunked together in his brain so they make sense and the way they interact with each other is obvious.  To me, I'm getting tiny nuggets in such a broad variety of ideas that none of them are sticking and none of them are sinking in. 

  INSIGHT #4: A breadth of knowledge isn't better than a depth of knowledge.  My friend certainly has a depth of knowledge as well as a wide breadth of knowledge, but for a novice like me I think learning one thing deeply and completely (well... ok maybe not quite completely) can be much more effective as you develop your expertise.  Then it's a matter of linking these separate but related ideas into a network of knowledge.

    In the end I finally got a clear answer to my specific question.  He explained my problem like this-


This is what I was trying to do, which didn't work.

This is how it is supposed to look when it works.  You have to assign the variable to a number which you add 1 to each time it loops, and then tell it that when it loops to add 1 more and write the word Ruby!  What I was doing before was add the word Ruby! to the word Ruby! every time so I got Ruby! on the first loop, then Ruby! Ruby! on the second loop and then Ruby! Ruby! Ruby! Ruby! on the third loop and so on.  Also, my break didn't work because it was never landing exactly on 30 Ruby!s.  It's a really simple thing that took a long time to get to the heart of. 

Here is the program I did.  It's called Redactor because it redacts specific words you choose and replaces them with the word REDACTED








 

No comments:

Post a Comment