Sunday, October 30, 2011

Code Academy: Week Four

I've finally taken off on my own. During the first three weeks of the course, I was "coding" during class time with the help of classmates and the instructor or with the hand holding of web tutorials. This safety net was necessary at first but after three weeks under my belt, I decided I'd give everything a try on my own during week four.

During class this week, we worked on our first full scale Rails app. Whereas during the first three weeks we worked on small examples to put concepts into practice, this week we were presented with a more complete picture of a business/site and spent the entire week building out the web application, an airline site that allows users to sign-up/sign-in/out, view flights available, and book reservations. As usual, we were paired up in class and built the application after watching the instructor implement each feature. Working with someone and coding immediately after watching the instructor makes everything a lot easier than it should be and can dangerously lead one to believe he knows what he's doing. This weekend I worked alone to try to build the site from scratch. To find out if I actually knew what I was doing.

The answer - somewhat. I didn't get all the way through and spent a lot of time stuck at various points while writing the code. It took me way too long to get things working but regardless, I feel pretty good with what I was able to accomplish. What I was able to build on my own isn't too far off from what we built in class, and I've found that I understand the concepts we've learned in class much more deeply after having to troubleshoot my errors by reading the Rails guides. The most exciting part is that the site I built has a lot of the functionality that any web application requires; additional features would be nice but as for a basic site that includes just about everything you need, I built it on my own this weekend! Pretty sweet considering I didn't know anything but the name Ruby on Rails four weeks ago and that it was my first time working on my own.

On to week five.

Monday, October 24, 2011

Code Academy: Week Three

I felt more in control during week three than at any other point during the program. Some of the basic steps that we had learned during the first two weeks finally felt like they sunk in a little more, and I noticed that by the end of last week I was able to use those steps without much thought. And those were steps I knew nothing about just three weeks ago, so to put them into practice and every once in a while reflect on how far I've come felt pretty good. Unfortunately, as I feel a little more comfortable with the basics, the more advanced stuff continues to approach and present itself, leaving me feel about as overwhelmed as I did when I started.

A big portion of the difficulty in learning Ruby on Rails (or any type of web development) is that you aren't just learning one thing. Within the first three weeks, I've spent more than a few hours trying to learn the basics of Rails, Ruby, HTML, CSS, TextMate Editor, GitHub, Heroku, and the command line, and each of these aspects alone is the subject of hundreds of tutorials and guides. Rails actually makes it all a bit easier because you can learn all of these things within the context of the framework rather than tackling each of them. For example, you don't really need to know a lot of Ruby when you're first learning Rails and the Ruby that you do indeed need to know, you'll likely pick up while learning Rails. But for me, a process orientated learner, having all of these new subjects and topics thrown at me all at once has been overwhelming. I don't want to learn a new topic when I haven't even conquered the topic that the new one is built upon.

Code Academy has done a good job of feeding us digestable portions of content that limit our exposure to "too much, too soon," and I've found that the Michael Hartl Ruby on Rails tutorial has been equally helpful in providing a very practical and easy to follow guide to learning not just Rails but a lot of the other aspects I mentioned above. So far, the combination of the CA coursework and the tutorial have been a great way to rather quickly learn the basics in a structured and logical manner. I've also spent a lot of time going through the Learning to Program book to learn the basics of Ruby which has helped me better understand Rails. This approach has worked for me up to this point, and I'm starting to feel just about in a position to start building my own projects. They won't be pretty but they'll exist, and that's a lot more than I could have said three weeks ago.

Tuesday, October 18, 2011

Code Academy: Week Two

I haven't really done any useful computer programming or website development. I took some programming courses in college and have messed around with HTML, but I've never actually coded an application or anything (until last week!). So, you can take my opinion with a grain of salt, that of a beginner who doesn't really know any better, but after spending two weeks learning the beginnings of Ruby on Rails, I must insist that it is the coolest thing around if you're at all interested in web application coding. And maybe even just the coolest thing around.

Why? My sexy answer is that as a complete beginner to the framework and the Ruby language, I had a working web application up and running by the end of last week (sexy!). It was a simple bank account site that showed the bank's accounts and each account's balance and allowed you to add, edit, and delete accounts. Each of those functions (add, edit, delete) could be done by a user on the site and his/her actions on the site were completely mapped to a database that kept track of all of the accounts and the accounts' information. Sure, the site looked a little like 1996, but I was able to add all that site functionality with just a few steps. 

Of course, we learned about the unsexy answer too. Admittedly, I'm still trying to grasp all of this, but as I understand it now, Rails is cool because of its slick use of restful routing and its scaffold generator.  Unsexy - 
  • Restful routing - Rails has a way in which it can handle requests and map them to seven different actions and this is all done with one simple line of code
  • Scaffold generate - This generates a database resource based on convention (what you'd initially want 80% of the time)

Actually seeing these two portions of Rails in action is sweet (and much more convincing than my above explanation) and since learning these little bits of Rails, I've started to think of every webpage I visit in a new way, one in which I try to figure out how someone may have built the initial site, and I've started to think of my own ideas within the context of "how would I go about building that using Rails." It's inspiring and yet completely overwhelming. In week two, I grasped the power that Rails can give me but my skills at using that power are still so frustratingly weak that I'm left just slowly chipping away at the overwhelming amount of material to learn so that one day I may enjoy the fruits of that power. I'm not there yet but at least I now know how I might get there - Ruby on Rails.

Monday, October 10, 2011

Hello Code Academy!

I'm back! In the States, that is, and although I plan on writing a few more posts about the final weeks in Kenya and just generally about my experience, this post is about what's next: Code Academy.

I've done some work on the Urban Worm this year and have actually learned quite a bit about setting up a basic ecommerce site, but I've always been very frustrated by my limitations in customizing the design of the Urban Worm and in adding functionality to the site, and that frustration goes way beyond just the Urban Worm. There are plenty of new sites and web applications I've wanted to build but have never had the knowledge required. Enter Code Academy - a beginner focused, 12 week course that will give me all the skills required to not only blow up the Urban Worm into something way cooler but to also build any new site I dream up (check out Look About You for one idea in particular). Last week was the first week of the course, and as a part of the program my classmates and I have been asked to blog at least once weekly about our experience in the program and our paths to becoming coders. Here it goes.

Week one was awesome. We'll primarily learn the Ruby on Rails framework, and I learned more in eight hours of instructed class time than I would have in months of self teaching. I've found that the practical, hands-on Code Academy approach to learning is much more enjoyable (and probably more useful) than what I'd likely pick up in a community college type course focused more on theory. The program is filled with a bunch of very interesting and motivated folks with whom I'm particularly excited to learn, and each of us has been paired up with a local mentor - a Ruby on Rails developer who works within the Chicago tech scene. So far, the learning environment and program has been top notch, and I can't wait to see what the Code Academy community accomplishes by the end of the twelve weeks.

More thoughts to come on week two and with any luck, I'll be able to chronicle more than just thoughts in these posts...I'm hoping to show off some new applications soon (that I build!)!