In this post, I want to address some concerns I've heard from people over the last few years. Those are related to learning programming to get a job as a developer.
We'll be looking at many misconceptions that are still around and how you shouldn't worry about them because they are not true.
Now, let's get into it.
Over the years, I've had people tell me that I'm "very smart" because I've studied software engineering and I'm working as a developer.
They say they are working in something else because they aren't "smart enough" for a job like mine.
Many of them assume that engineering is an easy thing for people that are introverted, skinny, and use glasses like me.
I can't speak for others but it was certainly not my case. It was more a struggle than a "normal" thing in general.
There's this misconception that one has to be a "math wiz" to do well in a tech job. And on the reverse, not doing well with maths somehow predicts an unlikely future in the industry.
With how the world has become in the last decade, that's no longer true at all. It depends on several different factors.
It's not true either that if you don't have some innate talent for math or physics you can't become a competent engineer.
For most people, there's the assumption that coding is a highly specialized field where one needs several strong skills to do well.
Coupled with the fact that in mainstream media coding is portrayed as this very difficult thing. One that only brilliant people are able to perform.
It's no wonder then, why learning how to code and become a developer looks like a huge insurmountable challenge.
When asked why they have stopped learning to code, I've had people tell me something along the lines of...
"I've tried a couple of times before but I seem to forget it and have to start again to not get lost in the topics.
Or also something like...
"Coding it's not for me. I can't seem to do well, maybe I'm dumb for that kind of thing"
I totally get the frustration of looking like you haven't made any progress despite putting in some effort. But claims like those start based off wrong assumptions.
One of them is the "I've tried it before but I didn't do well with it so it might not be something for me"
So let's back up for a bit. First off, coding is hard there's no denying it.
Thinking that one can watch a couple of tutorials and then be able to replicate what the instructors did on the first tries is unrealistic at best.
Second, thinking that because we put in the effort before and the results weren't what we expected means we're not good at it. And we should be doing something different instead.
An important thing to note is that just putting some effort to learn a difficult subject is not enough.
In other words, is not putting in some practice for the sake of doing it, it's putting in the right kind of practice.
To quote Anders Ericsson in his book Peak.
"The right sort of practice carried out over a sufficient period of time leads to improvement. Nothing else."
Meaning that when you take time to sit down and practice what you're learning, you need to have a goal for that practice session.
Believe me, reading a textbook (or pdf) and going through the exercises in there alone won't cut it. I've made that mistake several times before.
For example, if you're learning web dev and are practicing building websites, find out what you need to know to make that example website.
Is it the layout portion? Is it responsive design? Is it the interactions?
Taking this more structured approach can simplify things much more. Also, giving you more of a look into what you already know and what you need to learn or improve on.
Now, you'll find another situation where there are things you're more proficient at than others.
There will be some concepts you have no problem understanding and there will be others that won't fit too well in your mind.
This leads me to...
"Coding never came easy to me. There are other areas where I can do better. I don't have the natural talent for programming"
It definitely did not come easy to me either. And while it's true there are other areas that one can do better at, I'm thinking that you want to pursue coding for several reasons.
Besides these reasons, the important part is that you keep on going and don't pay attention to this notion.
The idea of "natural talent" is a very common myth.
To quote Anders again.
"There is no evidence that any otherwise 'normal' people are born without the innate talent to sing or do math or perform any other skill."
You may not have any natural disposition to tech but that doesn't mean you cannot learn it and develop the skill needed to do well at it.
I know a lot of people who don't have the traditional background or what one would consider the "natural aptitude".
Yet, they're working at companies with great jobs that would make me jealous. (The "good" kind of jealous of course 😜)
To develop this skill of being a competent developer is where the right kind of practice comes into play. What Anders calls "deliberate practice".
"Deliberate practice", is the kind of practice where you have a defined goal that you want to achieve and you have an idea of how to do it.
You're not doing regular drills like dribbling in basketball or practicing your swing in golf.
You're practicing a specific part of the skill you want to develop that you have identified you need to work on.
What we normally think when we hear about having to "practice" something is what he calls "naive practice". That is, thinking that by doing the activity repeatedly we're going to get better at it.
It's like what I said, reading problems from a textbook and trying to solve all the ones we can, or swinging the bat and trying to hit the ball.
By contrast, this other kind of practice requires having a clear, specific goal (or goals) for what you want to achieve. Not having those makes it very difficult to know whether the practice session was successful or not.
Deliberate practice is the next level we can get to.
This sort of practice was identified in well-developed fields, like competitive sports. Where is easy to identify which ones are the best performers, where there are clearly defined rules, and also there are trainers/coaches.
But what if our work field is different? Where there are no trainers or specific measures of performance? 🤔
Here's what he says about it.
"This is the basic blueprint for getting better in any pursuit: get as close to deliberate practice as you can."
So to get better at coding, we'll have to do it as close to deliberate practice as we can.
The next logical question would be, how on earth we do that? Again there's an answer for that.
"First, identify the expert performers, then figure out what they do that makes them so good, then come up with training techniques that allow you to do it, too."
This is where having others who have already gone the way, done the thing, and now are sharing how they did it can be very useful.
Being in a community where others have similar goals and are taking the steps to accomplish them, even more useful.
Instead of trying to do everything on your own, facing the inevitable challenges, and get discouraged...
Make a difficult thing (learning to code) easier by getting help from others who are both at your level and more advanced as well.
Now, let's tackle another very common misconception...
"I feel like an old dog that can't learn new tricks"
That saying has definitely done more harm than good. But look it up on the internet and you'll see that's not true.
You can learn to code and acquire the skills needed to make websites, apps, extensions, or any other kind of software.
You can acquire the skills and apply them while working with others and either get a job or go freelance.
You can do these things that at first seem too difficult if you put in the appropriate, structured practice.
That's where deliberate practice comes in.
"Deliberate practice is for everyone who dreams. It's for anyone who wants to learn how to draw, to write computer code, to juggle, to play the saxophone, to pen "the Great American Novel"
So it doesn't matter if you're 30, 40, or 50. You can still do this if you really want to.
It's not that because you're not young anymore that you cannot learn something difficult if you put in the proper practice.
Now it becomes more of a question of "do you really want it?" and if so, "how much do you really want it?"
These things are possible and are within your reach. Now more than ever.
Don't pay attention to others who are stuck in their old ways and think that you need some sort of "gift" to do well with computers or code.
In the end, all these myths we've been hearing for years even decades that we thought were true, actually aren't.
You don't need some sort of special talent to learn how to code and program hardware if that's what you want.
Don't believe that because you didn't win the "genetic lottery" or don't have an IQ of 150 or something else, you can't do the things that you really want to.
Whether that's learning to code, or write a book, or take a course in horse riding, or play the piano, or anything else.
That's the central idea of this post.
Just because you tried coding in the past and it didn't work well doesn't mean that you're "dumb" or "mentally handicapped" in some way.
You can learn how to code and apply that skill to build cool stuff. Get a job doing something you like, improve your situation and that of others around you. That and many other things that you can do.
You can do these things by putting in the right kind of practice.
Will it be difficult? Sure, but anything worth doing is.
It can be difficult but it will be much less than if you tried doing it in the traditional way
I'll finish off with another quote from Anders.
"There is no reason not to follow your dream. Deliberate practice can open the door to a world of possibilities that you may have been convinced were out of your reach."