Programming. You can always do it better. There’s always someone on the horizon that you’re aspiring towards. It’s the best thing about this career: to learn is to succeed.
Today I’m sharing a bunch of the resources I use to continually retain and expand my programming knowledge. Yes, it’s the blogging equivalent of a clips episode.
Code School - TryRuby : “Got 15 minutes? Give Ruby a shot right now!” Code School lessons are all pretty much superb.
The Ruby Game : submit code via the website to try and solve the weekly challenges. The problem definitions are not too basic and you get to submit code for immediate feedback. It’s pretty fun to see just how close to can get to the shortest or fastest rankings. Unfortunately it hasn’t been updated in a while.
Ruby Monk : a great interactive tutorial of the basics of Ruby. It’s a great series that starts to get into some good stuff, but is still incomplete.
Ruby Koans : a meditation on Ruby and Test Driven Development. If you’re like me, you’d rather clone a git repo than unpack a zip file. Here’s the Ruby Koans on Github. If you are new to either Ruby or TDD these are just great. I periodically go through them as a kind of code meditation.
git clone https://github.com/edgecase/ruby_koans
Ruby Warrior : a game to teach both Ruby and artificial intelligence. I haven’t gone completely through this one, but what I’ve seen has been a lot of fun.
Ruby Kickstart : a series of challenge sessions to teach Ruby concepts. It’s a little bit dated and rough around the edges, but if you clone the github project you’ll get a nicely structured set of incremental Ruby challenges designed in a TDD progression. It has a companion website with quizzes and tutorial videos, but the real goodness is in the github project.
Hackety Hack : Does that name sound familiar? It should. If it doesn’t, then click the link and see what you’ve been missing.
Ruby on Rails Tutorial by Michael Hartl : Don’t know Rails? Start here. You will learn git, heroku, TDD, and Rails via a fantastic guide. Know Rails? Periodically refresh your skills by going through this guide. He’s going through and making a full update for Rails 3.2, nice!
RailsCasts : I don’t think there’s a Rails programmer out there who doesn’t owe Ryan Bates. His RailsCasts web series are simply the definitive standard by which all other Rails screencasts are judged. If you’re new to Rails and want to quickly get something up, running, and looking pretty: check out his Twitter Bootstrap Basics episode and follow along.
No, seriously. RailsCasts is incredible. I don’t think you’re quite getting it. This guy Ryan Bates puts out high quality video and written tutorials for free every single week. If you need to use a gem or technique in Rails, you can almost guarantee that there’s a RailsCast for it.
Destroy all Software : In this screencast series, Gary Bernhardt walks you through various code examples in a conversational manner. It’s like learning stuff from a really smart coworker who just sat down to show you a few things. The videos cover a wide range of programming topics, but lately it’s been episodes of building a Rails app from scratch. Very nicely done.
RailsGuides : These guides serve as both excellent references and readable tutorials. I like to periodically read through them to keep up to speed with the various aspects of Rails. They’re also available as a .mobi file so you can read them on a Kindle or device with a Kindle App.
Destroy all Software : Yep, I’m mentioning DAS twice too. The screencasts are great and Gary covers more than just Ruby or Rails. Advanced git, advanced vim, advanced TDD, bash, etc. Just great.
Project Euler : Want to stretch your programming a bit? Go through the problems in this collection of mathematical puzzlers. The problems increase in difficulty. The puzzles aren’t tied to any language but meant to test your algorithmic skills.
The Python Challenge : Sure it’s python, but it’s also an interesting puzzle. It’s been a while since I went through it; I wonder if it would work with Ruby….
CodingBat : a Java/Python code practice site. The puzzles are all pretty basic, but it’s a fun way to pass a few minutes and keep your programming muscles limber.
Chris’s Wiki : Chris Siebenmann is a unix sysadmin and python coder. His blog is a fantastic collection of insights, observations, and tips on topics ranging from deep Solaris configuration to the unix command line to general programming. No matter your field, it’s a good read.
Hackety Hack : You say you want to learn how to program but don’t know where to start? Start here. Seriously. You will learn the fundamentals and have silly fun doing it. You can even share the programs you write with other Hackety users.