At the start of this year I participated in the EDX.org University of Berkley Software as a Service course, which taught the fundamentals of software engineering using Ruby on Rails.
Before taking this course I had never had any experience with either Ruby or Rails, and didn’t do quite as much of the prep work as I should have. Needless to say, I was foolishly overconfident and definitely had a few tough weeks playing catchup as the course dived headfirst into the material with strict deadlines for problem set submission.
While I was able to finish the course with good grades, I didn’t feel like I truly learnt Rails. After a few months of learning other topics and learning Ruby from the ground up, I decided to go through the Hartl rails tutorial. This was a fantastic, steady-paced introduction, but still at the end of the tutorial my primary thought was “great – I can copy code from a book and just about work through most exercises, but did I really understand what I was doing?”. It hasn’t been until I’ve actually started working on my own projects that everything has finally started to click.
After going through the Hartl tutorial, I made a simple one-page app that used a static page controller.
I guess the point of this post is to say that it can feel like you’re making progress by reading books, going through tutorials and completing exercises, but it’s really nothing without the unstructured, exploratory learning you achieve by building something for yourself from the ground up.