The “conscious competence” learning model describes four stages of competence. The first stage is “unconscious incompetence,” which is the state of not even knowing what you don’t know. Not even Google can help because you don’t even know what to type into the search bar. Last year, when I made the decision to learn how to code, this is how I felt. I was an English major in college and had used it to rack up retail experience. My knowledge of computers, while passionate, came strictly from recreational experience.
As a junior in high school, I remember eating lunch in the cafeteria when I glanced at the next table and saw two people racing to solve a Rubik’s Cube. I clearly remember my brain halting for a moment, processing this information. Up until that point, I had never dedicated and real thought to whether or not a Rubik’s Cube was solvable. I had always just assumed that the cube was a combination of random luck, months or years of effort, and a brain in the same caliber as Einstein. So seeing two peers in a Rubik’s Cube race did not make logical sense to me. This was a turning point. I realized that not only were Rubik’s Cubes solvable but it was a skill that could be learned and honed by people like me. I immediately knew that this was something I needed to learn.
I purchased my first cube as soon as I could get and immediately settled down at my kitchen table with the cube and instruction booklet in front of me. Without hesitation, I mixed up my Rubik’s Cube, knowing that it would soon be back to its original state. After pouring over the instructions and fruitlessly twisting my new toy for two hours, I finally gave up for the day.
Much like the yo-yo craze that took hold of middle school just a few years earlier, I was right on the cusp of a Rubik’s cube obsession that would sweep through my high school. I soon learned that a good friend of mine was also teaching himself the cube and he was about halfway through the learning process. He offered to teach me.
It turns out that there was a ton of conceptual work that needed to be done before I could even effectually use the instruction booklet. I entered the stage of conscious incompetence, slowing learning about all the skills I would need to solve a Rubik’s cube. He taught me the strategy of approaching the cube: working in layers. He taught me the difference between corner pieces and side pieces. He showed me how to tell the white face from the yellow face, and how both of these faces would always be opposite of each other, no matter how much I mixed up the cube. I spent days working on solving the first layer, bringing a color to the bottom, moving it to the top, and matching the right colors with the appropriate faces.
There was a single moment when it all clicked; a moment when the Rubik’s Cube suddenly made sense. I was sitting in the back of my English class, messing around with the cube, and I let out an audible “Ohhhhhhh!” (My poor teachers). The cube was suddenly in my complete control. I solved the first layer, mixed it up, and solved it again with ease. I’d let anyone mix the cube up. They could spend ten seconds or ten minutes, it wouldn’t make a difference. I understood the cube.
At this point, I went back to the instruction booklet and now it was only a matter of memorizing additional moves. Each move was simply a series of twists and spins that would move this cube to this other spot. There is an order the the moves you perform, slowly putting each individual cube into it’s right place. Each move got more and more complicated, with multiple twists and turns, as I moved through the layers. Once I got that, memorizing the move was simply a matter of doing it over and over.
I was sitting at my kitchen table, almost one month after I had first purchased the cube, and I was trying to complete a finishing move. I had many failed attempts at perfecting the final moves over the past few days, and each mistake returned me back to square one. But that afternoon, sitting at the kitchen table, I make one the final twist and looked down to see a solved Rubik’s Cube in my hands. I had done it. I had learned to solve a Rubik’s Cube in four weeks.
Once I could solve the Rubik’s cube, I did it all the time. I did it over and over. My friend and I would sit in the back of class, each with our cubes, and remove a block from a solved cube, flip it, put it back in. We’d see how it affected the final outcome. My speed increased and soon I was able to solve the cube in two minutes. This skill has stayed with me throughout the years. Even if I haven’t touched a Rubik’s Cube in months (or years), I can still solve it within five minutes of picking it up.
Now I’m older and I’ve decided to teach myself how to code. After years of having great ideas but no skills to bring then into fruition, it was time to learn. But I didn’t even know where to start. I started grabbing anything I could, not understanding any of it, getting frustrated, and moving onto the next thing, which also turned out to be impossible to understand.
I was still in a stage of unconscious incompetence. But as I started reaching out to programmer communities, asking enough questions, talking to enough people, reading enough resources, things eventually started coming together. I slowly began realizing the things I didn’t know and started piecing together chunks of knowledge. I found a large number of people offering advice and suggestions, and a few offering to help guide me through the process and answer any questions. These people have been invaluable. All it took was working hard and asking questions.
If I compare my programming knowledge to the Rubik’s Cube, I’m now at the stage where I’m working on solving the first layer, over and over, waiting until it becomes second nature. I’ve become comfortable with the command line, I can version my projects on Github, and can create basic applications when following along with tutorials. This is way more than can be said of my knowledge just two months ago (or even two weeks ago). I feel like I’ve crossed the threshold and am finally at a point where I’m moving forward.
The stage of unconscious incompetence is the hardest to overcome. Learning to program is just like learning to solve a Rubik’s Cube. You’ve got to understand how the cube works before you can even start to memorize the moves.