For the past two years, RubyLearning has been promoting the Ruby language world-wide, by conducting its Free Online Ruby Programming Course. 1000s of participants have either completed or are in the process of completing the course. Most Ruby course participants have a plethora of questions related to the language; opportunities in Ruby; Ruby’s future; Rails etc.
Satish Talim of RubyLearning talked to BuildingWebApps, to get their views and opinions.
BuildingWebApps is a project of Collective Knowledge Works, Inc. They create platforms for organizing and sharing the knowledge of a community. The first community upon which they have focused is their own: Ruby on Rails developers..
We are pleased to have with us, BuildingWebApps’: Michael Slater President of Collective Knowledge Works, Inc. He would give us his perspective on the various questions facing the course participants – the would-be Ruby developers.
Satish>> A warm welcome to you. For the benefit of the course participants, could you tell us something about your self?
Michael Slater>> I’ve been working in high technology for more than 30 years. I started out as a hardware engineer at Hewlett-Packard developing microprocessor-based test equipment. I spent several years as a consultant building embedded microprocessor applications, and I ended up writing a lot of assembly and C code. In 1987, I created the Microprocessor Report newsletter and the Microprocessor Forum conference, and that began a 12-year adventure in the publishing and conference business that led me away from engineering. In early 2000, I left this business, after selling it first to Ziff-Davis and then to Cahners, to launch a venture-funded startup in the digital photo space. We sold that company, Fotiva, to Adobe in late 2001. The software we built become Photoshop Album, and then the Organizer mode of Photoshop Elements (on Windows only). I spent five years at Adobe managing a research team doing advanced photo management work. During the time I was at Adobe, I built a resource site for San Francisco Bay. I build this in PHP, and learned a lot about how painful that can be. I learned that I love the interactivity and immediate feedback that the web offers. And the experience with PHP, and with building a fairly complex application without any framework, really set me up to appreciate Rails. I tried unsuccessfully to get Adobe into the online world several times, and eventually left to build web applications on my own. I had started a Rails project at Adobe in early 2006, but it never saw the light of day. When I left in November 2006, I began working as an independent Rails developer. While working with Rails, I became frustrated with the lack of any cohesive on-line resource. The framework changes too quickly for books to remain up-to-date; the Rails wiki isn’t adequately maintained; and although there are lots of great articles scattered around various blogs, they can be hard to find. So with the combination of my experience building Microprocessor Report and BoatingSF, and my interest in the Rails world, I decided to launch BuildingWebApps.com, which I hope to build into the best online resource for Ruby on Rails developers. In mid-2007, one of my Adobe colleagues, Christopher Haupt, left the company and joined me in forming Collective Knowledge Works, Inc. Chris led the online services group in Adobe’s digital imaging operation and is a real expert in web technologies. We’re taking the platform we’ve built for BuildingWebApps.com and are evolving it into a hosted offering for anyone who wants to build similar sites on other topics, combining a rich database of information with community features. Our goal is to create the leading next-generation platform for community sites that are focused around a specific body of knowledge.
Satish>> You run a Free Online Ruby on Rails Course which is complementary to the course we run at RubyLearning. Could you tell us more about this course?
Michael Slater>> One of the first things we did when we were launching BuildingWebApps.com was to create the Learning Rails podcast to help spread the word about Rails. We want to demystify Rails and help web developers, who may not come from a software engineering background, to get started with Rails. For people who don’t have experience with object-oriented programming or model-view-controller architectures, the learning curve can be very steep if you try to learn from the existing books.
When we began adding screencasts, we decided to set it up as an online course. People can sign up to receive the course via email (www.BuildingWebApps.com/learning_rails), and every three days we send them the next lesson. There’s eight audio podcasts, and we expect to have about ten screencasts. We solicit feedback and respond to questions via comments on the lesson pages.
Satish>> Is it important to learn Ruby on Rails for a Ruby programmer? If yes, why?
Michael Slater>> It depends on what you want to create with Ruby. If you don’t want to build web applications, there is no need to learn Ruby on Rails. But if you want to build web applications using Ruby, you should learn Ruby on Rails. It provides a tremendous amount of infrastructure that makes it much easier to build a web application. It really wouldn’t make sense to build a web application in Ruby without using some sort of framework.
There are other frameworks for building web applications with Ruby, of which Merb is the most interesting. But there’s a vastly larger community working with Rails, and much more information available on using it.
Satish>> What do you like / love about Ruby on Rails? Why?
Michael Slater>> Once you’ve climbed the learning curve and are comfortable with Rails, you can be incredibly productive. One person can build an application in a month that would take a team of three people several months in Java. Smaller teams are more efficient, which multiplies the productivity gain. Ruby on Rails makes web development fast and fun, and most important, makes it easier to evolve and meet user needs.
Rails makes it easy to make changes, which is important for iterative development. For example, suppose you want to add another field to your database table. It’s easy — there’s no SQL to write, no XML configuration files to update, and the Rails migrations handle the updating of your database schema.
This flexibility is crucial for web applications, in which the old-fashioned “waterfall” design approach really doesn’t make sense. You need to first build something simple, then use it, get other people using it, find out what works and what needs improvement, and iterate rapidly. Rails is very well suited for this kind of development.
Although the Rails community is still small compared with that of PHP or .NET or Java, it is now reasonably large and has reached critical mass. There’s more than a dozen Rails books, several very active online forums, and an assortment of conferences and seminars. When you need to do something, there’s a good chance someone else has already done it and written it up, which can save lots of time.
Satish>> What are the attributes of really good Ruby on Rails developer?
Michael Slater>> First, a good Rails developer needs to know Ruby. You can get started with Rails with only a bare minimum of Ruby knowledge, but as you go deeper into Rails development, being comfortable with Ruby is essential. The better your Ruby knowledge, the more you can do with Rails, and the more efficiently you can do it.
Second, a good Rails developer needs to know the Rails framework thoroughly. There’s a lot there, and it takes time to learn. There’s no substitute for experience.
Third, a good Rails developer needs a good sense for user experience. Rails is most effective when the developer can also play the role of interaction designer, at least to some degree.
Finally, a good Rails developer needs to have the testing religion. Rails includes extensive built-in facilities for incorporating tests into your application, but nothing forces you to use them. You need to understand the value of testing and develop good testing habits.
Satish>>How do you keep your skills sharp and keep up-to-date with the latest developments?
Michael Slater>> I read a lot. I’ve at least skimmed most of the Rails books that are out there, and when new books come out, I always buy them. I’m something of a book nut. I also keep up with quite a few blogs (some of which are listed below).
Colleagues are invaluable. I’ve learned a great deal from my partner, Christopher Haupt, and from other developers I’ve worked with. Pair programming is a great way to learn.
I like screencasts too. Geoffrey Grosenbach’s Peepcode.com has produced a lot of great screencasts, and Ryan Bates has produced an amazing stream of short, focused, free screencasts on specific Rails techniques at railscasts.com.
I also go to seminars, conferences, and user groups. I’ve been to the introductory and advanced studios from Pragmatic Programmers, and they are excellent. RailsConf is always a fire-hose of new ideas and inspirations. And I participate in my local Ruby users groups.
The most important thing, though, it to keep building applications. Every time I want to implement some feature, I dig in and learn about what others have done, and experiment on my own. There’s no way to just methodically go through all of Rails and learn it — it takes a back and forth, learning and building, learning and building.
Satish>> Which sites / blogs do you recommend, so that the participants are always abreast of the latest developments in Ruby on Rails?
Michael Slater>> Well, I’d be remiss if I didn’t point out my own site, BuildingWebApps.com! We aggregate the best content from all around the web, as well as publishing our own original articles, podcasts, and screencasts.
In the Ruby world, I like Peter Cooper’s rubyinside.com. For Rails, there’s nothing better than Jamis Buck and Michael Koziarksi’s writing at therailsway.com. Other excellent blogs include Jay Field’s blog.jayfields.com and Josh Susser’s blog hasmanythrough.com. And there’s many more — there’s an extensive list at BuildingWebApps.com.
Satish>> What according to you is the future of Ruby on Rails?
Michael Slater>> I believe Ruby on Rails is poised to become one of the most important web application frameworks, and to hold that position for quite a while. It won’t dominate — there are other worthy frameworks and languages, developers may prefer different solutions depending on their background and experience, and it isn’t the best solution for every application.
But for the vast majority of new web applications, I believe Ruby on Rails is an excellent choice — maybe even the best choice. I expect many developers to shift from PHP (with or without a framework) to Rails, as well as from Java-based frameworks to Rails. There will always be a strong following for .NET, but many developers will follow the lure of open source and end up using Rails.
There’s a tremendous amount of energy and expertise being devoted to the ongoing development of Rails. Look how far it has come in the past two years — and there’s far more people working on it now than there were two years ago. I expect to see steady improvements in the Rails framework, making it an even better solution to common web developer needs in coming years.
Satish>> It has been fun interacting with you and thank you for sharing your views with the RubyLearning participants.