Friday, November 14, 2014

NOTES:
  week1-  learn from multiple sources (sociocultural learning?)
-  working memory vs. long term memory (did I really develop any long term memory of this stuff?)
-  The Robbie Case stuff "that just because a person is a certain age doesn't mean that they will have the same success at abstract manipulation of information. In my case I felt like a bit child-like in my inability to fully work through the hypothetical situations in my mind. I couldn't see many of the end results. I don't have the automaticity or fixed schemes to allow my mind to work at full speed yet, where I can think of several children who have taken some programming classes who could probably work through the hypothetical situations better than I am able to at this point."

  week2- How much did the reading effect my experience?  How much did my experience effect my reading?
-  I inherently recognized the power of situated learning even before I knew what it was exactly, "These tutorials are much easier to follow, and rely less on PhP comparisons.  They're more project oriented as well, which is helpful to me because it allows me to see how the concepts fit into the execution."
-  cognitive miser
-  Is there a cultural motivation to knowing programming?  How does that relate to what Vygotsky said about language as the basis of cultural learning?
- expectancy-value theory- "great aversion to negative consequences umbrella
- incremental theory= Am I cut out to program?  What stops anyone from learning stuff?  Is it all lack of effort or are our individual minds geared one way or another?  How does enjoyment play into it?

week3- experts!  Does expertise take time?  Yes!  Do you have to love something to become and expert or does developing an expertise foster a love of it?  Or can you be an expert in something you have an aversion?  I feel like programming is not naturally something I love, and I don't think 8 weeks of practicing it have persuaded me to continue.  My unanswerable question is if a love can develop with work and practice.  I have a feeling that if I could beef up my schema for programming and connect some of the knowledge a bit better I'd like it a whole lot more.  If I could get to a point of practical application I might actually enjoy it... Ignorant incapable?

week4- memory is dynamic, constantly restructuring (making connections, relationships, addendums and cross references).
- What was my mind connecting this stuff to if not to prior programming knowledge?
- procedural memory--  I saw a hint of this at work during the last tutorial!!!  I sorta just got some programming right without having to destroy my sanity to do it!!!!
- declarative memory--  Still disparate, but maybe building cohesivness?

week5- situated learning!  I still have a hard time including others in my learning even though I understand and agree that it's an important and effective way to learn.  I definitely do not feel encultured yet in the ranks of the codemonkeys. 
- cognitive apprenticeship- I wonder if I'd pursued this approach.  If I'd just asked my buddy to help me make a website and worked with him.... I think I would have the tools to make a website.

week6- my zone of proximal development is still wide open!  There is simply never a way I'll close the gap, but I don't think anyone's completely filled the gap in any regard to any subject ever.  There is always more to learn/discover/do!  The potential of human learning is more vast than the ability to fill it.  Is that good?  
-  Internalizing this stuff?  I guess I have a little bit, but not nearly as much as I thought I'd have done by now.  The strange thing is that usually I'd have quit by now... but I've stuck to it and put in diligent effort... 

week7- muddling of a new way to look at Ruby.  Maybe this could be a good thing!  
- Learning things the hard way has a function when it comes to more complicated problems or situations

Learning Blog Week 8

