6/22/2016 - 12:58 AM

I'll keep this updated as I think of more things or come across new resources as I learn Java and Angular.

I'll keep this updated as I think of more things or come across new resources as I learn Java and Angular.


So, there's a lot here.

Please don't feel obligated to use all of it or even any of it. I've used everything on this list myself at one point or another and still continue to use many of these resources. (I'm taking a Coursera course this month actually!) Everything is free.

I've included a wide variety of material in a wide variety of formats, because I know firsthand how differently everyone learns. You might find that you really fly with the Codecademy style of teaching but not so much with going through an eBook or you might find that you really love the MOOCs supplemented with CodeWars to flex your chops on little things.

A sample path of progression that I've done myself is:

####Codecademy's Ruby course -> RubyMonk's "Ruby Primer" to completion -> Project Odin -> Michael Hartl Rails tutorial

Just doing that got me my first programming gig as an intern. Some of the resources are skewed for Ruby because that's what I know best and because it's such a friendly to learn language, but most of them are available for different languages. Pick and choose what works for you!

The wealth of resources available for free online can be overwhelming. My advice is to take it a step at a time and pick one thing to complete. When you've completed it, pick another and repeat. Ultimately, you want to decide on some small project you'd like to build and dive into it. THAT will be the single best way to learn.

Most importantly though, if a resource's teaching style doesn't work for you, try to be introspective about why it didn't and then try something new!

First Steps into Syntax


Covers a variety of languages such as Ruby, Java, JQuery, HTML, CSS, and so on. Here you can learn language skills or how to accomplish specific solutions in a well-divided and organized manner that provides instant feedback. Everything is done in the browser, so you don't have to mess with the command line, and with interactive interpreters that let you try out whatever you need to. Quizzes are graded instantly and your progression gets saved.


Very similar to Codecademy.

Open Courseware and Free Online Classes

These are a great starting step because they are structured and guided and many of them are video lectures with quizzes and projects to test what you've learned. They take the guesswork out of figuring out what to learn when and you can just follow the syllabus.

###Harvard's Free Intro to CS Presents CS topics in an approachable and concrete way. Completely free and you can do the course entirely at your own pace.


Massively Open Online Courseware from a variety of universities and tech leaders. Sergey Brin of Google fame makes appearances in many videos, giving lessons, and I think he even teaches a class or two. This has been one of the best resources I have ever found for learning programming on your own.

Some highlights are:

Intro to CS
Javascript Basics
Linux Command Line Basics
How to Use Git and Github

This one is crucial because you'll find that MANY of the tools and libraries you'll want to use, no matter the language, make their code available through Github. The best part about this is that they are sharing it with us so we can copy it, poke through it, change it for our own needs, or fix bugs and help the community.



Eloquent Javascript

Fully fleshed out eBook that takes you from the bare bones of JS up to a completed project. Has exercises with some suggested solutions as well as a sandbox for trying things out.

Pragmatic Thinking and Learning

Learning how to learn is, in my opinion, the most important skill a programmer can develop. The technologies we use are always changing, the languages themselves go through new releases that change core functionality at times, and there's always the "new hotness". One day day it's Node.JS and in a year it will be something else. This book takes you through ways to think about learning, identifying how you learn personally and how to maximize that with strategies.


Git Immersion

Neo is a now, sadly, defunct Ruby consultancy, but when they were still around, they were one of the warmest, most humble, intelligent, and funny groups of people I have ever seen who really cared about each other, the community, and writing really good software. In just being at their offices many times, I learned a lot about the principles of doing good work and try to carry those with me. This tutorial still lives on in their name and that memory.

As for git, this is the best tutorial I've found to learn git with, because it's on the command line. Everything you do in it are real commands you will use day to day. It's focused on Ruby and Github, but the git commands are the same no matter which language your files are in or which source code host you're using. It's super easy to follow too!

Learn X The Hard Way

From their website: "Less Talk, More Code" summarizes the philosophy. By having students get code working first, and explaining it second, you cut down on much of the difficulty of explaining programming concepts to the uninitiated.

This series of material guides you through the foundations of learning a language. Unfortunately, Java isn't offered yet, but as you learn more and more about programming you end up seeing how many core concepts are the same across languages.

RubyMonk - Ruby Primer

Free interactive tutorials to practice and learn Ruby. Instant feedback and quiz grading, done with the Zen theme that is very prevalent in the Ruby community. My favorite part about this is that there are little interactive interpreters sprinkled throughout every lesson, so that you can watch something error or fail, for example, and then read about why it did and how to fix it. You can instantly practice what you just learned. It reinforces the lesson in a brilliantly concrete way.

The Odin Project

Full fleshed out resource to take you from learning the basics of Web Development up into how to get a job. Aside from Udacity, this resource has helped me the most, personally. It taught me how to get a fully functional app up and running when all I knew how to do was write a few Ruby methods.



This site has coding "kata" (which are small and repeatable programming problems) in a wide variety of programming languages, covering a variety of topics. You can run automated test cases against your code, refactor it as much as you want before submitting, and then you get to see other competitors' solutions. It's helpful to see more seasoned developers' best practices in small chunks. As you complete more challenging kata, you rank up.

It's strength is in learning best practices, syntax tricks, and new methods or functions provided by the language's built-in libraries, that can be realllly hard to pick up when you're learning by yourself. It's easier to pick them up in the small isolated examples of kata than in "the wild" when reading a huge existing codebase.


MMO strategy sanbox for learning and practicing Javascript. Super fun!

Project Euler

Math problems that are unreasonable to solve without writing a program to do the work for you. A lot of them aren't even mathematically complex, it's just that they rely on x number of repetitive tasks or small calculations to be performed quickly, which people suck at, but computers are awesome at. I like to use it to practice algorithms or just to flex my logic chops.

Like CodeWars, you can see others' solutions after you've arrived at one. The whole site is language agnostic, so it's a fun and fast way to see what's different and what's the same about different programming languages.



HTML, CSS, and JS sandboxes to try things out, get feedback, and modify things others have made.


Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle code editor. Lets you execute and display your code in your browser.

Getting Help


In spite of the name, this is an all around great resource hub for programmers of all skill levels, offering support in all sorts of ways, from inspirational talks, concrete help about how to learn and resources to use, and a Slack community to chat with people because learning all of this on your own can get isolating at times.


A subreddit of posts from people who have been at the learning step or continuously are at the learning step no matter their skill level (which I personally think we all should be learning new things all the time).

###Pastebin This allows you to share tidbits of code that are giving you problems or that you want a second look at or advice on, with your formatting intact and line numbers, which makes it easier to have a discussion about.

Don't be afraid of the docs!

Every language and almost all tools, libraries, etc have documentation. It's tempting to just google whatever it is and get a Stack Overflow answer about it or someone's blog post about how they solved it, but it's more rewarding and better for your learning if you dive into the documentation and really understand what things do.

With that said though...StackOverflow

Community driven technical question and answer site.

Podcasts to Listen To and Talks to Watch

Developer Tea

Short (6-15 or 20 mins) and incredibly valuable podcasts covering the gamut of topics. I haven't listened to a single one I don't like yet and each one is very insightful. Two great starter casts:

Learning About Learning

What Should a Beginner Work on?


Your free badge to the best programming conferences held around the world, without the cost or travel. Watching a variety of these talks when I'm eating dinner or something has helped me a TON professionally and it's fun to talk about them with other developers, especially at meetups.


Columbus has a wealth of local user groups that are absolutely worth taking the time to attend after work, even just every now and then. You can learn things from the presentations, ask working developers questions, get help with your code, get free licenses and books sometimes, hear about cool conferences worth attending, and when you're ready - contribute yourself! Columbus's user groups definitely feel like little families of people who are all very passionate about code and are some of the most welcoming places you will find to people of all backgrounds and experience levels.

Columbus Ruby Brigade

CRB is my single favorite user group in Columbus. It really feels like a family and it is EXTREMELY welcoming and loving of new members. Meetings are free - you just show up. Dinner, drinks, and parking are provided. It's a wonderful place to learn new things, network, get support if you need it while you're learning, and just geek out and be around people geeking out about the things we love.

It's worth going too even if you aren't learning Ruby, because you can learn about tech events and all sorts of things you might not have otherwise found out about and you can meet super people.

Columbus Javascript Users Group


It's on the weekend, but not EVERY weekend and only for a few hours. One of the best meetups in Columbus because you can actually sit down one on one with people and work on specific code. It's like...a free tutor. The organizers have made a matching app, so when you show up you can tell them your experience level and what you'd like to work on (if there isn't a project that the group is working on) and they will match you with a buddy! Or, you can work solo, or whatever works for you.

They host NodeSchool too!

TechLife Columbus


The caveat with this group is that there really isn't one, in spite of the group's name. It's entirely inclusive.

Useful Tools

Github Gist

Allows you to save code snippets in a ton of different languages, create quick documents using Markdown, and pretty solid for notetaking on the cloud. Pair with Gistbox to organize them all.

Blog Posts

coming soon