Try This Before Committing to a Coding Camp
If I could go back to 2014, and give myself some advice, I’d say "don’t spend $9000 on a coding bootcamp". You can learn to code on your own in half the time (the camp was nine weeks full-time) without spending a dime.
The issue is knowing what to learn in the first place. I know, because I tried learning to code on my own before going to a coding camp. I must have spent close to 100 hours on coding tutorials, but never made it past HTML & CSS websites.
Looking back now, I can spot some of my mistakes, and though I can’t help myself in 2014, maybe I can help some of you learning to program now.
Here’s everything I wish someone had told me when I tried teaching myself to code, including a free, online curriculum to get you started.
#1 You Don’t Just “Learn to Code”
What do you mean when you say you want to learn programming? What are you actually trying to do? Build an app, website? It’s important to know because you won’t just be learning a language, you’ll also be learning a set of tools and concepts.
If your goal is just to learn to code, then my advice is, pick something with a gentle learning curve.
I suggest web app development with Ruby on Rails. The reason so many coding camps teach it is because it’s perfect for beginners. We'll talk more about Ruby and Ruby on Rails in a sec. First..
#2 Avoid Tutorial Purgatory
If you find that you can’t build an app without relying on tutorials, there's a good chance it’s because you don’t understand some important, underlying concepts and technologies.
The big ones are software architecture, frameworks, routes and database design. They are all covered in the curriculum, but I want to go over a few things about software architecture and frameworks in particular.
As of this writing, my web app EatHow is made up of over 100 files, and 12 database tables (recipes, ingredients, users, images, etc). For each table, I had to write code that would allow me to create new entries, as well as read, update/edit and delete past entries.
My point is, it’s complex, and that’s without including what in this post I'll call, the "plumbing".
Here are most of the files EatHow needs just to log a user in. Each line is one file.
Some repeat, but the idea is the same. Files need to be connected, they need to be able to exchange data with one another for everything to work. There needs to be code to make the code work together. That’s what I mean by plumbing.
Software architecture is how an app is structured/organized and more importantly, how the plumbing is built.
There is no one right way to build an architecture. However, over time, people have come up with, and refined a handful of architectural patterns that work well.
Just to be clear, an architectural pattern is like a blueprint. It’s a general idea of how to structure your software and build the plumbing. It's not a tool. Implementing an architectural blueprint is up to you as a developer.
Fortunately, there are tools that use those blueprints to help you quickly build your apps architecture. They're called frameworks.
A framework is a set of tools, packaged together, that make building software quicker and easier. Ruby on Rails (RoR) is a framework for building web apps with the Ruby programming language.
One of the many things RoR does is build your web apps architecture for you.
Remember all those files in the earlier screenshot? Except for the one at the very top, those aren’t part of the 100+ files I mentioned, and I’ve never opened or seen a single one. That’s all plumbing that RoR built and keeps hidden from me.
A Solid Foundation
The more you learn about architectural patterns, and frameworks the easier it’ll be to learn new languages and technologies in the future.
Instead of random tutorials on Medium, you can start by figuring out “what do I want to build? What languages could I use for that? What framework? How does it work? which architecture does it use? How do you build on that architecture?”
#3 Get Your Hands Dirty
I’ve never met or heard of anyone who learned to program just by doing tutorials. It’s really that simple.
I get why you would want to try. Tutorials are easy and comfortable, but just trust me on this, the sooner you start applying what you’re learning, the quicker you will learn it.
I don’t mean do the exercises in the tutorials or code along with them, do that too, I mean practice with your own separate projects as you go.
#4 Start With Ruby on Rails
You might have noticed that a lot of articles recommend learning Ruby or Python as a first language.
The reason is, they are easy languages for beginners. As I mentioned though, you are not learning a language, you are learning to build web apps.
As I also mentioned, you want the most gentle learning curve possible. Which is why I recommend learning to program by learning Ruby, and Ruby on Rails.
One of the core principles behind Rails is ‘Convention over Configuration’. The Rails doctrine explains it best:
“There are so many conventions in Rails that a beginner doesn’t even need to know about, but can just benefit from in ignorance. It’s possible to create great applications without knowing why everything is the way it is.”
Rails makes a lot of decisions for you. Whereas building a web app with another framework, like Express, for example, might mean you have to learn 100 new things. You can do the same thing in Rails by learning 10.
You can either install Ruby and Ruby on Rails on your computer or follow these instructions to use Amazon Cloud9. I recommend the latter. Installing them on your computer seems simple, but it often turns into a big pain in the rear.
Ruby: It’s time to learn your first language! There are loads of Ruby tutorials online, this is my favorite.
Rails: It’s hard to beat The Ruby on Rails Tutorial by Michael Hartl. Just remember to pay special attention to MVC and routes.
Database Design: The Rails tutorials will get you started with creating database tables and associations, among other things, but it doesn't get into how to design your own databases. For that, read this awesome 15-minute guide.
I wouldn't say it again if I didn't think it was important, you want to focus on MVC, routes and database design. Understand them well, and learning new languages, tools and technologies in the future will be much easier. Good luck!
If you liked what you saw, it would mean a lot to me if you shared this with your friends 🖤 especially the ones interested in learning to code. Till next time.