My first programming language was BASIC, starting with Turbo Basic, moving on to Visual Basic. I then took a long hiatus, then jumped back in with Ruby on Rails (RoR). Once I made the leap to object oriented programming, it was a breeze. It literally took me 6 weeks to go from zero knowledge of RoR to a shipping application. So for those of you who are thinking of jumping into it, here’s are my recommendations:
- First, start with Ruby on Rails. I’ve found that its a great development environment and language to start with. I started by using an integrated development environment (IDE) like Aptana, but I quickly moved on to simply installing the base Ruby on Rails environment on my PC and using a straight up text editor – I use E-Text-Editor personally – in order to code. I found that the IDE really kind of got in the way of learning how to code – I had to learn not only the language and the framework but also the IDE itself.
- The first thing I didn’t get was that Ruby is the actual computer language, and Rails is whats known as a framework, a set of standards which someone (namely the people behind 37Signals) developed which uses Ruby in order to more rapidly develop applications. Once you get that, it gets easier.
- Rails makes web development super quick, assuming that you understand the way it works – many of the top sites out there today – Twitter for example – is built in RoR and as far as I know the front end web interface still uses it today (I believe that the back end uses Scala)
- If you are looking for a book to get you up to speed quickly, I highly recommend Learn Web Development with the Ruby on Rails Tutorial. The full book is online, at the link above. If you are more of a paper person, you can grab it on Amazon. More important books to own: Agile Development with Rails, and for a quick reference guide, I recommend both the Rails Pocket Reference, and the Ruby Pocket Reference
- One of the most powerful aspects of Ruby are things called gems. Ruby gems are small chunks of Ruby code which perform a specific function. They allow you to extend the functionality of RoR quickly – for example, lets say that you wanted to write an app to send a tweet. Well, instead of trying to figure out how to write that from scratch, the Twitter gem adds commands to your app to do that in a very simple way. There are literally thousands of gems out there which can really help you to accelerate your development.
- Once you’ve got some apps running, and are familiar with Ruby, your next stop should probably be something like C#. You could try to go straight to Java or C++, but personally I think its easier to make the transition to C# once you’ve learned Ruby.
- If you are interested in developing mobile apps, for something like iPhone or Android, there is no need to jump directly to Objective C, which I find really tough to understand. Instead use something like Corona Labs or if you want to go straight to applying your Ruby knowledge to mobile apps, check out RubyMotion , MobiRuby or Rhodes
More words of advice:
- Watch for version numbers! Make sure that you are running the latest version of Ruby and Rails. Some of the reference books describe different code versions. Always consult the docs for the versions you are using
- A great place to host your stuff for free while you test it out is Heroku. I’ve used them since 2009 and they are great for hosting and testing your apps. Test and demo apps are free, and its easy to scale up if you need to if you decide to launch anything that you are working on.
Good luck on your programming mission, should you choose to accept it.
PS: Now I know that there are a lot of hardcore developers out there who would shun me for recommending something like Rails as a cheat and a shortcut – that everyone should get down and dirty with C++ or Java or something more low-level. I see your point, however, if you ask me, coding is a skill that everyone should develop, and if Ruby is more accessible to people IMHO, why not start there. If they get bitten by the bug, there is no reason they can’t move to more hardcore languages. But if you ask me, this is where the world is going – easier to learn languages and helpful IDEs are the future.