The Hazards of Being a Beginner

There are few things more perilous then being a beginner.

I've started a lot of projects in my life. When I decide I want to learn something, I go a little hog-wild about it. I dive in. I read everything. I follow the thread of one seemingly-insignificant tidbit until I reach the very bottom of it, and then look to see what is sitting next to the bottom, and follow that thread all the way to the very top. And repeat.

One of the biggest challenges I've faced as a true beginner is knowing when I'm making a critical error and when I'm not. Learning to program (without a teacher or classroom setting) can be frustrating, complicated, and down-right angering. It is also exciting, engaging, and down-right thrilling. Especially when I get something to work.

Earlier this week, I talked about teaching myself to connect to my Raspberry Pi through SSH in the command line. It wasn't easy, and while I had a few web pages open with suggestions and a pair of books to use as resources, I still had to work really hard to understand a series of commands and processes to get everything functioning. Additionally, I couldn't do everything I wanted to do because I was still stuck with a collection of commands and options (namely running a GUI on my Mac from the Raspberry Pi through SSH) that I didn't have the resources or the knowledge to execute. And I was frustrated.

I took some time off from trying to do all the things I want to learn and decided to work on other projects. I crawled back into my comfort zone and worked in environments that are familiar, safe. Easy to navigate and provide a sense of accomplishment. It's been good for me to take a break and get some perspective by taking my focus away from the entirely new skills I'm learning. In fact, taking a break from the SSH learning actually gave me the ability to figure out a solution to one of the challenges I was struggling over.

Take a break. You might learn something.

Coming back to the code today, I had new eyes. I'm still as much a beginner as I was on Monday, but I've definitely grown from my learning. I wouldn't say I've quite "leveled up" yet when it comes to SSH, but I have learned how to to a number of things I only dreamed of a week ago. But returning to my comfort zone gave me the ability to come down from the near-panic. It allowed me access to breathing room, to a familiarity that meant my brain could do some deep processing of the stuff I had learned while spending minimal resources on doing things that were already as familiar as breathing. (I have to thank my friend Katrina for this wisdom, who not only is an early-investor in my learning but also unintentionally gave me a framework for my own learning practice.)

One of the biggest hazards of being a beginner is getting so invested in doing the work, in learning ALL THE SKILLS, that you can't really see when you're making a mistake and you don't always know when to step back and take a break. For me, this week has taught me that I have spurts of learning and growing, and then I need to take a break -- not even reviewing my notes -- for a day or two. When I try to do the thing I've just taught myself, referring to my notes when I get stuck, I find that I don't need to look at them so much, and the steps of the skill, the code itself, feels more comfortable and makes more sense than I could have ever expected.

How do you work through learning new skills?