Knowing how to code is the closest that anyone can ever come to possessing a superpower. Almost everything that you use on a daily basis is powered by code, and vice versa: code can power and change everything. And yet, the skill gap grows, and diversity in tech isn’t improving. Why, then, is it so difficult to learn how to code? I’d argue that it’s because many approach it from the wrong angle.
Learning to code is overwhelmingly a mental challenge: it is about changing the way that you envision code. Too often the stereotype is that coders are either math geniuses or nerds that spend their entire lives in someone’s basement. Few people even imagine that code can be a creative endeavor, even a form of art. And yet it is.
And so, officially, step one is to realize that code is neither difficult nor predominantly math centered - there are obviously sections that focus on math and hard logic, but those are just parts of a whole. Anyone can learn to code - seriously! - the hardest step is trying.
There are usually two paths that I recommend for anyone starting out - web design and game development. Both of these areas are very visual and responsive and as such they provide a very real sense of accomplishment. I think that this feeling is key - it proves early on that you can make very real, useful things and motivates you to continue. When I code my drive is largely fueled by these moments of success: when I run my program and see the very real impact of what I just coded.
If you are more of a creative person, learn web design. It starts out with HTML/CSS which focuses more on visual design than logic. If you are more of a mathematical/logic person, learn game development. Regardless of what you choose, remember that the key is not to give up and to actually give it a go.
Also - no matter what coding you’re doing, DO NOT FORGET TO USE GOOGLE! It is neither lazy nor bad practice to consult the web on absolutely anything and everything. Even the best coders forget/need help with certain things all the time, so do yourself a favor and Google any question that pops into your head. Someone has had it before you.
Finally, I’ve found that examples are one of the best ways to really understand a concept. So the ideal learning procedure is: 1) completing a brief tutorial, 2) looking over a couple of examples, and 3) practicing. Again, do not forget to consult Google/the official documentation!
Tools of the Trade
Before you jump into learning you’re going to have to install an Integrated Development Environment (IDE). This basically stands for a text editor that has been optimized for writing code. IDE’s vary in complexity: the more feature-rich ones are usually optimized for a specific language and come with built in debuggers, code fixers, library linkers, and so on. Unfortunately, a common trend is that they also come with fairly poor community features, so I generally avoid them. However if you do decide to use one Jetbrains makes the best ones and they offer a 100% student discount!
Simple IDE’s are essentially just nicer versions of text editors with a community plugin system. The three most common ones are Sublime Text, Atom, and VSCode - and VSCode is clearly the winner with its speed, awesome interface, and huge community. After installing it, you should add the following plugins:
- Atom One Dark Syntax Theme
- Atom One Dark Theme
- Bracket Pair Colorizer
- Code Runner
- Material Icon Theme
- Path Intellisense
- Project Manager
- Vim - this one is particularly important, as it lets you use the VIM keybindings (you can read more about them in the web development article) If you are going into web development, you should also install these extensions:
- Node Debug 2
- npm Intellisense There are also many language-specific packages, such as the Python package, so make sure to look those up.
The Windows Problem
Unfortunately, developing on Windows is often a very difficult experience, so if you are currently using it I’d recommend dual-booting your computer with Linux. Dual-booting essentially means that when you start up your machine you choose which OS to boot into, and so you can keep all of your Windows files. And no, despite the stereotype Linux isn’t a scary geek-only thing - and I’ve never encountered an application that wasn’t available for it. Out of all of the distributions or ‘flavors’ of Linux I’d recommend Linux Mint. Here is a tutorial on how to dual-boot it.