I don’t believe that everyone has the aptitude to program.
I know that might seem like a strangely bold statement, especially from someone that makes their living teaching people how to program but hear me out.
I think you can agree with me that not everyone is cut out to do everything.
I want to learn how to paint, draw and play the guitar. I have spent countless hours learning – I have paid for lessons and I have put in a lot of effort. But do I know how to do any of those things? No.
Why? Because I don’t have the aptitude.
What is aptitude? Aptitude can be defined as having a natural ability or a “fitness” for a task. Aptitude means that you have a competency for a certain kind of task or work. Some of us have the aptitude to be great basketball players because we were born tall. Some of us can be great runners and participate in 5Ks every weekend because we have good stamina. Some people have the aptitude for mathematics because they were born with strong analytic skills.
So, no – everyone cannot learn how to program just like I cannot learn how to play the guitar.
So how do you know if you have the aptitude or not?
One way to find out is to take tests in areas such as Numerical Reasoning, Logic or Pattern Recognition. These are all good skills that translate into being able to learn programming languages and concepts faster. You can find some of these tests here:
These tests can help identify whether or not you have some of the necessary skills but they should be considered the end-all voice on whether or not someone is capable of learning how to program.
Some people believe that if you are good at math that you can be a good programmer. I am almost in this camp but I have to disagree with some of this idea. Most of the programming that you will be doing for a living revolves around business problems. Math isn’t going to help with these but it will help with foundation logic. Since most of the first programming languages were developed by mathematicians, it makes sense that a lot of the same concepts would be applied or borrowed into the concepts used in computer science. However, being good at math is not a free pass into programming.
Are these tests and scores really going to tell you anything?
In my mind, the only way to find out if you have the aptitude for something is to try it. Only by trying to learn something, putting in the effort and practicing it are you going to find out if this is something that you like, enjoy, and/or are good at. Over my years of teaching I have seen all sides of this coin. Students that want to learn programming so bad but just can’t get it. I’ve had students that joined the class because someone told them they should and were good at it but hated actually doing it. I’ve had students think that learning to program was going to be like playing video games and they shy away from it because “its hard” and I’ve had students come in thinking programming was going to be terribly hard and finding it was simple.
What can we learn from this?
Expectations are the common thread between all of these students. Everyone comes into programming expecting something but their expectations do not align with reality they aren’t going to get anywhere. I recommend that you put away what you think programming is going to be like, whether it is easy or hard, whether you are good at it or not and put your butt in the seat. Do the work. Only then will you know if you can do this.