Frustrating. Just spent 20 minutes banging my digital fists against a wall, wondering why I couldn’t solve this simple, baby-spoonfed problem. Feeling like an idiot. Wondering why I couldn’t get it right. Even starting to doubt myself a little bit. Was I really cut out for this?
The challenge was to create an array sorting method with a reverse-alphabetize function. You can find it yourself in the Ruby training. It’s in chapter 10, Ordering Your Library, lesson 5/6. I’d link it, but I’m mad. Because the solution thingy was broken.
When I stopped groaning and let myself check the Q&A forums for a lifeline, I saw that my code was actually a perfect match to someone’s submitted solution. The only issue was a glitch in the system. Vindicating, frustrating, and kind of inspiring. Because, when I was stuck, I tried different solutions that looked more wrong, but ultimately came back to the one that felt right. And it was right.
Despite the occasional flaw, Code Academy is great, and the greatest thing about Code Academy is this little picture-in-picture window next to your code, where you can see your work running immediately after you write it. I’m good at context clues, and I’d been seeing “nil” show up on incomplete code a whole lot. Basically it happens when the program is done running, and there’s nothing to print. The Ruby tester throws the word up to confirm that something happened and that it then finished happening. Even after I tested what I “knew” to be the right answer, I was getting that nil. No output, just nil.
Luckily, looking up your learning styles and using knowledge of self in your workflow is a mandatory part of DBC prep. Last week, I had reaffirmed something I’ve known about myself since I was 7 and reading my parents’ books about raising me. (I may have been an annoying little s*** at age 7, but at least I was an informed one. Wait, maybe I was a little s*** because I was informed. Moving on.) I’m a concrete random learner. Which means, among other things, that I’m a verbal guy, and I do a lot of experimenting to solve problems, and I need to do things my own way.
Oh, and that I do things out of order sometimes. And I digress a lot. I know I was talking about fixing the nil. Let’s revisit that.
Working out of order, doing little chunks of everything in the Dev Bootcamp prep packet, I had already installed Sublime Text 2 and set up my Terminal to handle Ruby, Rails, Git and Heroku (no idea why yet, but dammit, I did it). It’s how I became prepared to work through Chris Pine’s Learn to Program text. Now that I knew Code Academy’s tester was suspect, I reverted to tech I knew I could trust. I copied my code into a Sublime file, saved it as a Ruby app, and loaded it up in the command line. Bingo! Nothing showed up.
Long story short, the Code Academy chapter had been letting me get away with a misplaced and/or unspecific “puts” command (puts prints things to the screen and then starts the next work on a new line). With the code in a different window, I felt freer to explore. And I fixed the glitch in a couple quick keystrokes. That felt good.
I think I can understand the frustrated “stuck” feeling that DBC graduates say they broke free from at Dev Bootcamp. They say that learning how to get unstuck is one of the most important skills in a good programmer’s toolbelt. And they also say that short bootcamps do a great job of sharpening that particular tool, by surrounding you with other strugglers and mentors who know how to bring a stuck student into an aha! moment.
Learning is always hard, and it’s always fun. I think I learn things a bit more quickly because I have more fun learning. But there’s nothing fun about getting stuck because your teacher screwed up, or because your textbook was misprinted. Code Academy is way more good than bad, but I can see where the rough patches would stop others from moving forward on a path of self instruction. I just see the roughness as reinforcement that I can’t learn optimally in a suboptimal environment, and it’s hard to gauge how good a learning environment is when you hardly know anything about the material.
That’s why I wanted to go to Dev Bootcamp in the first place. I know I’m smart enough to take a couple years, muddle through things on my own, and get enough groundwork in to apply at a program that’s less “0 to 60” and more “20 to 90.” But I don’t want to waste years on silly hangups when I know my own potential is so high. I want real people, with real job experience in a real market, giving me the tools I really need to push beyond myself. The kind of tools where it won’t matter if I know the “right” coding language, or the most elegant solution, at least not this instant. Because I’ll able to adapt, able to grow, able to get myself unstuck from anything.
To do that, I’ll need more than hours alone at the computer. I’ll need a good human teacher and a kick in the pants.
From a boot, preferably.