Self-learn Coding: How to Get Started and Learning Tips
In today’s era, with the proliferation of computer-related technologies, coding has indeed become an important skill to pick up at some point in your career.
According to the Bureau of Labor Statistics, in the last decade, computer and IT-related occupations were the single largest source of wage and employment growth. This decade is observing a shift toward health care, but computer-related industries still remain near the top. Another report from Burning Glass, a job market analytics firm, found that there were as many as 7 million job openings in 2015 in occupations that required coding skills, and programming jobs overall are growing 12% faster than the market average. With the increasing pervasiveness of computers and technologies, the importance of coding skill will only continue to grow.
There are many more reasons to code besides its importance: its intrinsic excitement and the problem-solving opportunities it brings.
Interesting? Let’s Get Started!
The first step towards anything is indeed daunting and coding is no different, especially if you come from a different background. It is always good to sign up for an introduction course if possible. However, I presume the majority of us will try to learn it ourselves, and I know that this could easily become a frustrating experience if it’s not done right.
Having been in the same shoes, I hope that these following tips could set you off on the right foot and help you learn faster and, more importantly, better.
#1: Know your motivation
It is important that you know why you want to learn to code. The direction in which you go will depend largely on why you want to learn coding in the first place. If you want to be a professional programmer or switch careers altogether, signing up for serious courses might be your best bet. On the other hand, if you just want to build your own product (websites or games) for fun (and possibly profit) in your spare time, then interactive tutorials might be better.
Having a clear sense of why you want to code also helps you decide how much time and effort you have to devote to learning and keep you motivated as you go.
#2: Choosing the Right Language
You might have heard people telling you how great and powerful C++ is, or why C is a terrible language. The truth is, there’s no one “best” programming language.
In fact, choosing the right language is tricky. The language you choose to start with might, again, depend on your purpose. For example, you’ll need to learn Java if you want to write an Android applet, but Swift if you want to develop an iOS applet. If you already know your end goal, look up what it takes and learn the languages that align with your goals. If you are still unsure, check the infographic below which compares a few popular programming languages.
After all, programming languages are similar to natural languages: different ways to express the same idea (like “Good morning!” and “Bonjour!”). Once you’ve learned one, it’s fairly easy to pick up another. So really, this isn’t something to get too hung up on. Just start with something (anything) rather than to spend hours picking the “perfect” option (which doesn’t exist). That said, some programming languages are more beginner-friendly than others. In my opinion, Python is a good language that beginners can quickly pick up because of its straight-forward and intuitive syntax.
#3: Divide and Conquer
“Divide and Conquer” is an actual algorithm used in Computer Science where you break down the problem into manageable chunks and solve one thing at a time. Indeed, it still applies to learning coding, pretty much.
It’s obviously impossible to jump into coding straight away and cram all knowledge into your brain at once, even if it’s information about the same topic. Learning something new is a lot easier when you break it down into byte-sized pieces (see the pun, haha).
Take it slowly, one thing at a time! This can be really difficult, because it’s tempting to learn many languages as they are all useful, one way or another. You will drive yourself crazy if you try to do that. Instead, start with the language you’d need most at the moment (again, choose the right language) and start small. You’ll learn the right language when the right time comes. And don’t worry, the other languages will still be there after you master your first language (in fact, if some disappear, you’ll save lots of time by not learning them in the first place).
A good way to ensure your progress without overwhelming yourself is to have a goal to work on. Set small goals and put them on your schedule. When it’s in your schedule, you are more likely to do it. Of course, the goal needs to be realistic: you can’t expect to master a several-hundred-page programming book in less than a week. Finally, ensure you’ve fully understood one concept before moving on to the next. Things take time. Don’t rush!
In my opinion, spending at least 30 minutes a day (every day) to learn is ideal because committing to 30 minutes is simple: it isn’t too long for you to get overwhelmed, nor is it too short to learn anything effectively. Good news is, chances are once you get going, you’ll end up working for longer.
#4: Practice makes Perfect
I know this cliché is oft-repeated but it is true nonetheless. Reading a lot of programming books will only allow you to scratch the surface of coding. The best way to master your skill is by solving problems in the language you are learning. Also, given the pace at which technology changes, your skills might be out-dated if you don’t progress. To stay engaged and current in your skills, you need to continually seek for novel projects and challenges to embark on.
There is a wealth of free online material for you to learn and practice. You could start by solving problems on Hackerrank or Sphere Online Judge. If you feel more confident, you could opt for harder problems in Codeforces. Besides solving the problems, these sites allow you to read other people’s solutions. I personally find reading other people’s codes to be one of the best ways to improve because you can learn and adopt their code styles and techniques (which is concise and efficient).
If you wish to progress even further and specialise, I suggest you consider signing up for online courses. Udacity’s Computer Science 101 course, for instance, is both free and engagingly interactive, as are many of the MOOCs offered by EdX and Coursera. Other interactive web-based tutorials also include Codeschool, Codecademy, and Treehouse, whose courses are either free or relatively inexpensive.
As every learning process, feedback is essential. Code reviews — essentially peer editing — are your friend, and it’s valuable to find a community that is welcoming and willing to help. On the Internet, there are question-and-answer sites such as Stack Overflow, which provides virtual communities of experts who are willing to answer questions ranging from the extremely naive to the extremely sophisticated. If you are around in Cambridge, you could also come to one of our HaC Nights to meet other code-lovers. You’d be surprised how much we could learn from each other.
#5: Staying Motivated
Coding is pretty much a self-directed and self-paced activity, and ongoing practice is the only way to keep improving. At some points in time, you might also feel overwhelmed by other clever people. That’s normal! Sometimes that might even be a good sign, as it means that you have the opportunity to learn from people and you can pick up things much faster than others.
If you ever feel exhausted and think of giving up, just slow down, take a break. Constantly remind yourself of how far you’ve come. This may seem really hard, because it often goes unnoticed: you don’t actively see yourself progressing, but trust me: every day you learn and practice, you are getting better and better. It’s hard to see, but it’s there.
Coding confers an ability to create amazing things that other tools can’t match in power or versatility.
At its most basic, coding allows for the automation of repetitive tasks. At higher levels of sophistication, coding allows for the development of dynamic and interactive programs, many of which have a direct impact on our daily life. It is indeed a valuable skill to pick up for both professional and hobbyist purposes.