Dec 5, 20159 min read

How you can learn to program: web development resources

A small collection of resources and what I think they can teach you if you're just starting out

As promised many moons ago, I'll sum up what courses, books, and websites have been most helpful to me, as well as some that I've heard great things about within the web development community.

A quick note on costs: I learned how to program on a budget, so I can certainly empathize with people who don't want to break the bank without proof that they can get a job doing this stuff when they're done studying. Most of the resources I list here are relatively cheap and require only a one-time investment. However, there are a few subscription-based resources that can start to add up if you enroll for a few months. If you're like me when I started, you'll look at the overflowing abundance of programming information available and wonder why anyone would ever pay money for any of this stuff.

If you have the means to afford some of the more costly resources, I'd encourage you to drop the mindset that learning should always be free. If the resource is worthwhile, what you're actually paying for is someone to curate it for you and present it in a meaningful way, which is generally well worth the money rather than trying to cobble it all together yourself. I should note here that I'm not in any affiliate programs or trying to sell you anything; everything's only on the list if I think it will help.

A quick note on languages: I'll list under each resource which language(s) it targets, but for most good books, I think the language is somewhat incidental. My suggestions are only here because I believe they teach strong language-agnostic programming concepts, but I understand that a book's target language can easily get in the way if you don't know it. Keep this in mind as you decide what interests you from this list.

Applicable to total beginners

When you're a beginner you'll need to focus on learning language syntax and general programming concepts (e.g. variables, functions, objects, etc.). I advise you to set your sights on learning just what you need to start building something. Doing too much learning without building something you're interested in can make what should be a pretty fun experience incredibly tedious and dry.

