Whether you’ve already mastered (at least one) computer language or if you’re just looking to pick up some basic programming skills, it seems like now is the time to take it one step further - becoming a Jedi coder.
If that appeals to you, you’ve probably considered all the options out there (and subsequently, came up with an argument against it).
Maybe you’ve already graduated from college or university with a degree and have no intention of going back. Or, an intense coding bootcamp just doesn’t sound feasible or too appealing at the moment. And, you worry that advanced online coding courses could potentially rack up a major bill on your credit card.
This leaves us with one final option - learning to code on your own. But what would that involve, and should you really go down this path?
Here are some questions we’ll be covering:
- Should I really learn to code?
- Is teaching myself the best way to learn to code?
- How do I get started?
- What if I ever get stuck?
- Will I *ever* be good enough to be a software developer?
In the first place, should I really learn to code?
You’ve probably heard Code.org’s argument that everyone should learn programming. Obviously, the answer is yes. You should *seriously* learn programming. It might be really daunting at first, because no matter your preferred learning method, you’ll need a fair bit of commitment and resourcefulness to succeed.But thankfully, programming isn’t rocket science (contrary to popular belief!). In fact, it’s something intuitive - basically, writing “instructions” for your computer to execute.
So, even if you don’t plan on becoming a software engineer, there are some very good reasons to pick up some programming skills.
Here’s the TL;DR version:
- It trains you to think in a precise, disciplined and abstract manner.
- It transforms your computer or laptop from a “home appliance” to a power tool.
- It is great practice for learning itself, as it requires you to seek out answers and find help for yourself!
Now that we’ve gotten this out of the way...
Is teaching myself the best way to learn to code?
Real talk: the best way to learn to code (you know, what really, really matters!) is that you start.
But, let’s be honest - not all of us have the time to tinker around with multiple websites/options to find the most effective method to pick up coding skills.
Pop quiz: Let’s say you’ve just bought a coffee table from IKEA, and it’s about time you built it. What do you do?
- Read the manual and study it thoroughly to see which piece goes where. Then, follow the instructions exactly as given.
- Get a friend (who has experience assembling furniture from IKEA) to build it in front of you, then disassemble it so you can build it on your own.
- Glance through the manual. Then, try to figure out how to build the table on your own anyway.
- Look at the “pieces” available to you and use logic try to put them together. Do this until you manage to put the table together.
If you chose no.1, you’re probably deeply interested in the theory behind how things work, and like studying “instructions”. You will likely learn best from Computer Science courses (either from sites like EdX or even a degree).
If no.2 was your choice, you will benefit the most from attending a programming bootcamp (where there are mentorship and pair programming opportunities)
Option 3 indicates that you like being shown what to do but still want to do most of the grunt work on your own anyway, which is what an online coding course will offer you.
And finally, choosing no.4 shows you’re an independent learner - you like to get your hands dirty. You’ll probably learn best from learning to code on your own.Though this simple test indicates which “learning method” you will benefit from the most, it’s not a strict guide.
So, if you’re still intent on learning to code on your own, read on!
How do I get started?
First and foremost, you’ll probably need to learn the syntax of your preferred computer language. It’ll make the other resources a whole lot easier to understand! Sites like Codecademy and Khan Academy will likely help you with that.
Once you’ve gotten that out of the way
#1: Start small
If you have little to no coding experience, don’t dive head first into implementing big data structures or algorithms right off the bat. It is going to be really tempting to try to do some “serious coding” first, but trust us when we say that getting the concepts right is an important part at this point.So, what can you do?
Start with basic coding exercises and try to understand how things work. Pro-tip: A good tool to help you further break down the code you’re using - without having to do any complicated set-up on your computer is repl.it.
At the same time, you can…
#2: Read books
Fact: One book is more than what most people in the software industry read each year.
Though it’s not exactly one of the most popular methods to learn coding, books can actually help you pick up just about anything you need to know, provided you put in the effort - and, they’re great for later reference.
Will books become irrelevant quickly?
No, especially for programming concepts that have and will continue to stand the test of time. After all, languages come and go but the theory remains.
Long story short, the basic concepts are more important than the languages.We’ve scoured the internet (so you don’t have to!) for a list of the Top 6 recommended books every programmer should have:
- The Art of Computer Programming by Donald Knuth
- Code Complete 2 - A Practical Handbook of Software Construction by Steve McConnell
- Don’t Make Me Think (Revisited) - A Common Sense Approach to Web and Mobile Usability by Steve Krug
- Peopleware - Productive Projects and Teams by Tom DeMarco & Timothy Lister
- The Pragmatic Programmer - From Journeyman to Master by Andrew Hunt & David Thomas
- Facts and Fallacies of Software Engineering by Robert L. Glass
And of course, you’ll also have to learn to make full use of these books.
#3: Treat yo’ self
Here’s your daily dose of the cold, hard truth: coding is hard, and it’s not easy to keep staying motivated. So what do you do?
As the gif suggests - treat yourself!
“Treats” might sound like a self-indulgent and almost frivolous strategy, but studies show that it plays an important role in re-energizing us and boosts our contentment levels.
And, it just makes the learning process a whole lot more enjoyable by creating a positive reinforcement every time you manage to hit a milestone.
For example, after you finish a certain programming book, go ahead and buy those new shoes you’ve been eyeing for the past few months.
Or, better still - pick a project or skill you *really* want to learn and go for it. Don’t just stick to the “boring stuff”.
#4: Clone popular websites
Also known as finding a website you like, and reverse-engineering it. Tutorials are perfect for learning new concepts, but for many designers, building sites from start to finish is what's really solidified their knowledge.
By doing this, you’ll have unlimited options to choose from, and you can try your hand at building imitations of websites built by some of the best developers in the industry.On top of that, because it’s not a paid job, there’s no pressure to do anything. You also get free rein to add or change elements as you please!
All you have to do is open up the website on your browser and pretend that what you see is basically a “frame” of your code.
Our advice would be to start with something simple - like a one-page “resume” website - before working your way up towards more complicated websites.And, as you do this, keep an eye out for techniques such as responsive web design, animations, CSS3 effects, etc). Read up on these features before using them, which will help you introduce them into your workflow.
Another pro-tip: Online Course Report has a list of tutorials where you can clone 15 well-known sites such as Etsy, WordPress, Quora, Pinterest and more.
One more thing: It goes without saying, but the purpose of this is purely for practice. Don’t pass off the designs as your own!
#5: Get your code out there
As you become more involved in programming, you’ll find that you’ll have to learn Git. (And if you haven’t gotten here yet, this is something to worry about later!) This is where Github comes in - it’s a great place to find people to collaborate with.
As a beginner, the last thing you’d think about doing is showing off your potentially messy and amateur code to the rest of the world.
However, pushing your code on GitHub and subsequently, getting feedback or even improvement suggestions, will be very, very beneficial if you’re learning to code on your own without a formal mentor.
Bonus: Github can also be used to find (real!) projects you can clone and tinker around with in helping you learn how to code.
Here’s a really neat tutorial to help you along if you need to know how the heck you can use Github.
Oh, and if you can, find someone to do a code review for you, perhaps even from GitHub.Again, it might be deeply intimidating to get another (more experienced!) developer to go through your code, but they’ll be able to do this for you:
- See if there are any *obvious* logic errors in the code
- Listen to your explanation (of what you’re trying to do) and assess if you managed to translate that into your code in the best possible way.
- Tell you if there’s a better (read: more efficient) way of writing that code
Also, code reviews are a tool for knowledge transfer.This might not seem as important right now (since you’ll mostly be working on your own).
But, if and when you start working in a software development team, code reviews are a cost-efficient way of ironing out issues, allowing programmers to learn quickly from each other as well as bringing new developers up to speed!
#6: Quantity > Quality (at first!)
If you’re just starting out in your learning-to-code journey and you’re only going to take home on thing from this article, let it be this: Just make things. Don’t worry if they will be good, don’t worry if it will make you money, and don’t worry if they’ve been done before.When you’re starting out, it would be in your best interest to keep your “scope” small. But, make sure you work on it until it works.
Rinse and repeat - your job now is to write A LOT of code.
“But why?” you ask. Simply put:
- You could be the *best* programmer in the world (theoretically, of course), but it would be pointless if you never put it into practice.
- Writing code is a great way to learn from your mistakes.
- And, until you've mentally committed to coding something over and over, you will not improve.
Also, at some point, you’ll have to step away from guided projects or tutorials and start working on your own stuff.
In other words, try to write your own code as soon as possible.
You can start with simply attempting to “recreate” a tutorial solution you just completed, to building actual, working projects.
Again, it might be bad at first - but you have to start somewhere
What if I get stuck?
Hit a speedbump in your code you can’t seem to get over? Can’t get your head around an important concept? Many programmers have been there and done that, so if you ever get stuck:
- Understand that you’re going to be bad at first (and that’s OK!)
When you manage to understand a key programming concept (or finish a tutorial on Codecademy), you’ll end up feeling really confident. #achievementunlocked, right? And then, you go back to do the tutorial a few days later, or attempt a more difficult exercise building on the earlier concept, and you feel more lost than ever.
So yes, you’re going to be bad. But, that’s perfectly okay because programming isn’t just about memorising how to solve a problem - coding is a new way of thinking, which can be hard sometimes!It does get better as you go along, so it’s important not to get discouraged when you find yourself facing a problem you can’t answer right off the bat.
- Google it
During the learning process, you’ll realize that everything is figure-outable. What this means is that almost every possible problem you’ve faced has been faced by someone else before.So, make sure you master the art of Google searches - it will bring you very far on your coding journey.
- Find a mentor
While having a real-life mentor is not always possible, it is a good idea to find someone you can ask questions - provided that it is something you can’t find on Google, of course. A problem you’re getting stuck with could only take 2 minutes for them to explain, consequently saving you hours of stressing out over your code.Thankfully, many senior software developers understand what it feels like to start out with nothing to do, and are usually more than happy to share their knowledge if they have the time.Just remember to buy them coffee or lunch for taking the time out to entertain you!
- Inspect element, or check out the code
This bit is especially important if you intend to reverse-engineer websites. If you ever get stuck on imitating a website of your choice, just right-click on the webpage and “inspect element” for a hint on how to move on! But above that, studying good code examples is key to bettering your programming skills.Your ability as an engineer to discern between ‘good’ and ‘bad’ code (besides writing good code, of course!) will make you a valuable asset.
- Take a breather!
There are countless benefits to taking a break from programming, especially when you’re working on a project.Sometimes, all it takes is for you to step away from your computer (thereby giving your brain a break!) to go to the bathroom or to eat, in order for you to look at your code with a set of fresh eyes.The key is to work smarter, not harder!
And finally, will I *ever* be good enough to be a software developer if I learn to code on my own?
It might sound like a scary thing to do - applying for a job as a software developer in spite of you not having any formal paper qualifications in the field. This is especially when all you have as “proof” of your skills are maybe a bunch of badges on an online coding course site like Coursera/ Codecademy and your GitHub repository.
Long story short... Yes. There are many good programmers out there who were self-taught!
We may be biased, because even our founder Josh Teng spent two years to teach himself to code.
But yes, it is entirely possible that you can be a self-taught programmer.However, it will be a long, tedious process. There’s a saying that it takes roughly 10,000 hours of practice to achieve mastery in a field.
So you might be wondering - if Josh was self-taught, why did he end up becoming the founder of a coding bootcamp?
- He had no coding community to interact with and to share knowledge with (even though he was coding consistently) made him feel like he was going nowhere fast.
- His own startup couldn’t find enough developers!
- But beyond his own problem(s), his friends who had startups also faced multiple issues. They couldn’t find a tech co-founder and were unable to communicate with their tech teams
- found it too expensive to build a MVP
- building (funky) Wordpress plugins
- automated day-to-day processes/ utilities
- and even building their own MVPs which ultimately led to starting businesses.
But what’s the difference between someone who succeeds or fails at programming?You have to want it hard enough. You have to be hungry to learn.And above all, you need to stick to it... Even when (or rather, *especially* when) the going gets tough!
Being a good programmer isn’t impossible - whether you choose to get a CS degree, take up a couple of online coding courses, attend a coding bootcamp or even teach yourself how to code. Remember that there are no hard and fast rules when it comes to learning how to code.
However, we’re not going to sugarcoat the truth - it can and will get harder and harder as you go along.
But, as our founder Josh Teng has said before, anything worthwhile will come with lots of failures and rejections.
You’re bound to hit a wall when you begin your coding journey. And perhaps, you’ll continue to… that is, until you find a breakthrough. So, don’t limit yourself to just one learning method - you’ll only be depriving yourself of opportunities to find that breakthrough.