Advice for a Java Developer (2008-02-17)
The following is a slightly modified excerpt from an email I sent to a local Java developer interested in Ruby and Rails and looking for some advice. It includes a list of general purpose books I consider worth reading (though the list is by no means exhaustive) and basic tips I give people that are interested in pursuing an understanding of Ruby.
Over the last two years or so there’s definitely been an influx of people from Java, and that seems to be accelerating. Two of the developers I work with, in fact (Brian and Mike), are [somewhat] recent converts from Java; you’re definitely not alone.
With as much Java experience as you have, you probably don’t need a lot of hand-holding; but there are some concepts in Ruby might be somewhat foreign to you (depending on the rest of your background)—specifically concepts like block closures and the level of dynamicism present in the language. If you’re looking for books, I’d recommend you familiarize yourself with:
I think it’s important you get a firm grounding in the language before the framework, but here are some Rails (framework-level) books:
- Agile Web Development with Rails
- The Rails Way
- Rails Recipes (I like this better than “Rails Cookbook”); an up-to-date “Advanced Rails Recipes” is coming out soon.
- Ruby for Rails
Make sure you’re spending time:
- Reading code that highlights “best practices” (The Ruby Cookbook and Rails Recipes books above illustrate some examples); obviously like any community there are differences on opinion on what constitutes good, idiomatic Ruby, but I can give you some recommendations on specific projects
- Spending some time with Ruby developers (Austin on Rails is certainly a good place to start if you’re in the Austin, TX area); collaborate on an actual project if you can, but there’s value in just chatting, as well
- Following what’s going on in the Ruby community; there are a number of websites, mailing lists, and IRC channels that can help
I consider these steps far more important than a full bookshelf.


