I’ve spent some time working on my latest project blogcastr, which I briefly mentioned previously, and I’ve decided to do something unexpected. I’m going to learn Ruby on Rails. I had started coding a rough mock up of blogcastr in php and became a little frustrated. I’m not a php expert by any stretch but I know enough to get by. I had coded a site that I worked on with my brother in php and I actually rather enjoyed the experience (the site was relatively simple). So why am I making this decision. Well the main motivating factor is agile development. I want to create something as fast as possible using as little code as possible. It was clear that with php I wasn’t coming close to that goal. I did look at several php frameworks (codeigniter being my favorite) but ultimately I decided to take two weeks and try to learn both Ruby and Rails. So far so good. I think I’ve learned the basics of each in two or three days. I just bought two books that I plan on reading to flush out my knowledge and that should take another week or so. I haven’t felt this excited about learning something new in a while which feels great.
My biggest concern in choosing Rails is performance. Everywhere I read about performance related issues popping up and scalability problems. For me this is a tough pill to swallow. I’m a C/C++ programmer and we tend to take performance very seriously. In the world of Web 2.0 no one really seems to care at least until the shit hits the fan. Why? Well I think I understand the problem and it’s essentially two things. The first is that the Web 2.0 world moves fast, so fast that projects you start today may not make sense to start a year from now. In this sort of fast paced environment just getting something that works is WAY more important than spending extra engineering cycles on making your site fly along. For Rails in particular satisfying changing customer needs is certainly part of this as well but it’s really the same beast. The second issue is that of distribution. Web apps are distributed and consumed in a far different manor than say an OS or a conventional video game. If my C application has performance problems every user will feel the pain regardless of how many users I have. If my web app is hurting it’s probably because I have a lot of people using it. For some reason that doesn’t seem like a bad problem to solve. I’m sure there will be performance related issues I hit because of Rails. It’s my hope that the framework is flexible enough to spend a little more time on those places that need it and break free from the framework when required. We’ll see if that happens.
My initial reaction to Rails is bliss. I really like it a lot. I love that I can change from Sqlite to MySQL to Postgres by just changing a few lines of code. I love that the framework knows so much without any required configuration. I love the MVC design which for the first time makes perfect sense to me (it fits way better than the iPhone SDK). I have plenty more to learn but I think that’s a good thing. Hopefully taking a little bit of a diversion will pay off in the long run. My bet is that it does.