Learn to program using (mostly free) resources available online

There are so many wonderful resources that are available to someone who is wanting to enter the world of being a programmer. But sometimes it can be daunting to know what is good, where to start, and what kind of path to follow through these resources. When I was just beginning to get interested programming, I didn’t have the funds or time for a boot camp since I needed my day job as a source of income; but I was fortunate to be able to pull on resources I could find on-line and experience from mentors to begin my journey into programming. It wasn’t easy, but it was possible and so worth it!

The Resources

These are things that were helpful to me as I launched into learning Ruby and becoming a web developer, so pick and choose as you find your own path!

You will need a robust text editor. This is the tool that you will use to craft your raw material as a programmer, and you will always be tweaking and improving it to fit your needs. Atom is an excellent choice that comes preconfigured in smart ways and is approachable.

At the very start www.codecademy.com is a great resource to just explore some of the very basics. They have some great programs now that lead you through building a website from scratch, for example. You can also pick and choose individual courses as well; maybe you want to just explore Ruby or JavaScript.

Once you start to get your sea legs, you will probably be looking for a bit of a challenge to expand your new skills. A great thing for this is exorcism.io. It’s like a collection of puzzles that you can solve while learning specifics of a new language. It’s still my go to when learning a new language (or just for fun :-))

All through your programming career it will be important to know where to look for help on an issue, and the beginning is no exception. Documentation for your language or framework is one place to find answers; another is your favorite search engine! Searching for an error message or issue can often turn up other people who have encountered the same problem. In addition, there is a whole community of people that ask and answer question on Stack Overflow. Many of the problems I encounter every day as a programmer I can solve by drawing on the knowledge of others on there.

Now for one of my favorites! Michael Hartl’s Rails Tutorial was absolutely essential in my journey. This one is Ruby and Rails specific, but even if that is not your jam there is still value in working through this tutorial. What makes it such a masterwork is that not only does Michael teach you the Rails framework, but he helps you learn what it means to be a developer. He walks you through what it’s like to develop an application as you would in the real world. He teaches you about using essential tools like version control (git), Github/ Bitbucket. The course helps you turn the skills you are building into a cohesive package. This amazing free (!!!) resource is like having a mentor walk you through building your first web application.

After working through the above, you will be off to a really great start! At this point, it really helped me to just start getting my hands dirty with some “real” applications. You can work on an idea that you might have, or just explore building something. It is super helpful to work on something with more experienced developers; whether that is contributing to open source or finding someone who is willing to mentor you as you contribute to their codebase. This feedback from others will be one of the best educations you will be able to get, and it will be way more engaging to be working on “real” things. Learn how to find answers to things that you don’t know, ask questions, and know that you will always be learning. These things continue to be important to me today!

At this point you can make things that “work”, now it’s time to make things that work even better and are easy to maintain. Any book by Sandi Metz is worth the read and will change the way that you look at the code you write. She also has a free newsletter that has great insights. There are an abundance of conference talks that have been recorded and made available online; these are a goldmine of information just waiting to be viewed! You can search in confreaks or on YouTube for recent conferences you are interested in. If you do happen to be looking into Ruby and Rails, RailsCasts is an amazing resource! Ryan Bates created a trove of screencasts many things you would want to do when building a Rails app. It might be getting a bit dated now, but much of it is still very relevant and he’s now made it available for free!

This is far from an exhaustive list (and is a little skewed towards Ruby), but these are some great resources to propel you forward. I wouldn’t be too strict on order; you may need to jump around, speed up, or slow down. Go at a pace that works for you and keeps you engaged.

Being My Own Biggest Obstacle

For me, the hardest part at the start of the journey wasn’t even a technical one. It was one of building confidence. Hearing others around around you that are further along in their journey talk about things that sound like another language can be intimidating. Take those opportunities to ask questions and build your knowledge! People who aren’t jerks will love the chance to explain. Since you will be learning on your own, building relationships with other people that do what you want to do will be an essential part of your learning and will be your ticket to finding jobs as well (if that is what you are going for). One great way to do this is to look for meetups in your area that you can attend. Be sure to search the interwebz for something called “imposter syndrome” so that it doesn’t slow you down and you can be comfortable being at the beginning of your journey. Although it can be hard to learn these things on your own, learning to solve problems for yourself will continue to serve you well beyond the beginning. You’ve got this!