I started learning to program in earnest at the beginning of February 2012. Since then, I've compiled the programming resources that got me to where I am today. Various books, screencasts, online documents, and forums have helped me along the way. I've listed them in the order in which I read them over the course of my development. I hope you find them as useful as I did.
Learn Ruby the Hard Way is what I started with when I began programming. Ruby on Rails was my goal, but my friends urged me to start with at least a basic understanding of Ruby before venturing down the Ruby on Rails path. Ruby on Rails has a lot of "magic" in it and without first understanding Ruby, you'll have little idea of what's actually going on inside the framework.
The book forces you to type out all of the examples and not to use copy and paste. The idea is that simply by typing out the examples your brain will begin to acclimate itself to the programming language. There's no better way to learn than just to keep plowing through the examples. I definitely recommend this book as the perfect starter.
With most of Learn Ruby the Hard Way under my belt, I dove into David Heinemeier Hansson's book, Agile Web Development with Rails. It's a step-by-step approach on building a Ruby on Rails application. You're tasked with building a basic shopping cart / store application. Truthfully, in doing this I found things at once a bit dry and overly complicated at times. This exercise packs in so many different aspects of Ruby on Rails and programming (database theory, unit testing, security, AJAX, etc.) that I felt as if I was learning a little about a lot. That said, the book does give a great overview of what you will face as you learn to be a web programmer. I now think I should have made use of it later in the process.
I can't say enough about Michael Hartl's Ruby on Rails Tutorial. It's the best resource on learning Ruby on Rails that I've been able to find. After Learn Ruby the Hard Way, it's what I recommend that new developers open up and complete. Michael takes you through the process of building an early version of Twitter from scratch.
What I love about this book is that he treats the assigned exercise as if it's a real application that you plan to build as a project rather than just a tutorial. He introduces you to GitHub (for source control) and to Heroku (for hosting). You learn how to build a user system with registration, password reset, user profile pages, and more. It feels as if you're building something real, and along the way you're using tools that all web developers use.
After completing the Ruby on Rails Tutorial, I had the confidence to start building my own application with my friend and designer Yaron Schoen. It was amazing that within three to four weeks of starting to learn programming, and mainly influenced by Michael Hartl's book, I was able to build the beginning of our app – and it worked. If that's not a glowing endorsement, I don't know what else to say.
Rails for Zombies is a fun interactive resource for learning Ruby on Rails. You begin by watching a video and then have to answer questions with code to unlock the next chapter. Code School provides an inline code editor for you to respond with. It's very professionally done and reinforces a lot of basic topics.
Having previously gone through DHH's and Michael Hartl's Ruby on Rails Tutorial, I found myself already knowing a lot of what was being taught, but the repetitiveness helped reinforce the concepts in my memory. It wasn't until completing this course that I fully understood, for example, Rails' Model View Controller relationship. I got it, but I didn't get it. Personally, I've always found that when learning something complex it can take several different approaches to the same topic before you feel fully comfortable with it.
A lot of time you'll come across Ryan Bates' Rails Casts when googling a Rails question. He provides two tiers of screenshots: one paid tier ($9/month) and one free tier. The Pro tier gives you an extra screencast a week. His screencasts cover everything from debugging to authentication. They're top-notch, and I know plenty of advanced Rails programmers who continue to reference his screencasts, because he's always on the cutting edge. While the presentations tend to be very narrow in focus, they're extremely helpful if you run across the problem he's taking you through.
Team Treehouse 5/5
I mainly used Team Treehouse for their extensive HTML and CSS lesson videos. While they have a full course on building a simple Ruby on Rails application, I felt content to skip it after having completed Learn Ruby the Hard Way, Agile Web Development with Rails, and Ruby on Rails Tutorial. So while I can't speak for their Ruby on Rails tutorial, I can say that their HTML and CSS lessons are really stellar. They cover everything you need to know to get started.
Stack Overflow 5/5
I just can't praise Stack Overflow too highly. It's the go-to resource for developers looking for answers to their questions. Nine times out of ten, when googling a question you'll find it answered on Stack Overflow. Once you've graduated from reading introductory books and tutorials, you'll mainly have very specific questions that wouldn't really make sense to address in book format, but that are answered well in a resource like this one.
Any web developer worth their weight needs to be proficient in frontend development. I've dabbled in HTML and CSS my entire life, but never felt completely comfortable building a website from scratch. I'd mainly been a tinkerer up until recently. But I can now say that Introducing HTML 5 covers everything you need to know.
What I really liked about CSS3 is that it is very visual, which is how I prefer to learn HTML and CSS. There are tons of examples and downloadable code. It also covers typography, color and layout along with standard CSS. That being said, best practices in HTML and CSS are constantly changing and often the best resources for CSS can be found on the Web. You may not need to pick up a print copy, but personally I like having it so that I can flip through it as a reference guide.