I was having a problem with some programming this week. I know what I want to make, but I don’t have enough experience to really get it done. I don’t see the whole picture. I hesitate to commit thoughts to code. It feels like everything I do could be sub-optimal in some mysterious way.

Welcome to some ring of coder hell.

You’ve been here, right? For some code, we just roll up our sleeves and get to work. When we’re unsure with a new skill, framework, language, project, whatever, it’s slow going. It takes a special commitment to get past these particular problems. We need deeper learning and some real practice.

The deeper learning part could be jump started with SQ3R:

  • Survey: get the gist of some content
  • Question: write down some questions
  • Read: read the content, making notes of terms and answers to questions
  • Recite: literally talk to myself (out loud) after reading
  • Review: take a look at questions and notes a few times in upcoming days

This isn’t new for me. Andy Hunt wrote about it in his book, Pragmatic Thinking and Learning, in 2008.

In this case, I had read a book last week about these things, but it didn’t turn into active coding immediately. I read the book in the regular way…I just read it.

This week, I came back to the book, scanned it, wrote down a few questions and re-read some chapters. Then, I sat in my office and talked it through. OK, I’m kind of nuts, because I don’t mind talking to myself. It’s a part of discovering important things. It’s one reason working at home can kick ass sometimes. As I talked it through, some of the quotes from the book really started to take shape for me. Since then, I’ve been reviewing my notes, practicing some code.

I’m not blocked anymore. Progress is at a more-regular pace again.

I’ve done this a lot before, so I know how it turns out. I just forget how to get the most out of my study time sometimes. Maybe I’ll remember this next time I take on an ambitious project with new-to-me technologies.