I spent the week between Christmas and New Year’s building my first Rails app with a lot of help from the amazing Rails Tutorial. I’m a big fan of Michael Hartl’s approach to technical sophistication (googling stuff, being comfortable with not understanding everything you read in the code, and just being resourceful enough to get stuff done).
It’s something I’ve always had more or less but never considered a skill and it took me back to my early days on the web of hacking around with WordPress blogs and figuring out what was going on despite not knowing PHP.
The course took me about a week to go through and around chapter five I veered off a bit from the sample app, which is basically a bare bones Twitter clone, and used the tutorial to build out my own app, a website for tracking your progress as a writer (hey, solve a problem you have, right?).
I found that while I did get a LOT out of the tutorial, it was a help to have already gone through most of the Ruby lesson on CodeCademy so that when I got to the chapter on Rails-flavored Ruby, I learned more because it was reinforcing knowledge that was there but not fully actualized.
But the real learning happened when I started to take the basic structure of what the tutorial had given me and tried to add some features of my own, like a button on the user profile page to update their streak.
It’s a simple feature. Just a form that sends an attribute to the controller, which updates the database record for the user. But it took me like 6 hours to figure out, which seems silly to me now because I know how to do it.
I think that the hardest thing is that while, yes, there is a lot of great information out there on StackOverflow and other places, a lot of times you kind of have to sidestep your way into someone else’s question or problem, figure out if it applies to your situation, and then try the solution on your own problem. In some cases you have to cobble together 3 or 4 tidbits you pick up from various places. And it can be frustrating when someone responds with “just do this” and a line of code, but doesn’t give enough context as to where the code should go (controller or model?).
The way I really solved it though was by realizing that I didn’t have a firm enough grasp on the fundamentals, specifically how routing works. So I read through the Railsguide page on routing and that clarified a lot and gave me a new approach to the problem.
And when it worked, man was that a good feeling. It just clicked and now it seems silly to me that I even had a problem with it. And while I understand most of what was covered in the tutorial, it’s a passive understanding — I won’t really understand it until I have to code it myself.
Anyway, check out the app. It’s a tool for writers to track your daily writing streak, an approach to writing that was popularized by Jerry Seinfeld, who used a wall calendar to make sure that he wrote every day when he was starting out.
I’m going to spend a few more weeks adding features and trying to get more than a handful of users and then move on to something more challenging.