One of the most common questions we get from people with no experience in programming also happens to be one of the simplest:
“What sort of skills do I need to learn coding?”
While this may seem like a natural question if you come from a background (particularly an academic background) with no relation to computer science, we find that whether a student takes well to programming or not usually has less to do with what they know than with the sort of person they are.
In brief, it really doesn’t matter if you’ve never taken a lecture in layering or cloud computing in your life. But it does matter that you possess at least a few of the personality traits that will facilitate rather than hinder you as you learn to code.
We’ve compiled the four that we think are most important. Take a look – do you recognise yourself?
Coding is like any other complex discipline in that it doesn’t have a seductive Finish Line which, once crossed, gives you permission to stop running – you never reach a moment when the process of learning is truly over. This has an important implication for beginners: no matter how many textbooks or online tutorials you read, at some point you will have to take a deep dive and figure out how things work on your own – because this is what the experts themselves do all the time.
People who do best at coding are almost invariably those who respond to a problem by taking initiative and looking for a way to solve it – not for someone to hold their hand. This doesn’t mean that software developers never ask for help or don’t work in teams, but ultimately that self-driven stubbornness to find out why something isn’t working – and fix it – has to be their own.
#2. Abstract thinker
There is an important difference between knowing how to lay bricks, and knowing how to build a house. There is a similar difference between knowing the syntax of a programming language, and knowing how to use it in order to build something useful.
Contrary to what is sometimes believed, coding doesn’t require you to perform complex mathematical calculations. But it does require you to visualize in your head, clearly and with reasonable accuracy, what it is that you are trying to achieve – ideally before you even start trying to achieve it. Programmers who kick off a project with neither a strong plan, nor a sense of how their scripts and functions (the ‘bricks’ of coding) will work together, are only setting themselves up to fail.
You don’t have to be a math wizard to code, but being able to think in the abstract, that’s mandatory.
At this point you might be thinking, ‘Patient? Hang on a second – patience isn’t just for coders, it’s necessary to learn just about anything more complex than Tic-Tac-Toe!’ And you’d be right: every discipline in the world requires some measure of this virtue.
Even so, few things in the world will test your patience quite as intensely, as consistently and as unreasonably as programming.
Indeed, the hurdle at which the greatest number of would-be programmers end up quitting is typically met within the first couple of weeks. A beginner will try and create an algorithm, find it doesn’t return the correct result, try and fix it, find it still won’t work, try one more time, until at the third or fourth or fifth failure they’ll throw their hands up and yell “This is so not for me!”
Here’s a little secret: that frustration you feel during your first few weeks trying to code is what every top coder in the world also feels. They’ll be handling much more complex problems, of course, but they’ll still be trying and failing, again, and then again, and then again. What makes them successful is not that they can spare themselves that process, only that they can handle it.
A surprisingly common mistake, even among the more experienced programmers, is to try and build a relatively complex piece of code in a single go, without testing each part while it is being built. Most commonly this results in hours of tedious debugging, looking for errors with little to no clue on where they are located.
Having a sense for how to break a problem down into its component parts is exactly the sort of talent you want to bring into programming. Some people respond to a broken program the way a painter looks at her work – they stare at the code in its entirety, hoping they’ll just ‘see’ where the problem is. If, on the other hand, you are the sort of person who subdivides a project into compartments and can treat each one as a beast of its own (what is known in tech as ‘incremental testing’), then you’re already halfway to your first job as a junior software developer.
Do you recognize yourself in most if not all of these personality traits? Then coding may just be the thing for you! Moreover, practicing it will cultivate and refine those same traits it demands, meaning you’ll only get more ‘natural’ at it with time. Many people never try coding because they grew up doing something completely different. Don’t fall for that trap. In this field as in almost every other, who you are is more important than where you’ve been.