# Learn To Code Resources: Part One

> Last updated: 2014-06-08

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:

<ul class="disc">
<li>Clear, simple, accurate explanations for all code, vocabulary, and concepts introduced.</li>
<li>Small lessons/chapters that build on each other or review built in.</li>
<li>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.</li>
</ul>

#### [Learn to Program - Chris Pine](https://pine.fm/LearnToProgram/ "Learn to Program")

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](http://www.codecademy.com/tracks/code-year "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](http://tryruby.org/levels/1/challenges/0 "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](http://www.amazon.com/The-Little-Schemer-4th-Edition/dp/0262560992)

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.