Week 8

  And now, the conclusion.  I like to think of this 8 week process as a learning journey.  It feels like a long trek across a foreign land with way stations set along the way to reflect on the journey and recalibrate the course.  I've enjoyed the experience, and I think I have a good account of my trip.  This week I completely abandoned the CodeAcademy tutorials for a radical new approach.  I simply asked my friend to help me make a website with Ruby.  Spoiler: we failed.  We sat down and got straight to work.  He quizzed me for a while on what I knew, what I didn't know and showed me some code from the Starfall website, which he curates.  I admit I was mostly lost during this process.
  After a time, we started in on our first bit of code.  That's when he really lost me.  We worked together, mostly me watching him type code and fumblingly explain what he's doing.  I will admit that I was pretty disappointed.  I had hoped that this experience could be like a cognitive apprenticeship, but I hadn't fully thought through the situation.  Cognitive apprenticeships aren't just last minute crash courses with an expert friend.  They require time and patience and a lot of work.  I didn't give myself enough time to learn from my friend's ample store of knowledge.  Indeed, my friend's knowledge of Ruby far exceeded my ability to keep up with, but I wouldn't say that the experience was a waste of time.  I think rather than an ending point for this blog, I should have made this the beginning point.  I wonder if I'd asked my friend if I could just help him as he builds websites if that would have been a more satisfying experience.  Could I have done like the apprentice tailors and picked up enough code by doing menial tasks for my friend to learn to program my own site eventually?  More importantly, would this have made the process more enjoyable? I find nothing gives knowledge as much memorable context as friendly humor.
  The major drawback to my learning journey was that I just didn't enjoy programming.  Each week I'd get a feeling of dread when I thought about having to do my coding activities... though writing the blog was actually quite enjoyable (Maybe I should have learned how to blog for my learning activity?)  I wonder if this is a function of how my brain works, or if it's just that I've always enjoyed writing, and have never programmed before.  Writing is comfortable, there is a level of automaticity.  I don't have to think about the component parts of writing.  I just think of something I want to say, and then my fingers make it appear on the screen (or the page).  Coding required a lot more concentration.  I had to constantly retrieve information to my working memory, and then store it back away.  My schema for programming wasn't very well organized, and the relationships between the ideas and concepts were tenuous and constantly changing in ways I couldn't quite grasp fully.  I know our memories are dynamic learning machines, but it seems that when we have a firm grasp on a subject those changes are exciting and interesting as opposed to when we're still new to a subject and we can become easily confused as our memories expand and make continuous connections to just about every other thing we know.
  Reading through my blog entries I came across this passage in my first entry, "...that just because a person is a certain age doesn't mean that they will have the same success at abstract manipulation of information. In my case I felt like a bit child-like in my inability to fully work through the hypothetical situations in my mind. I couldn't see many of the end results. I don't have the automaticity or fixed schemes to allow my mind to work at full speed yet, where I can think of several children who have taken some programming classes who could probably work through the hypothetical situations better than I am able to at this point." 
  This was in response to Robbie Case's ideas building off Piaget's theories.  I have come a long way these 8 weeks in terms of finally getting a toehold on Ruby.  It's just enough to work through some abstract simulations in my mind, and then being able to manifest them in reality with only a few minor tweaks.  I was thrilled last week when my tutorial asked me to provide some code that would do a certain thing, and I thought about it, came up with something that seemed like it would work, and then wrote the code.  I only had to add one little bit of code that I hadn't thought about in my mind, but everything else worked.  That was maybe my biggest breakthrough during this learning exercise.  I feel like I was able to develop a little bit of procedural memory as well as the cavalcade of disembodied declarative memory fragments that I got throughout the 8 weeks of practice.  Things started to coalesce just a little bit.  I had a tiny little script there for coding a certain thing.  I finally was able to transfer a little bit of my new knowledge.  A near transfer, but a victory to be sure.
  And now the conclusion to the conclusion.  I have learned much about myself, how I learn, how my mind works.  I've come to realize that I have a great aversion to negative consequences and that I can sometimes limit myself because I'm afraid to fail.  I came to the startling realization that I don't even know how much I don't know, and then found myself even more startled to realize that that is a good thing!  It is a wonderful thing to discover the boundless potential of human knowledge.  In this very tiny subsection of all human knowledge, namely computer programming, I realized that what I don't know is the most wonderful discovery of all.  It's wonderful because it means I have the potential to learn so much more and the way to do that (I am coming to find) is to become immersed.  I don't know if I'll ever become encultured into the ranks of the codemonkeys, but I think there is room for me to learn from them.  To observe, to copycat and then allow those experiences to marinate in my mind.  Then, to internalize them and make them my own.  To let them connect to all the other things I've learned.  
  Above all else, I think I've learned that learning is complicated.  It isn't just a response to stimulus, and it isn't just the memory function of the brain.  There is more to learning than just the physical development of the brain, or of the maturing of the mind.  It isn't even fully explained by our interaction with our culture and surroundings.  All of these ideas and concepts can give us insight into a still somewhat mysterious process that happens all the time and without our conscious decision.  We are constantly learning and restructuring what we've learned.  We're constantly sorting out the disequilibrium in our minds, and incorporating what we sense around us.  We are never done learning, and we don't have to strain to do it, but we can focus that learning to be constructive and fun.  We can learn to do almost anything if we muster the motivation and work, work, work, toward it. 

