After completing 8 weeks, I have hit a critical point in my learning to program journey – I’ve begun coding my first app. I feel a new excitement because this is what I’ve been working towards for almost 2 months now. But, how did I arrive at the point where I was comfortable enough to start programming my own app?
tl;dr: I didn’t feel comfortable. I felt nervous and unsure of my abilities. But, to make my learning process more targeted, I needed a project to direct what to learn next.
Where’s My ‘Aha’ Moment?
Remember those standardized tests we took throughout elementary and middle school in which we proved our arithmetic and reading comprehension was sufficient to move us on to the next grade? There’s no equivalent competency test in computer programming (at least that I’m aware of). So what did I use to evaluate my own proficiency, in that I had acquired the necessary foundation to begin programming on my own?
Here’s the funny part – there was never a moment when I hit a particular milestone or understood “enough” technique that told me I was ready to begin building. Interestingly, it was more a specific moment at which I felt continuing the tutorials and intro lesson were no longer beneficial.
It occurred to me while reading about cookies and storing sessions in Action Controller in the Rails Guides. At that moment, it struck me; how can I understand the impact of cookies with no frame of reference? I realized I’d hit the point where I needed to build an application in order to guide what is relevant for me to learn.
Additionally, my mentor through this process assured me that I’d never get to a point where I felt perfectly comfortable building on my own. Part of learning to program adventure is diving into unknown territory.
Hitting Highs and Lows
Starting on my first project was a rush. This euphoria was quickly followed by the realization of how lost I am. Staring at a blank project made my brain feel like it had been on the tea cups ride at DisneyLand.
But these mini-panic moments are actually helpful. Hitting a moment when I don’t know how to move the app forward, are actually learning opportunities (disguised as error messages) literally popping up on my screen.
With my foundation from 8 weeks of tutorials, I’ve built a simple app. Each step in the app’s functionality that I can’t execute sends me a quest for answers. Using StackOverflow, blogs, and Twitter, I’ve found help and overcome obstacles.
This is the essence of project-based learning. Rinse and repeat this break-learn-build process a few hundred times and I’ll have built a functional web app while learning Ruby.
At least, that’s the plan.
Update: Join the discussion thread on Lobste.rs
Featured image courtesy of Rishi Bandopadhay