Adventures Into Code

3 months at The Flatiron School, NYC

Code and the Learning Curve

1 to 50. One of the simplest, but most addicting apps out there. A couple students told me about the game a few weeks back and ever since it has become my go-to for killing time on the subway. The concept is simple: find and click the numbers on the grid in order from 1 to 50 as fast as possible.

My first few results were quite bad. 50 seconds. 48 seconds. 47 seconds. However, without consciously trying, my brain quickly adapted to the task at hand. It began looking for patterns, seeking the fastest way to complete the puzzle based on my prior experience. My eyes began to scan the complete grid instead of looking and pecking for individual numbers. Groups of numbers started appearing and within 10 tries I had cut my time average time down to 34 seconds. Unfortunately, I’ve now had the app for two weeks and can’t seem to beat my high score from a week ago of 26 seconds.

What happened? Why can’t I keep learning at the same pace? Turns out, 1 to 50 follows Hermann Ebbinghaus’ learning curve.

1 to 50 is a simple a simple skill. I learned most of what I could learn in a short period of time and have asymptoted out.

How does this apply at all to code?

At first, I came to the conclusion that code follows a similiar learning curve. A beginner coder is a sponge ready to absorb and retain all information thrown his or her way. Wrong. Coding follows the S-Curve.

In this situation, learning starts off slowly and once a foundation is built, begins to increase rapidly. I’d guess that this is the exact reason why Flatiron assigns 100 hours of pre-work before the program starts. It takes time to prep your brain for learning how to code. However, once you make your way out of the weeds, the pieces begin to fall into place. As with 1 to 50, your brain subconsciously looks for, detects, and provides meaning to patterns based on past experiences.

Steve Klabnik alluded to this concept when he came in to speak to the class. While I don’t remember the exact quote, it went something like, “The difference between beginner coders and advanced coders is their ability to spot patterns.”

This idea rang true for me over the weekend. I’ve been building an online coding activity tracker with my group over the past few weeks. The app let’s you track your own progress as well as compare yourself to students in your class. Building the intial database schema along with the ability for users to create/join classes took a couple days. It was our first real foray into rails. Here’s a shot three weeks in. Props to Tyler Davis for the awesome design.

Fast forward to this past weekend when myself and two other students decided to start on a hackathon organizer and listings app called Codewithus. Although the tables are named differently, the basic functionality of being able to create a hackathon, invite people to the hackathon, and join other hackathons is the same. Instead of a day to discuss and build the database schema, it took us 45 minutes. Instead of a day to build out the initial views and the basic functionality, it took us 2 hours (excuse my minimal design skills). Stepping back from the project, I’ve realized just how much myself and the rest of the class has learned in a short time period.

While there’s a never ending amount amount of articles to read, languages to learn, and features to implement, it feels good to know we’re climbing up the curve.