Friday, November 7, 2014

Learning Blog Week 7

Recomplicating the Process

  This week I learned in Ruby how to do a whole bunch of stuff I already knew how to do.  That's right, I relearned how to do a whole bunch of stuff I already learned how to do... only this time I learned how to do it a different way.  I found this weeks tutorials very frustrating as I felt like I was spinning my wheels a little.  I mean, I have a goal to make and I'm relearning stuff I already know?  And further more, now my understanding of certain processes is all muddled up because I can't keep straight the syntax from method 1 and method 2.  

The Experience

  I suppose I pretty well launched straight into the experience this time above, but let me begin from the beginning (the place where all great beginnings begin).  I sat down after having read the How People Learn chapter all ready to experience some transfer, and to think about how the knowledge and skills I've gained have transferred thus far.  I figured I'd talk a lot about the final project, as there is usually a final project at the end of each tutorial, and how I'd do a short transfer from the tutorial to the final project.  Unfortunately there was no final project this time.  However, as I went through the tutorials, somewhat perplexed by the repetition and muddling of the exercises, I realized that there was a lot of negative transferring going on.  What I knew previously was becoming hazy through the onslaught of my current re-learning.  It became very confusing when I was asked to write code to do something and then received feedback that I had done it wrong, even though the code I wrote performed the task at hand.  My frustration was tempered when I was suddenly reminded of an episode I'd had with my 9-year-old daughter just the day before.  She had come to me in tears because she couldn't get three stars on her typing test.  She could get two stars, but not the three she needed to pass the test.  I had her show me the test and how she was doing it.  I remembered from previous experience that she did not use the home row method of typing.  I'd told her before that at some point she should try to learn to use the home row keys, but she told me it was just more confusing.  I told her, if you learn it now it will save you having to learn it later when you've developed bad typing habits.  She didn't see the point, she felt like she could get by well enough with her own method.  I told her, in the future you'll need to type faster and the home row method is the fastest way to type because it puts your fingers in the proper position to type fast, and it allows your brain to have a script of which finger will push which keys.  It allows for automaticity.  She scoffed at me then.  I didn't feel it expedient to throw that in her face as she was already frustrated by the situation.  I tried as mildly as I could to urge her to learn home row.  She was resistant, telling me she needed to get the test done as quickly as she could.  She said she didn't have time to learn home row.  I told her the long she waits the harder and more time consuming it would become.  It's better to take the time now and do it properly.  
  Long story, but I was all of the sudden sitting at my computer trying to kick against the pricks, trying to avoid the methods that the Code Academy tutorials were telling me would save me heart ache in the future.  The new ways of doing things I already knew were being taught to me to help me deal with more complicated coding situations in the future.  The first way I learned it was to help me understand what was happening, and then we were going back through and learning how to make it work at it's most efficient.  At this point the transfer seems to be negative, as I'm still much more confused now than I have ever been at any point in my learning journey.  However, I think that with work the negative transfer can bloom into a positive transfer.  If I can link the concepts and just keep the syntax straight I think I'll have a more complete picture of how Ruby works.
  Now, at this point near the end of my learning experience I began to question the effectiveness of the tutorials.  I am not quite finished with them, so I must reserve judgement till the conclusion, but I thought about the most effective way to transfer knowledge, and I think one effective way to do it is by abstracting the information.  Giving overarching concepts that relate and apply to all the various specifics that come down the road.  I feel like I've been given a high volume of minutiae without some of the pillar concepts to give them stability.  I think this may be why I am still lost as to how all of this stuff I've learned over the past two months can come together to create a website, or an app or anything!  How do these nuts and bolts fit together to build the rocketship?  I wonder if the tutorial makers are relying on the learner to have previous experience with a different coding language?  I wonder if perhaps I should study basic computer science, or web design before proceeding.  Perhaps transfer would be easier for me if I had more knowledge for this stuff to latch on to?  I think the vertical transfer issues I'm having, combining all these little coding elements into one great whole,  may stem from not having the broad concepts I need.  
  Finally, I decided that I should go back over some of my old programs I've done for this course and try to apply my new methods.  This went well for some, and horribly horribly wrong for others.  I made a mess of several of my programs, and without the tutorial and forums for help I think they're better left to die quietly and together in my recycle bin than to make another effort.  The few I was able to retcon worked great, and I feel like some of those concepts may have cemented in place a little bit after doing this activity.  The horizontal transfer, short as it might have been from in-tutorial to out-tutorial programming was effective and helpful in understanding what I was learning.  

