It makes me sad to see how many junior developers abandon their dream of a programming career.
I know that programming is not for everybody. Similar to other professions, it requires particular skills and character traits. You need to think logically, be okay with sitting all day in front of the computer, and have lots of patience.
But it's also a great field. You can learn it at home for free, the salaries are incredible, you will learn so much, and most companies don't require formal education from their employees.
So why do so many people get discouraged and stop learning to code? I blame self-doubt. I've seen so many promising juniors fail just because they didn't feel good enough in some respect.
It's time to fix it.
Here are the four most common ways self-doubt kills our dreams of a new life and how you can constructively approach these bad thoughts.
I am not smart enough
The truth is you probably are. Programming is not magic; in a meaningful way learning to use programming languages is similar to learning to use natural languages. So if you can follow the average Medium article, the chances are you are smart enough.
In case you think I'm exaggerating — even children can learn to code. They usually use some simplified languages like Scratch, but the 10-year-olds are more than capable of doing some coding. If they can do it, you can do it too.
The above doesn't mean learning to code is easy. It is not. It's one thing to have enough mental abilities to do it and another actually to do it. Some programming concepts are layered and complex, and learning to code is generally tricky. Again it's similar to learning a foreign language — it's not something you can reasonably achieve in a few months if you don't have an extensive background.
The feeling of inadequacy often happens when juniors are struggling with something. But struggling is the only way to progress. If learning feels hard, it means you're doing it the right way — you're challenging yourself.
Instead of letting dark thoughts control you, use them. Embrace the effort, and be proud of yourself. You are trying when thousands of others gave up. Also, have some perspective — you will never know everything. And that's okay. All you need to do is strive to code as well as you can and become a little bit better as a programmer daily.
I don't have the skills / It's too hard
Indeed, you don't have the skills. That's the point — you're learning the skills. Nobody is born with knowledge; learning is your job.
It's also true that programming is complex. And your learning experience may feel even more difficult than it should be. When you take advice from social media, you can find dozens of stories of people claiming they learned to code in three months and now are working for Google or another Amazon. There are dozens of unrealistic "roadmaps" to becoming a software developer in a month or two. And many YouTube videos promise to teach you any programming language in 10 minutes or less.
Learning to code takes hundreds of hours. And the hours need to be spent mostly writing and reading the code, not watching tutorials and courses. All these "success stories" do, is set unrealistic expectations just for the sake of click-bait.
But even though learning to code is hard, it's also doable. I don't know anyone who got their first job within three months of starting learning, but I know dozens of people who spent a year on two learning and now got a job. I'm one of them.
Let's go even further. I'd say it's good that programming is hard. If it were easy, nobody would pay big money for doing it. Fortunately, it's not so you can earn a lot. Even better, if it were easy, you would have to compete with many people who want to do it. But it's hard, so you compete only with those ready to play the long game and stick to it for years.
It will take lots of time
That's correct. Probably it will take even more time than you anticipate. Finding materials, reading them, coding. You expect to understand something in a few days only to discover you don't get it after weeks.
Some people learn faster, some slower, but you need to be willing to devote time to programming if you want to pursue a career as a software developer.
But is it a real problem?
Time will pass anyway
The only thing you can do is decide what you will do with your time. You can watch Netflix or play video games, and that's fine. But to move on with your career, whatever career it is, you need to put in some work. And it isn't easy to find any industry where putting the hours in is more effective than in software development.
In many jobs, you need to spend years at university. And often you have to pay for this university by yourself. With programming, you can use only free materials and study in your spare time. It's not easy to have a daily job and learn, but it's doable, which is much better than in most well-paying jobs.
So don't be afraid to start time-consuming endeavors. Time will pass, and your future self will be grateful you spend this time learning something useful and not just binge-watching another mediocre series.
The competition is fierce
So many juniors are afraid of the competition. In a way, they are correct. Thousands of people are learning to code and hope to change their lives.
Dozens of free tutorials, bootcamps, and universities help aspiring programmers. Additionally, much programming work is outsourced overseas, so you must compete with programmers worldwide.
At this same time, the software development industry is still growing. Every year there are thousands of new jobs, and new programming fields arise. Companies are constantly on the lookout for talented developers. Those who stick to learning long enough win.
Also, the competition might be huge, but it doesn't mean the other candidates are so much better than you. I've met many juniors who imagined everyone else is better prepared than themselves. In truth, most juniors have similar skills. They finished these same bootcamps and created identical projects. If you manage to stand out, you'll get your chance. And standing out is easier than you think.