There are a few common responses I get after introducing myself to people and telling them I’m a software engineer:

I could never learn how to code

This group of people claim that “they were never really the math type of person”.

You’re a wizard

This one is my favorite, because it doesn’t carry the same negativity. But it makes me wonder how someone could see someone doing “magic” and then just carry on with the rest of their life not trying to learn it for themselves!

I’ve been thinking about learning to code

If you are here right now, this last one is probably you.

Before going any further, I want you to repeat this to yourself a few times regardless of which of these types of people you are: anyone can learn how to code.

Reading and Writing

Without years of support and guidance from parents, grandparents, and teachers, you wouldn’t be able to read or write. Thankfully if you’ve read this far that difficult process of bootstrapping your brain is over. Similar to learning English, reading and writing are foundational components of learning how to code.

Reading Code

You initially start learning mostly by reading other people’s code. It’s important to realize that you will likely read significantly more code than you write. Whether it’s looking over someone else’s code to learn something new or re-reading something you (or a colleague) previously wrote.

Writing Code

Writing code is really the only way to make significant progress. When learning something for the first time, it is very important to take the time to write every line of code in your tutorials instead of just copying and pasting the text you see. This will force you to register every single character presented to you. Often you will make some typo or miss something and find that your program doesn’t work. The process of learning how to identify what’s wrong is also part of the learning.

Build Something You Will Actually Use

Early on, you’re stuck following whatever tutorial happens to teach you the basics of whatever new concept you are learning. The most effective way to upgrade your knowledge from #novice to #apprentice is to take what you just learned and apply it to a different problem.

Maintaining motivation is probably the most challenging aspect of the process. This is why it’s essential to build things that you will actually use. Throughout the projects and tutorials that I add, I will demonstrate how to break down a big idea into small independently useful pieces. Once you have a piece of software that does something you can use, you will be more motivated to make improvements.

I will do my best to select engaging projects that I think should be applicable and useful to all. However, it’s up to you to introspect and determine what truly interests you.

Programming Languages

There’s no shortage of programming languages to learn. Thankfully, unlike spoken languages, there’s not an enormous amount of vocabulary to memorize for each language. Instead there are some clear key concepts that exist across all.

Choose whatever language interests you and remember that you can always learn a different one down the line.

If you’ll be following along here, I will initially focus my introductory material on web development technologies (HTML, CSS, JavaScript) as these are currently the most universal tools to learn. Whether you’re just learning for fun or to eventually land a software development job, I strongly believe this is the correct place to start.


Phew, that was a lot of reading and not a lot of code. From here on out, anything under #learntocode should be less talk and more action. If you haven’t already, please take a moment to read the About page for some additional context and resources.