Sorry, no pictures this time as nothing I did this week was worthy of an image.  

A final note, 
    In the tutorials I've been doing, there are hints you can click on to get some help if you are stuck.  Iv'e always classified these as scaffolding, which I still believe they are.  However, the way they are constructed reminds me of graduated prompting.  They begin by giving you vague, open-ended questions that help you think back to what you've been learning and other instances from previous tutorials where you've learned applicable concepts.  Then, there is usually a link that will take you to the glossary where you can read about whatever it is you're supposed to be using.  There is usually also a link to the forums where you can ask specific feedback from experts and fellow students, and then if all else fails it tells you that you're allowed to peek at the final project to see how your code is flawed.  

Friday, October 31, 2014

Learning Blog Week 6

Vygotsky

    This week was a pleasure both in my coding projects and my weekly reading.  I quite enjoyed Vygotsky's own words, though I found some of the time got a little bit lost.  The beginning of the article, when he's talking about language and how it changes the way we think and process memory gave me pause.  I am right now learning a language.  It is a programming language, and it isn't the first language I'm learning, but I think having the experience of gaining language has given me a little bit of a hint of what Vygotsky is talking about when he says "In this new process the direct impulse to react is inhibited, and an auxiliary stimulus that facilitates the completion of the operation by inderect means is incorporated." (pg 40)  More on this later

