Learn To Code Resources: Part One
During the last six months it feels like at every Seattle.rb meeting we have someone who is brand new and asks “How do I learn to code?” or “How do I learn Ruby?”. After answering this question a 6+ times I figured I should write everything down so I wouldn’t forget things.
What resources are right for a given person will vary a lot. Folks who’ve never coded will want different resources than folks who know another language and now want to learn Ruby. I’ve broken this up into a series of blog posts, each with recommendations for different audiences.
With a couple exceptions I’ve tried every resource on this list trying to get a feel for the pedagogy, what is taught, and what types of people will be successful with the material.
Part One: Folks That Are Brand Spanking New To Code
When recommending resources for new folks I look for a couple things:
- Clear, simple, accurate explanations for all code, vocabulary, and concepts introduced.
- Small lessons/chapters that build on each other or review built in.
- Someone working alone should have a reasonable chance of success. In practical terms this means the challenge doesn't increase too quickly and there are hints or other ways to get help built in.
Learn to Program - Chris Pine
I recommend this frequently and have coached a few co-workers through the material. There is a free edition available online but I recommend buying the print edition which covers more material and allows you to annotate and bookmark. I like how Chris Pine builds the material starting at the “what’s a text editor?” level and I’ve found that each chapter provides just enough challenge for an interested beginner. I also appreciate that the explanations are accurate without overwhelming the learner with new vocabulary and the book itself is slim and approachable. The “Thoughts for Teachers” section on the homepage is a good guide for what to keep in mind when teaching or writing for beginners. When we recommend this book at Seattle.rb we encourage folks not to finish it in a weekend but to let each chapter percolate for a couple days and then to come back to us with questions but YMMV.
Code Academy - Code Year
The Code Year track is built from several of the other tracks at Code Academy. It includes Javascript, HTML, CSS, JQuery, and a bit of Python. There is easily several weeks to a year’s worth of material here depending on how many hours a week you dedicate to learning. This is what I recommend to someone who wants to become “a web developer”. I’ve found the quality of Code Academy’s tutorials varies across tracks but the Javascript and CSS materials are good. I think they have the right mix of lessons, projects, and review. There are forums to provide support for the tricky problems if you get stuck. Also, the feedback on interactive exercises is great and it is hard to “cheat” or pass without actually doing what is asked. The material was originally targeted at middle & high school students but doesn’t feel childish and I used this to successfully brush up on Javascript and to learn CSS before starting a new job.
Try Ruby
I recommend this when folks want to just play with programming or Ruby a bit. It is also useful for doing other tutorials if you can’t install Ruby on your computer for some reason. I don’t think by itself this is enough to learn programming but for some people it gives them the first “Hey, I can do this” experience that they need to dig deeper.
The Little Schemer
The Little Schemer is a great introduction to functional programming but it is written at a level that even non-coders can understand and work through it. It is written as a Socratic dialog and I think that makes it even more approachable. Like Try Ruby I don’t think this book is sufficient to make someone a “programmer” but it is a great introduction to functions, data types, and the general mindset of programming.