Dr. Strangecode, or How I Learned to Stop Raging and Get Unstuck

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.

Almost 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.


One comment

  1. Something else to consider about this particular experience: Imagine the talent level of the people who developed the CodeAcademy site and tools. They are undoubtedly master programmers and yet, even they can fall victim to a bug or an oversight. No matter how frustrated you might feel as a newcomer to programming (and I promise, you haven’t met frustrating yet brother but you will lol), that even the masters will occasionally get it wrong. There is no shame in a mistake or in getting stuck. Remember, programming by it’s nature is problem solving so real success and talent is not measured by the problems you find or times you get stuck, but by finding a way around them!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s