Many people ask me “How do I learn to program?” and “What book(!) should I read to learn Rails?”.

UPDATE: I’ve created a section for the Absolute Beginner as well, you might find it useful.

These are legitimate questions, but they aren’t necessarily the right questions to ask in order to begin the journey of becoming a software craftsperson.

Better questions, I feel, are:

I’ve been finding things around the ‘net that can greatly help people new to programming, new to web development, new to Rails, and so on.

This is a quick, short list of things. I urge you to seek them out, and seek out others as well, and create your own list of learning resources. People will begin to ask you, and it’s nice to have something handy.

Also, learning Rails is hard. But don’t despair! The key to learning is break things down, focusing and practicing small things, and build up a lot of skills slowly. (“Wax on, wax off.” “Ok, Mr. Myagi.”) I’m going to jump ahead and tell you to download the first chapter (free) of Justin Weiss’s book Practicing Rails. Search for “first chapter” and fill out the form to get it. You’re also signing up to get e-mail from Justin, but it’s always good stuff.

Update Sun Jun 8 11:39:13 2014: Recently came across web post Best Way To Learn Ruby and Rails and must say it is a great compilation of resources. In addition, Ashton puts the focus right at the heart of the matter: you have learn both Ruby and Rails.


I got my first job as a programmer in the summer of 1982. Two weeks after I started, one of the system administrators loaned me Kernighan and Plauger’s The Elements of Programming Style (McGraw-Hill) and Wirth’s Algorithms + Data Structures = Programs (Prentice Hall). They were a revelation—for the first time, I saw that programs could be more than just instructions for computers. They could be as elegant as well-made kitchen cabinets, as graceful as a suspension bridge, or as eloquent as one of George Orwell’s essays.

Time and again since that summer, I have heard people bemoan the fact that our profes- sion doesn’t teach students to see this. Architects are taught to look at buildings, and com- posers study one another’s scores, but programmers—they look at each other’s work only when there’s a bug to fix; even then, they try to look at as little as possible. We tell stu- dents to use sensible variable names, introduce them to some basic design patterns, and then wonder why so much of what they write is so ugly.

This book is our attempt to fix this. In May 2006, I asked some well-known (and not so well-known) software designers to dissect and discuss the most beautiful piece of code they knew. As this book shows, they have found beauty in many different places. For some, it lives in the small details of elegantly crafted software. Others find beauty in the big picture—in how a program’s structure allows it to evolve gracefully over time, or in the techniques used to build it.

Wherever they find it, I am grateful to our contributors for taking time to give us a tour. I hope that you enjoy reading this book as much as Andy and I have enjoyed editing it, and that it inspires you to create something beautiful, too.

  • Greg Wilson




HTML and CSS Specific

Web sites

This is just going to be a list of sites I’ve found or been pointed at for helping people learn to program. These are most definitely biased towards Ruby and Rails, as that is my current area of concentration, and generate the most requests that come to me.


I am not such a big fan of podcasts, but that has more to do with my personal learning style. Nevertheless, there are some great pocasts out there.

Teaching Organizations

These are the ones I’m familiar with at this point in time (late 2015) in the Twin Cities area:


These are becoming quite popular, if expensive, but they seem to provide what’s being offered: intensive training in the skills necessary to become a web application developer, with experience and skills in the entire lifecycle of modern software development. I can’t really provide much information on them, as I’ve never experienced them. provides at least a first-glance at several bootcamps.

Conferences and Meetups

Going to conferences, hanging out, meeting like-minded people, and generally instilling one’s self into the millieau of the Ruby and Rails communities can be extremely rewarding. Even if you’re not the conference type, make an effort to find people in your area to talk to.

If you’re ever in the Minneapolis area, look me up at Rails.MN and Ruby.MN – I attend those pretty regularly (weather permitting).

I also “run” the weekly Toast and Tech meetup from GDI Minneapolis on Tuesdays at the Canteen. Stop on by and have wonderful toast, coffee, and working with a bunch of wonderful folks learning web and other development.

More Advanced

If you want to go deep and learn more about computer science, the book Structure and Interpretation of Computer Programs is probably your best bet in terms of a real CS text book that’s available online for free. It’s not a tutorial, but there are exercises in the text. The book uses Scheme, a lisp-like programming language. Everyone should learn a little lisp at some point. :) However it’s not mandatory one use Scheme (or Clojure as the local Clojure user group has been doing). The analytical concepts apply across all languages. If you’re focused on JavaScript or Ruby, you can work the examples in those languages, too.