Dabbling In Programming? Start Here

My first programming language was BASIC, starting with Turbo Basic and moving on to Visual Basic. I then took a long hiatus then jumped back in with Ruby on Rails (RoR). Once I leaped into object-oriented programming, it was a breeze. It literally took me six 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 are my recommendations:

  1. First, start with Ruby on Rails. I’ve found that it’s a great development environment and language to start with. I started by using an integrated development environment (IDE) like Aptana. Still, 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 – to code. I found that the IDE got in the way of learning how to code – I had to learn the language, the framework, and the IDE itself.
  2. I didn’t get that Ruby is the actual computer language. Rails are a framework, a set of standards that someone (namely the people behind 37Signals) developed, using Ruby to develop applications rapidly. Once you get that, it gets easier.
  3. Rails make 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)
  4. 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. You can grab it on Amazon if you are more of a paper person. 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.
  5. One of the most powerful aspects of Ruby is things called gems. Ruby gems are small chunks of Ruby code that perform a specific function. They allow you to extend the functionality of RoR quickly – for example, let’s 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 straightforwardly. There are thousands of gems out there that can help you accelerate your development.
  6. 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 it’s easier to make the transition to C# once you’ve learned Ruby.
  7. 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.

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 it’s easy to scale up if you need to if you decide to launch anything you are working on.

Good luck with your programming mission, should you choose to accept it.

PS: Now I know that many hardcore developers out there 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.