Saturday, July 19, 2014

Re-Teaching Myself to Read

When I was a kid, I did most things because I was told to.  I was mortally afraid of “getting in trouble.” I didn’t know what trouble entailed, but in my imagination it was a dark pit of shame that you would never escape from.  


Being a “good girl” is a great strategy for excelling at K-12 tasks. Show up on time, speak at appropriate moments, turn in homework that is perfect because your father has already checked it for mistakes. You will get A’s, you will be liked, you will get into college, you will feel superior in some small way to most of the world.


However, once you get beyond the realm of K-12 style education and life gets harder, this strategy is less effective. It doesn’t fail you altogether, you can work harder as the challenges get bigger, but you do start to get the feeling that you’re constantly at the end of your rope, that you’re barely hanging on, that if the challenges move one inch further out, you’d fall off the ledge.    


What happens when the good girl strategy is pushed to its limit? It’s simple, you have to rebuild your life.




For the past year, I have been re-teaching myself to read.  For my entire life I have read the books that I was told to. This includes all the extra credit books. Once books stopped being assigned to me in college, I still read the books that felt the most “respectable” - Joyce, Hemingway, Dickens. Books from boyfriends, and bosses and lists titled “Warren Buffet’s Top 30 Business Books”.  


Not only did I read what they taught me to, I read how they taught me to: one word at a time, reading “aloud” to myself silently without moving my lips, from the first page to the last, never looking back.  I just kept turning pages.  It never occurred to me that there was another way to read.


By some coincidence, I have met three people who read at least twice as fast as me and with considerably higher comprehension.  Meeting one was a fluke, meeting two made me curious, meeting three convinced me I was missing something.


Plus, I was jealous.


I queried them extensively about how they read so fast and so well. The first thing they said was that they don’t read the words aloud to themselves silently.  At first, I was skeptical.  That’s how I was taught to read, surely that’s the only way to do it.  But no!


There are more things in heaven and earth, Horatio,  
Than are dreamt of in your philosophy. 
- Famous play, 12th grade AP Lit.


I went to the internet.  The term for reading aloud to yourself is “subvocalization” and it is how many people are taught to read and how many adults still read. But it isn’t necessary. It is a hard habit to undo. There was no sure-fire method of doing it, but I was filled with excitement of the possibility of there being another way.


I read the entire internet on the topic of “speed reading.” There wasn’t too much that was definitive.  A lot of big promises, an equal number of doubters. Not a lot of evidence.  I wanted to believe, so I took three online speed readingclasses.”


They were full of exercises like this:







I did these for a year.  Sometimes I felt like I was progressing, sometimes I didn’t.  At the one year mark, I thought I had probably made some speed improvements, but I wasn’t making comprehension improvements, but most of all, I was still subvocalizing. I had basically failed.


Then I was depressed all over again.  It turns out the “good girl” strategy of reading instructions and taking classes couldn’t deliver the miracle I was promised. The thought that kept going through my head was “oh fuck.”


I let go of the speed reading thing, and I retreated from the whole experiment.  I went back to my old way of reading, and realized it wasn’t so bad after all.  At least it got the job done.


A few months later, I was waiting around at home, a little bit bored.  I picked up a fantasy novel off the shelf. I decided to try reading it fast, by basically just glancing at the page and trying to “grok” it. This was one of the reading techniques I had read about. I “read” the first chapter. It was short - only 4 pages.  At the end of 4 pages, I admitted to myself that I really didn’t get a damn thing out of it. So I read it again. I understood a little bit more. But I still didn’t get it. So I read it again.


I read the first 4 pages at least 8 times, but the end of the 8th time, I felt like I grokked it.  I didn’t just feel like I’d read it, I really felt like there was nothing else to get from those four pages.  Then I went on to chapter 2.  


When I started Chapter 2, it felt different.  It wasn’t any faster, I wasn’t speed reading.  The difference was that it was fun. More fun than reading had ever been.


I kept reading.  If I ever didn’t totally grok what I was reading, I’d start cyclically reading paragraphs or pages until there was nothing more to get.


Here is a passage I read the most from Terry Pratchett’s Fantasy-Humor novel “Guards! Guards!”.  I must have read this 10 times before moving on:


“And because magic can only loosely be bound, the Library books themselves were more than mere pulped wood and paper.

Raw magic crackled from their spines, earthing itself harmlessly in the copper rails nailed to every shelf for that very purpose. Faint traceries of blue fire crawled across the bookcases and there was a sound, a papery whispering, such as might come from a colony of roosting starlings.  In the silence of the night the books talked to one another.

There was also the sound of somebody snoring.”


The first time I read it, all I got was “books, library, magic, blue fire.”


The second time I read it, all I got was questions: “Earthing itself harmlessly?” huh? “Blue fire crawling?  Fire doesn’t crawl....”


The third time I read it, I was like “‘copper rails’ that’s oddly specific.” “books whispering? Faint traceries? That seems connected somehow…”


