Home page for Jason Thompson's Blog

Jason Thompson's Blog

Learning to Code: Fear

Learning should be fun, not scary. But sometimes people are afraid tolearn. I see this a lot when I’m teaching people how to do things oncomputers. They are paralyzed with fear, as if the next menu choice will destroy the computer. I never understood this. I’m an experimenter by nature, so if I can’t do something, I play around until I figure out how.

Then I noticed how my own fears were impeding my learning. This was an important discovery. I began to face my fears and watched them whither away one by one. I’m not done yet, but since I started this process, learning to code has been a lot of fun.

I started messing around with Ruby years ago (before Rails, actually),but I’ve only made serious progress in the past year. When I firststarted I treated the libraries I was using as black boxes, a goodpractice when everything is working. But when something wasn’t workingas expected and documentation was sparse, I was lost because I wasafraid to look at the library’s source. Sure you can just google yourerror message and hope for the best, but even if you find an answer,you’re just cutting and pasting a solution that you don’tunderstand. These days the source for most of the libraries I use isreadily accessible on GitHub, so solving yourproblem is that much easier. And of course reading source code is agreat way to learn about your development stack as well as coding ingeneral. I’m not great at reading code, but, as I tell my daughter,you only improve through practice.

I’ve understood how to use Ruby’s each iterator for along time, and I’d even occasionally reach for map, but Ifound inject scary, so I avoided it. What was I afraidof? I intuitively grasped each, but injectwasn’t so obvious to me, so I avoided it. It was almost like I wasafraid that I wouldn’t be able to grasp it. But a few minutes playingwith it in IRB, and this fear was allayed. There are concepts thatare more difficult to grasp. I’m still working on fully understandinglambda’s and procs, for example, but now I see this as an excitingchallenge, not a reason to run in the other direction. And every timeI face down one of these fears, I gain confidence as a developer.

It’s been months since my last post on this blog. This isn’t because Ididn’t have any ideas. I’ve been eager to start writing about what I’mlearning about Ruby, Rails and programming in general, but I have beenafraid to write about it out of fear of appearingstupid. MM hates that word and admonishes mydaughter and I whenever we use it. She’s right to do so–it’s ademeaning word. So why apply a demeaning word to myself, if onlyindirectly? I’m not a Ruby expert, but their are plenty of blogswritten by great Ruby programmers. Writing about my own journey oflearning will help me form my own ideas and solidify my grasp of whatI’m learning. There’s a reason why you write papers in University. AndI’m confident that others can learn from my epiphanies and struggles.

So I have recognized my fears–what next? Over the last year or so,I’ve learned to see when I’m under the sway of one of thesefears. It’s surprisingly hard to see what you’re feeling when you’refeeling it. When I catch myself wrapped up in fear, I argue with thefear. I’m a good arguer, but it takes a while to apply this skill toown thoughts. The thing is, most of these fears don’t stand up muchscrutiny. Indeed, most of them seem silly once you’ve identified them.

To that end, I’m treating these types of fears as a bucket list. I’vestarted to choose projects that scare me, which turns out to be agreat learning strategy. What’s more, in facing my fears, I’vefrequently found that I’m better at programming than I thought.