I graduated! Or, well, at least I got the certificate! I finally took the plunge this week and took Rails Studio after thinking about it many times. I blogged a day-by-day account -- day 1, day 2, day 3. It's been a long, long time since I've coded anything significant and I'm hoping to get a bit closer to it in some projects coming up. This class was my plunge into Rails.
While I've been away from the keys for a while, I've been very familiar with a number of frameworks and have personally seen teams struggle and thrive in different frameworks. I've really taken note of the "weight" of a framework and the effect it has on a programming team. Something that I think is far too often ignored. We focus on scale, "enterprise readiness" (another topic to post about) and forget that at the end of the day a bunch of developers have to live inside this thing -- and it needs to be nice and hopefully fun.
Now that the class is over, some thoughts.
I came into the class feeling that Ruby was awkward. I had looked at a reasonable amount of Ruby code in examples and books, and had always found it confusing. I guess it would be similar to looking at Perl code and seeing
$_ for the first time. The Ruby code I looked at had these strange
:symbols and odd syntax that just made it seem foreign.
The reality is Ruby is a bit different. Rails has a strong concept of convention. Learning more about Ruby I realize that that admiration of convention starts in Ruby and extends in Rails. I started to enjoy the fluid nature of the language more and more as our class went on. Dave Thomas said that when he teaches people Ruby there is a great moment about half-way through the class. "People start to smile." I can see that. Ruby is a language that encourages you to just try things. The smile comes because a lot of times, it works.
I left the class with more respect for Ruby and a feeling like it was a language I could live with for quiet a while.
Ruby on Rails
I was really impressed with Rails. I've talked with a lot of people, over a lot of projects, about Rails and understood the benefits, but this was my first up close experience. I found myself very happy with the Rails framework and particularly impressed with how much more productive it was than other frameworks I've seen.
It's really clear to me that many of the projects I've thought of would be very achievable in Rails. This validated the premise I'd held for a while with less specific knowledge. I was also impressed with the progress that Rails has made through 2.0.2. Mike and Dave did a good job of highlighting those improvements and updating the training.
I'm pretty excited to start on a small project on my own now. I'm also hopeful that a new version of Agile Web Development with Rails comes soon updated for Rails 2.0.
The studio was great. I highly recommend the training and think that Mike Clark and Dave Thomas did a great job with the class. And, very importantly, Nicole Clark did a great job with all of the logistics. Everything was as good or better than expected and I thought the class materials were top notch.
I particularly enjoyed the structure of the class, working through one application all the way through to deployment. During the class Mike and Dave would occasionally do a "customer routine" where one of them was coding and the other was the fake customer. That was cool to see how well Rails handled quick little iterations.
I really enjoyed Dave's sidebars on various topics Rails. While I'm sure it took us off schedule a few minutes, Dave is incredibly insightful and his comments were always interesting and usually quiet funny as well. "Ship it!" "Get Seriously RESTful!" I highly recommend Dave's blog. It's a good read.
Yes you can!
The best thing about Rails Studio for me is that I feel like I can personally build something interesting again. It's easiest for me to explain this with an analogy. When I was a teenager, I knew a few guys that really knew how to fix cars and make them work. This was a critical need for a teenager from North Dakota with a $100 pickup. However, all these guys had no ability to fix a car with fuel injection. At some point the web got fuel injection and I lost the confidence to build something even small.
Luckily Wordpress has filled that void for me allowing me to blog away, and at time bend it well out of it's prime area to get something out. I left the Rails Studio feeling empowered and capable. That I could create something cool and interesting, functional and useful. That is definitely worth the price of admission.
I also left feeling that I need to do a forced rethink of how I look at building applications. I know the words behind agile development, but I don't think I practice it very well. I get enamored with a single technical problem and dive right down rabbit holes often never to return. The perfect case in point is Road Sign Math. I created a complete schema for the whole thing, plus completely new functions, in beautiful SQL code without a single line of front-end code or even a single web page.
The thing that I saw so clearly in Rails is the ability to develop around a story. And start with simple stories. Don't build your data model, build a story. This doesn't come naturally to me and is something I'm going to work hard to change.