The fourth time I read it, I was like “earthing itself… could that be like grounding itself?  In an electrical sense?  Blue fire! Like electricity. Oh! copper! It’s a conductor of electricity! The whispering is like the little noises electricity makes! OH MY GOD! I GET IT!!! IT’S AN EXTENDED METAPHOR!!! The books are communicating with each other via electricity, and they're alive. They can only do that because they’re all grounded and thus connected to one another because they’re all connected to the earth. The electricity is part of the magic that makes them come to life.”


Go ahead.  Reread it.  See if I’m right.


I was so excited! Reading had never felt this good! It was like a puzzle where the author was giving me clues, and my brain was putting them together all by itself.  The more I just let my brain do its thing, the more I would get.  Forcing myself to keep reading page after page was holding me back. I thought I knew how to read, but I didn’t know the first thing about reading. Just like when you read books aloud to someone else, you don’t get it that well, when I was reading them to myself silently I wasn’t getting it that well.


I reread the last line, “There was also the sound of somebody snoring.”  This is a clue! A clue that the author is going to transition to talking about somebody else.  I can swap all this magic-library-book-metaphor out of memory and reset my brain for what’s coming next and start looking for new clues. This is reading!


Now, this is how I try to read all the time.  It’s not speed reading.  It isn’t faster than normal reading.  If anything, it's slower.  But it doesn’t matter.  My problem was never that I didn’t read fast enough, it was that reading wasn’t enjoyable, and so I didn’t do it.  I actually have plenty of time for reading, if I want to.  


There still may be plenty of things I have to learn about reading.  I still subvocalize and the good-girl outlook is still strong inside me. But at least I have proven to myself that in this one case, I had plenty of things to unlearn and it was possible to reteach myself.  There are probably plenty of other things for me to reteach myself. There is an escape from the feeling of being one inch away from falling off the cliff.

Life strategies are like software, you should plan to throw one away.

Friday, July 11, 2014

Who should I blame?

I have helped many students debug their code. Helping students learn is deeply satisfying to me. But, although I enjoy teaching, I have one pet peeve. It usually goes like this:

Student: "My code won't compile.  I think the compiler is broken."
Me: "Really? What happened?"
Student: "I ran my code, and it just spit out a lot of errors, but I know my code is right."
Me: (looks at compiler error, clicks the first link): "I think this function is supposed to return something"
Student: "....oh."
When there is an error, students will blame the compiler, they blame the starter code, they blame anybody but themselves. This irks me because their logic is so obviously wrong: you have been coding for 1 year, GCC has been around forever. What is the probability that it's really the compiler's fault?

I had a change of perspective on this matter. For the first time in a long time I was using Java to complete an assignment. It was a large, computationally intensive program. I was reimplementing collaborative filtering to run on the Netflix challenge. At some point, I ran my code and got this error:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
 at java.util.HashMap.<init>(HashMap.java:209)
 at java.util.LinkedHashMap.<init>(LinkedHashMap.java:181)
This seemed like the worst possible news to me. I bemoaned by problem to another student:
Me: "Oh my God! I broke Java.  I used up all its memory."
Student: "Did you tell it you needed extra memory?"
Me: "Huh?"
Student: "Just type -Xms512M -Xmx1024M"
Me: "...oh."
I was so embarrassed. I'd violated my own pet peeve. You would think I'd have my priors set correctly on the error being my fault, not the compiler's.  I started to wonder, maybe it isn't about priors.

Over the next months, I started to note other ways of blaming a system for things that were really my fault:

  • "%^*##%ing CSS! What an idiotic way of designing a system."
  • "WHITESPACE?! Whitespace CANNOT be a bug. Damn you Python!"
  • "Why do I have to tell you to convert this number to a string. I'm printing it! Can't you figure it out!"


This list became long and I read it many times. Although it was painful to admit, I had to draw a conclusion that most of my time spent "fixing" bugs is actually spent swearing at my bugs.

Faced with the aggregate of all my time wasted in frustration, I decided that I had to change. I didn't want to waste my life swearing at a compiler that couldn't hear me. I decided that regardless of whose fault the bugs were, I had the power to change myself, and I did not have the power to change the compiler. With that insight, I realized what was really going on.

  • I want to find bugs in my code.
  • My limitations have caused these bugs.
  • I need to acknowledge my limitations to find my bugs.
  • I don't acknowledge my limitations because it is painful.
  • The only way forward is to change my attitude toward my limitations.  
  • Therefore, I have to want to find my limitations.
This small change in perspective made a world of difference in my debugging. Debugging was now a learning opportunity rather than a swearing opportunity. In a way, this change of perspective make me smarter.  Ironically, in order to become smarter, I had to stop thinking of myself as smart. I had to acknowledge my limitations and face them.

When students are learning, they blame the compiler simply as an act of self-preservation. Gradually relaxing that need is one of the life lessons that computer science teaches us.