There are a million and one ways to learn to code nowadays. Everything from a formal college education, to books, to free online classes to even paid for online classes. And they're not all the same and can result in a 100% different experience which will vary person by person. So choose wisely. Take a small wooden sword if need be.
In this quick guide I'll give a few tips on how to go about learning to code, how to stick with it and how not to get bored doing it, which is an obstacle that has stopped many from continuing in this pursuit.
Tip #1: Choose the method that best resonates with you. There are more professional programmers with college degrees than without, needless to say. In any interview, your level of education will undoubtedly play an important role and may determine whether you get hired or not. Having said that, there are many programmers that do not have any formal education, but whose work speaks for itself and thus they can bypass the whole formal education scenario. So if a college education is more up your alley and you have the time and funds, then tread lightly.
Step 1: Pick a programming language
So you have zero knowledge of anything programming, and the closest thing you've seen is CSS and HTML in an Instagram post. This is where you have to make a choice. You can't learn every programming language, at least not well, so you'll have to start with one. You're going to be spending some time with this language, which is why it is important that you choose a language that resonates with you.
I advocate you pick a language that your current hardware can manage. For example, if you have an old outdated Windows Machine, you wouldn't want to choose a language that targets IOS. For that reason, many times I recommend using JavaScript as your first language, as all it requires to run is any text editor and a browser. If you take the formal education route, this is probably going to be a choice left to somebody else. C++ was the standard a decade ago in most colleges and universities. It then transitioned to Java some years later. So this is something that does change with the times and that again, is out of your hands for the most part.
Step 2: Create a new project
Even before you know a single keyword in that language, make a new project. Many many young programmer's avoid this part, and jump straight to the books or online material. Then when it comes time to use the language, they are at a loss as to where the language runs and how it is configured. So learn your environment first.
before everything else, getting ready is the secret to success - Henry Ford
Keep using this project for all of your learning needs. More than likely you'll be building up alot of code as you progress and it will only grow exponentially. The last thing you need is to have a dozen projects littering your desktop and uncertainty about which does what and where.
Step 3: Pick your learning material
Again, to each their own in this matter. I've tried all of the learning methods listed above, from a college education to books to online videos. Books are my #1 choice for many reasons. Mainly, that you can get reviews on them. Other people in your shoes have walked the walk, so it's encouraging to hear their opinions and to take their advice on such matters. They also allow you to go at your own pace and to skip over sections which are of little to no interest to you. Compare this to an online course, where essentially you're following a sequence of steps that someone has outlined for you.
Online references are #2 on my list. Each programming language has documentation from the group that is in charge of maintaining it. And usually, this is free and online and a quick Google search will yield the results you need directly from the horse's mouth. But this is still #2, because as a new programmer you probably won't know what to ask Google for.
Step 4: Have an idea
This is where many new programmers are lacking. Creativity. There's so much focus on the technical and mechanical that in the end, there's little energy left to come up with something to create. But an idea acts sort of like a rail. It will guide you towards the next step, and then the next. You'll go left and right and slow down for a while, but if you keep following it, you'll eventually reach a nice scenic view where you can look back and wonder how you walked that path.
Any idea will do. It doesn't matter. For me, it was this blog. Which is now the most complex piece of software that I've written for some reason. But this is how it began when design, database, SEO and technical writing were somewhat foreign concepts.
Step 5: Don't get bored
This is probably the most important step on the list. All the others are meaningless if you're constantly bored doing them. Plenty of people see the relatively high paychecks and cool offices (relatively) and jump on some online platform to take a class in Python. Once the initial thrill passes, then the hard set reality comes in, and that's that programming is actually pretty hard. Following the instructions on the screen is simple, but coming up with a solution to a problem from seemingly thin air, that's something else.
Many a time you'll just sit there with no solution in sight. Many other times you'll type for hours only to realize you should have stopped at minute 5 as it wasn't going to work. So code in a way, where you're not bored. And that means different things to different people. And you have to find what it means to you. To me personally, it means getting all my ideas down on paper first before anything on the keyboard gets touched. Not a perfect 1 to 1 mind you. But just enough of an outline as to where one can type for hours without stopping and get relatively close to what they had in mind.
If you do it right, you'll never be bored and you'll constantly be learning and challenging yourself on new problems. But it takes work, dedication, and focus. So hopefully these 5 steps will give you an overall idea of how someone completely new to programming can go about making it a part of their life.
Walter Guevara is a Computer Scientist, software engineer, startup founder and previous mentor for a coding bootcamp. He has been creating software for the past 20 years.