The Experience

  This week my lessons were on Hashes and Symbols.  My task was to build a data base which can be added to, subtracted from and edited.  This made me so happy! I finally found an assignment that might give me a tool to use in real life!  (Read last week's blog for more on this).  I was really excited to take my first real steps into programming a program that I might use.  For this assignment we created a movie database which attached ratings to movies (5 stars, or two thumbs up or whatever) and then you could sort it by rating, or title or whatever.  Despite my enthusiasm, it turned out to be as difficult and as frustrating as any of the previous weeks.  I'm just not detail oriented enough to keep all the minutiae straight.  (I was hung up by a comma for an hour!!)  Anyhoo... I was excited, but the task was pretty tough for me.  I decided I should not toil in frustration alone!  I called my expert friend, who was in the mountains of Idaho camping!  No cell service.  Ok, so I turned to the next best thing (maybe the first best thing!) the discussion forums.  There is a button on the bottom of each instruction which links you to the discussion threads for that topic.
This takes you to a forum where you can ask a question which is then open for anyone to answer.  There are CodeAcademy moderators who comb through and answer questions, and most importantly are the already existing threads from people previously moving through the Ruby class who have the same questions as you do, and have already received answers.  The last time I tried the forums it took a long time to get a response... this time I just looked for questions that looked like my question and read the answers.  So much quicker as I was able to get several responses right away.  It was really helpful to look through the code examples that people posted into the threads and compare what I was doing to what the experts, or fellow travellers in some cases, were doing.
  This is where I talk about the Zone of Disparate Knowledge... I mean, the Zone of Proximal Development.  Vygotsky was very thorough in his explanation of learning, development and the relationship they share.  I appreciated the step by step building of learning vs. development, then learning = development and finally learning + development = ZPD.  In regards to my coding experience (not just this week) it becomes quite obvious that what I know (even now 6 weeks in) is just the tiniest drop in the bucket of what knowledge is available to me.  My actual developmental level, as an adult who has never seriously coded before was pretty low.  Even as an adult!  The computerific mind requires some serious work for those of us who don't think in maths.  It requires a retraining and a development process to force our brains into certain kinds of thought.  Anyway, I feel like my brain is like a giant cruise liner... it can turn around, but it's not easy and it isn't fast.  So, it's hard to really quantify where my baseline was in terms of an actual developmental level since my brain is quite mature (I'm 32) but doing something new.  I guess the best way to say it is that I had the capacity, but not the experience.  My brain was a big empty barn, and the complete world knowledge on Ruby was a giant pile of manure just outside.
   How the ZPD applies to me... finally!  So, cruising the forums all week I learned a lot about how programmers interact with each other.  I had seen this when chatting with friends about programming, but I felt like I was immersed in it as I forced myself to interact on the forums.  I put questions and even took a stab or two at answering some other folks questions.  I felt for the first time the enormity of the collective knowledge, and my miniscule hold.  But!  I also felt the expansion of my miniscule corner.  It felt it expand, and it did this as I tried out expressions... like array and variable and boolean.  (I like that last one... it's nice to say outloud... boooolean).  Communication is elementarily social, and I saw how the language I was learning changed the process I used to make choices.  Now, the process described by Vygotsky is pretty simple, and I'm not saying that the process, you know, this thing: 
  I'm not saying this change in structure, only that the X had changed.  This change in X, the inhibitor, helped me understand how the process works.  By simply having language we process the world in chunks rather than as a whole.  We label everything, give it a value, quantify down to constituent pieces.  Learning a programming language hasn't given me these abilities, but has change the value of those pieces.  So while I'm betwixt stimulus and response my auxiliary stimulus has changed and thus my response has changed as well.  For the better when I'm programming.  In the beginning I felt a little bit of a pre-language impulse response on my part.  At first I couldn't understand what I was looking at... it was all so foreign sitting there on the screen.  I didn't have the language to deconstruct it, so I just began typing whatever fragments I could find... though I'm sure this was even filtered through my pre-existing language-knowing mind.  Now I spend a lot of time in that X trying to abstractly solve how to code things, which sometimes work, and sometimes don't.  

    In the end, I was able to expand my knowledge, learn and develop enough to create this

  Which isn't the website I was hoping to be working on right now, but might be a step in that direction.  I feel like being around an online group of folks who, collectively, have a much larger knowledge base has helped me develop and learn much more quickly and deeply than if I were simply toiling on my own.  I see Vygotsky's ideas of external/social learning becoming internalized in my own mind. 

Friday, October 24, 2014

Learning Blog Week 5

Sociocultural Coding


   This week my computer's video card died.  It's very sad, he was so young!  So, this created some excitement as I have used that computer to do my learning blog.  I had to change a few things from the first four weeks, and it made this week feel particularly frustrating.  First, I had to use my laptop which has a screen half the size of my regular computer (and then take into consideration that I have two monitors hooked up to it and my work space feels very cluttered indeed!)  Second, my laptop is older and slower than my desktop computer.  It can get the job done, but when you're rushing to finish something and have to wait for loading/refreshing/rebooting it can be a bit frustrating.  Third, I'm on a weird work schedule this week and I was forced to do some of my code tutorials from work (which I suppose I'd be using my laptop for anyhow!)  And finally, my laptop does not have all the same programs my desktop did.  So my text program I used to write my codes looked and felt a little different.  All these things are minor in the grand scheme of things (compared to say, the premature death of a video card) but they added up.

The Experience 

   This week I was learning Methods, Blocks, and Sorting.  It was a bit different this week as I didn't have a "final project" per se.  No histograms or redacting program to show for my work.  It just sort of ended abruptly.  So, I took it upon myself this morning to use my new knowledge to create my own sort of "final project" for the week.  I endeavored to make a program that would take a list of titles (any words really) and alphabetize them.  My impetus for this activity was my fascination with the Brown, Collins, Duguid article.  I have often considered myself a poor test taker.  I do not thrive in a silent room full of anxious people with scantrons and essay books.  I have felt as though part of my problem is that I do not study in silent rooms, nor do I use a scantron.  Sometimes I'll write an essay, but it's never all in one go, or by hand.  So, it just has always felt unnatural for me.  This relates to my learning of Ruby in one terrifying way.  My precious and comfortable CodeAcademy templates are not how I will one day be forced to use Ruby to create the website which will house the final installment of this very blog.  Perhaps this fear is why I have tried to use other platforms like Textmate and Terminal to recreate the programs I learn in CodeAcademy.  I am worried that left to my own devices outside of the CodeAcademy website I'll have poor recall of what I've learned.  Here is how CodeAcademy looks:

and here is what Textmate looks like, which is one way you can write Ruby code:

  It's the same code in both, but the CodeAcademy helps you know what you're looking at by giving it a color coding scheme and also adds the indentations to where they're supposed to be, which Textmate does not.  While this is very helpful scaffolding while a beginner learns Ruby and all it's complexity (the indentations and line spacings and word spacings aren't necessary, but they are part of enculturation into the Ruby community.  It makes sense for everyone to adopt the same standards, even if they language doesn't insist on them, so that it's easier to look at each others code.)

  I was asked to add a social/expert element to my original proposal for this learning blog.  After last week, and even more so after this week I see why.  Programming really is a culture, and I've tried to learn it largely from outside that culture.  I have been speaking with my expert friend, and also another friend of mine who doesn't know Ruby but knows just about every other programming language.  When we all chat together (we usually have a Tuesday skype chat just to catch up) they can sometimes lose me with their insider talk.  I've become better at understanding what they talk about though over the past month.  Brown et al talked about the enculturation process in their article.  I think my experience learning Ruby could benefit from more frequent practice in situ with other programmers in person.  I think it could be very helpful to go to my expert friend's house and look at some of his code, and maybe work on something with him.

  This brings me back to my original thought... my website I'm supposed to build in 3 weeks.  I have a sinking feeling about my Ruby abilities, and I feel like the gulf between where I am (firmly scaffolded in CodeAcademy) and where I need to be (free as a lark in the sun!) are more than three weeks apart.  I may need to call in the big guns and get some learning that is geared specifically toward website design/creation.  I need to step outside the CodeAcademy classroom and into an apprenticeship.  I think I'll ask my friend to help me make the website and I can act as his cognitive apprentice.  I can get some authentic activity working with him on websites, and in that way figure out how all this stuff I've been learning actually applies to "the real world". 

  A final note:  I really liked the example of the apprentice tailors being given ironing duty, and yet by doing that seemingly mundane and useless (instruction wise) activity they learned so many of the basics of what tailoring is about.  I hope my coding thus far is more like ironing pants than reading the dictionary.

Friday, October 17, 2014

Learning Blog Week 4

My Brain

   This week I had retention in mind.  I have begun to feel as I've worked through several of these tutorials that I've forgotten too much and I fear my future learning may be hindered by the poor retention.  In my first week's blog I casually said that if I felt the need I could go back and write out an index of sorts of terms and definitions.  I did NOT realize how difficult that would be.  I should have done it.  Now, I find myself straining to recall syntax and functions and how to make my code work the way I remember it should work.

The Experience

   This week my programming tutorial was about hashes and arrays.  Basically what I learned was how to manipulate lists of information.  The tutorial began by telling me that I remember how to do something I learned a couple weeks ago and asking me to provide the correct code to get us started.  Usually these tutorials start out pretty much spoon feeding you answers.  I was taken aback, and a little bit disoriented.  I immediately had to engage my mind, and withdraw some information that I had tenuously stored somewhere in my long term memory.  My memory structure in terms of coding is that of a novice, meaning it's not very organized.  I have bits and scraps laying around here and there, but they are only loosely connected.  The reading this week explained that as we learn new things we naturally re-order them to fit our existing knowledge.  I think my problem is that I don't have much existing knowledge in this area.  The information sort of gets put in weird places that are vaguely similar.  I hope as I go along I'll be able to knit it all together in a way that I'm able to access the relevant information at the appropriate time and in a relatively easy manner.
   So, here is an example of an array in the Ruby language: my_array = [1,2,3,4].  It doesn't have to be a sequence of numbers.  It really can be anything.  my_array= ["hi", "hello", "hola"] is an array with workable data.  This is the information I learned two weeks ago, but didn't use last week.  I had to do some serious thinking before I realized I just wasn't going to be able to recall that information.  So, I did what I should have done in the first place, I looked it up.  It came back quickly as I looked it over, but something else happened almost simultaneously.  I thought I remembered another piece of syntax, but I didn't.  I had a clear recollection of how to gather a piece of entered data by using "gets.chomp".  What I missed was that I had to set an object to the information gathered by the command "gets.chomp".  So my code said something like this :
   
When it should have said something like this:



This false memory led to some real frustration.  I remembered clearly that to gather information gathered from the user of the program you simply put gets.chomp and it would collect the text or numbers entered and store them for use.  So I built my whole program, which was a simple Histogram program, with this bad code in it.  The weird thing is that this mistake doesn't make itself know with an error.  What happens is it collects some information and then uses it, but it's not necessarily the write information gathered.  I didn't notice the program doing strange things until many steps later.  I went over the wrong part of my code over and over trying to figure out what I'd done wrong.  The gets.chomp is something I learned on my first day doing Ruby and it was something I recognized and was confident in.  Reading about the people who remembered the word sweet amidst that long string of words which imply sweetness I felt like my brain had played a similar trick, only not quite the same in that I forgot a piece instead of inferred extra data. 

   I have a long way to go, and many many restructurings of my memory in regards to Ruby, but I think knowing that there is a process in place is reassuring.  Knowing that our memories aren't idle recording devices, but are actually dynamic learning machines makes it easier to accept the frailty of the system, because you also learn about the power of the human mind as well.  What an incredible network of knowledge.  It takes work for sure, but I really appreciated this bit from the conclusion to chapter four, "Although children learn readily in some domains, they can learn practically anything by sheer will and effort."  I think this is probably more true of children with the way their brains work but I can see how knowing about learning can aid in even an old person like myself learning a new trick. 

Here are the screen caps of my program this week:

Code in the CodeAcademy tutorial



And when I rebuilt the histogram on my own


  A final thought on memory

  The book explained that there are two kinds of memories, procedural and declarative.  I think in my learning this past month I have accumulated a bunch of disparate pieces of declarative memory in regards to Ruby syntax and functions, but I think I haven't retained much of the procedural memory.  I haven't developed much skill for programming Ruby, nor do I have ready processes to fall back on or build off of.  I'm not sure if this is because it takes more time to develop procedural memory, or if perhaps procedural memory relies on declarative memory to form an effective network, but I feel as though I will not feel like I really know Ruby until I develop some grasp on procedural memory in this regard. 


 

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