A lot of people want to learn how to code these days, but they have no idea what they’re getting into. Sure, programmers can make good money if they know what they’re doing, but too many people are hopping on the bandwagon without giving it proper thought.
Over the past few years, a deceptive mantra has developed — one that says that anyone can learn how to code, therefore everyone should learn a popular programming language. Newbies are tricked into thinking that a few months on Codecademy and FreeCodeCamp is all it takes to become a master coder.
But that’s simply not true. In fact, many people who dive into programming end up regretting it, mainly because it’s not what they expected and they’re quickly overwhelmed. To avoid that, ask yourself the following questions and be honest.
Problem solving is the heart of programming. There are many aspects to the problem solving process, but at the very core of every successful programmer is an internal drive to create solutions and to fix things that are broken.
They say that a programmer spends 10% of his time writing bugs and 90% of his time fixing those bugs — and every person in the world who has done any amount of serious coding can relate to that. It’s truer than you know: programming is the art of debugging.
Anyone can learn the syntax of a programming language. Anyone can learn the nuances of an integrated development environment. Anyone can think of a cool new app idea. But to encounter bug after bug and not lose heart? That takes a special kind of personality.
The kind of programmer who succeeds is the one who can run into a weird compiler error, a buggy code library, or a confusing language feature and be self-driven enough to search for an answer. A successful programmer is one who’s not only willing but compelled to spend hours seeking a solution, and won’t be satisfied until it’s found.
Here’s another way to think of it: extrinsic versus intrinsic motivations. Do you want to be a programmer because you want the rewards? Or do you want to be a programmer because you love the process? If not the latter, then maybe it isn’t the right path for you.
Most programming newbies quit within their first year. While there are many reasons for why someone would give up, perhaps the most important reason is that they feel overwhelmed by the learning curve and succumb to demoralization.
Programming is a vast field with hundreds of languages and areas to explore. Within each area, you’ve got dozens of different libraries and frameworks that you can use. And encompassing all of that, you’ve got higher-level paradigms and patterns that are applicable to different situations.
In short, you’ll never be able to learn it all, so it’s crucial that you decide what exactly you want to do. An amazing 3D graphics programmer could have zero experience making websites, while the best artificial intelligence coder may have no clue how to make mobile apps. And that’s fine!
Not only that, but certain programming concepts are more important for X yet not useful for Y. For example, MVC architecture is almost necessary for web programming, while the Entity-Component pattern is super useful for game developers.
The main point here is that your end goal (e.g. websites, games, etc.) will dictate your path of learning, so it’s better to know this from the start. Sure, you can always experiment and switch paths later, but programming is easier to learn when you’re coding something you actually want to create.
Another important consideration is whether you just want to code personal projects in your free time or if you want to enter the programming industry for full-time work. This, too, will have a big impact on what to study, how to study, and your overall path of progression.
Maybe you have an idea for a video game and you think it’d be cool to see if you can make it a reality. You love your day job as an accountant and have no desire to quit, so it would just be a project you work on during the weekends. Feel free to learn whatever languages and engines you want. As long as you have fun, what does it matter?
On the other hand, if you want to make a career out of video game development, then you’ll probably want to learn a serious language and engine, such as C++ and Unreal Engine 4 or Java and LibGDX. If you learn game development using Ruby and Gosu, you’ll never land a job in the industry.
As for formal education, a college degree can help but isn’t entirely necessary. The Internet is home to a lot of great tutorials, free programming books, and free programming courses so you won’t be short on knowledge, but college is useful for networking, which can help you break into the industry.
But whether you pursue programming as a hobby or a career, be prepared to put in a lot of time and practice.
Programming is tough. Not that it’s hard to learn how to code (because it isn’t much harder than learning anything else) or that bugs are notoriously hard to solve (because most bugs are pretty straightforward), but the whole process of programming can take a toll on your mental stamina.
Any given coding project has some mixture of planning and debugging, two processes that are way more mentally draining than you might expect them to be. Every project is a marathon of problems to be solved, and as the problems become more and more complex, it becomes easier and easier to sag under the weight of it all.
And even though I just said that learning how to program isn’t particularly hard, the sheer amount of knowledge that you need to learn can loom over you like a mountain. Programming is a never-ending treadmill of new concepts, new paradigms, new languages, and new tools. It’s a lot of fun, but also quite exhausting.
But the hardest part of all, at least for me, is that you’re always going to feel like you aren’t good enough. Even after thousands of hours of experience, you’ll probably still feel like you don’t know much. Mentors and peers can help you through these dark times, but you’ll also need an iron will.
Which is why perseverance is a programmer’s greatest trait. Despite how stressful programming can be, you need to be determined. For every new language you learn, for every mind-numbing bug you encounter, for every project that seems too much to handle — you have to be able to grit your teeth and trudge on through it.
Without perseverance, you’ll burn out, and unfortunately that happens quite often. The good news is that burnout doesn’t have to be permanent. In fact, if it ever happens to you, know that there are ways to overcome it.
Depending on how you answered those questions, you might feel like programming is the perfect match for you — or you might feel like it’s the complete opposite of what you expected. Probably the latter, which is normal because most people aren’t meant to be programmers.
If it turns out that it isn’t for you, you may want to consider these other tech jobs that don’t involve coding. Yes, it’s quite possible to be a tech-savvy worker who doesn’t pump out code all day!
How did you answer? Are there any other questions that one should ask before learning how to code? Share your thoughts with us in the comments below!
Image Credits: Pointing at Code by welcomia via Shutterstock, Web Script by Timofey_123 via Shutterstock, Hobby Programmer by Solis Images via Shutterstock, Exhausted Programmer by Issarawat Tattong via Shutterstock