I noticed that I was writing this that these are almost all online resources that feature lessons with related hands-on exercises. I guess that means that I believe lessons and related hands-on exercises are a really good way to learn the basics (and potentially much more than the basics, as I'll explain below)!

Code School

$29/month

Javascript, Ruby

I'm really impressed by Code School's quality of presentation. Each course is themed differently to keep it interesting and comprises easy-to-digest short lessons. What really stands out most to me is the range of topics offered. You can find courses on the basics, best practices, and specific libraries/frameworks for both Javascript and Ruby, such as AngularJS, EmberJS, and Rails. They continually add new courses as well, so even if you don't see the framework you want to learn, there's a chance they will add it at some point. They also offer a Screencasts section with your subscription that offers peeks at new technology, practical advice about building, and mini-courses taught by other screencasters within the dev community. My only criticism is that in the courses I took, I generally felt like the exercises were too easy, and I would've appreciated being stretched a bit more in applying the course material.

They offer a few free courses, so you can easily give them a try without any commitment whatsoever. I think they are well-worth the price though: the opportunity to change your career and life for less than the cost of basic cable.

Codecademy

Free

Javascript, Python, Ruby, Java

Codecademy got a lot of press a few years ago by convincing many people that everyone should learn to program, and I applaud their very noble effort to make this valuable skill accessible to everyone for free. They offer a slick interface and a number of exercises that apply what you're learning. They feature courses in Javascript, Ruby, Python, Java, and many others.

However, they do draw some criticism from experienced programmers for perhaps presenting their relatively gentle introduction to programming to be more thorough than it is. If you opt to start here, and there are plenty of good reasons to do so, remember that you may only be scratching the surface of whatever language you're learning.

FreeCodeCamp

Free

Javascript

FreeCodeCamp's model of learning seems to involve lessons, implementing those lessons in small pseudo-projects, and then moving on to doing real tech projects for actual non-profits. Apparently their new curriculum (launching next year) totals a whopping 2,080 hours. That's the kind of thoroughness I'd expect from a really solid course. I love the concept of simultaneously teaching people these skill while benefiting non-profits who can't otherwise afford expensive technical services. While I haven't personally used their service, their mission and the number of great things I've heard mentioned about them recently are enough for me to recommend them.

Developer boot camps

Tons of money and time

All languages

I'm not 100% sure about recommending these since I've never gone through one personally and the price is astronomically high compared to everything else on this list, but I think it's important to mention as an option to those who are able to afford the time and money commitment. These boot camps typically involve going on-site and participating in an intensive schedule of learning and coding full-time for several months. They also typically offer job placement services, working with partner companies to ensure that their alumni are gainfully employed upon completion of the course.

The three big ones that I'm aware of are Hack Reactor (12 weeks, $17,780), General Assembly (10 weeks part-time, $3,500), and Dev Bootcamp (19 weeks, $12,700-$13,950). This business model is catching on though, and there are a lot of competitor bootcamps that might vary wildly in quality. You should of course do the kind and amount of research appropriate for a large purchase like this.

If you have the means and self-paced learning isn't your thing, or if you're anxious to start your new life as a web developer, one of these bootcamps would likely be a great option. The ones I've listed here boast post-program extremely high hiring rates (98+%), and I generally only see good things posted about them by their former students. I'd especially recommend these as an alternative if you are considering just going back to school for formal higher education, as most of the web development curricula I've seen in schools are hopelessly out of date.

Applicable to intermediate developers

Once you feel like you have a good handle on the basics of your chosen language, it can help to learn some of the established patterns that experienced coders to make their code clean, readable, and easy-to-maintain. There is enormous depth involved in programming. It's possible (and quite easy) to write code that does exactly what you want it to do but that no one, not even you, will ever want to touch again. Learning how to take code from "working" to "good" is a huge part of becoming a great developer.

Of course, there are many more resources than those listed here, but I listed ones that each touch on a different but important coding topic.

Clean Code: A Handbook of Agile Software Craftsmanship

$33

Java

Code is written just once but can be read an unlimited number of times, so we should strive to make our code as easy-to-read as possible. Clean Code is the single best book on code readability I've ever read. There are plenty of rules and guidelines to make your code more pleasant to read for both yourself and your coworkers, complete with corresponding examples.

Practical Object-Oriented Design in Ruby

$32

Ruby

The four languages I mentioned in my last post are all object-oriented. Objects are an abstraction in programming used for storing data and for attaching behavior. They are extremely flexible, so it's helpful/necessary to have guidance on how to organize them and how to have them interact with one another. I'd read some material on object-oriented design before but nothing that stuck quite the same way this book did, and I'd highly recommend it to anyone who wants to make their code structure more intuitive and easy to follow.

Learning JavaScript Design Patterns

Free (online version)

Javascript

This book is great introduction to programming paradigms known as design patterns. Design patterns are well-established ways for structuring your code to perform common tasks. They are also well-known among experienced developers, providing a common vocabulary for developers to communicate and allowing complex topics to be expressed in just a few words. This book provides examples of both general programming design patterns as well as ones specific to Javascript/frontend, and it's even more awesome that it's free online.

Head First Software Development

$32

Java

The Head First series tries to find a creative way to teach concepts and for the most part people enjoy its quirky style (though it's definitely not for everyone). This is one of the more accessible books I've found about the overall process of software development. It deals with topics like understanding what the customer wants, project tracking, testing, working with other developers, etc., basically talking about everything a software developer deals with other than actually writing code. This book may not be applicable for everyone as your ability to implement its advice is very dependent on your company culture, and it's geared towards a project management methodology known as Agile. Still, there is enough general advice here that I think it's a good introduction to what your life will be like if software becomes your career.

Closing thoughts

In spite of the nature of this post, I want to communicate that programming is learned by doing rather than by reading. Someone who consumes every single one of these resources and never builds their own website or project is likely way worse off than someone who reads nothing and just futzes around with code to figure it out. These materials should only supplement your education, and your education should be primarily obtained through building and shipping code.

You'll have many questions along the way, so don't hesitate to post on the sites that are built for this. StackOverflow is legendary in the programming community, but there are others, like Reddit's /r/learnprogramming and Quora. Programmers can be bullheaded and pedantic, but I've found them also to be exceedingly willing to help one another when asked.

Are there any resources you felt like I made a mistake in leaving off? Have any questions about the process, or need some inspiration? Leave a comment below; I'd love to see what I can do to help. I wish anyone who's embarking on this journey the best of luck. I hope it's as great for you as it has been for me!