How to Master Any Programming Language
With the birth of our latest technological age, a swath of career paths not previously mainstream has occurred. As of 2019, there were 26.4 million developers worldwide, compared with just 1.3 million in 2008. Not only is the world of development a fully-fledged industry, but it’s also a huge part of our cultural lexicon. From television shows about turtlenecked developers to news articles describing the free yogurt Google employees have access to, most people are aware of this growing group of talent.
Whether you’re looking to start or shift careers, build your own projects, enhance your understanding or remain relevant in a world where coding will become part of the school curriculum, the first step is learning a programming language.
But what working developers recommend is fluency, rather than mastery. Knowing a language well enough to solve the majority of problems you’ll face, and increasing your toolbox with the same level of familiarity in other languages, too.
Getting started is free of charge, with resources available everywhere.
Choosing your lingo
When deciding which language to learn, it’s better to choose purposefully. Are you hoping to use it for web design? Game development? AI or ML tech? We’ve included links so that you can read up on how they’re used. Make an intentional decision, so that you’re starting strong.
HTML and CSS are not programming languages; they’re mark-up languages. That said, they’re everywhere you’ll work for basic web design, and relatively easy to learn, so a good idea to begin dipping into.
It’s widely agreed that once you’ve learned one language, it becomes a much easier task to learn another. So choose one and stick with it until you’ve mastered it. C# and Java are very similar, so picking one can mean a breezy transition to the other.
Find your forum
Where you learn is entirely up to you. The more you diversify how you learn, the faster this information will become entrenched in your approach. Thankfully, online and free resources are abundant. There is so much you can teach yourself without any expenditure. And if you find yourself motivated to learn, without someone motivating you, you can probably be pretty sure that you’ve chosen a skillset that will serve you well in the long run.
Here are some resources that cost nothing to get you started...
It’s easy to forget we can hit up the library without dropping the cash...
Code Complete: A Practical Handbook of Software Construction, by Steve McConnell
HTML and CSS: Design and Build Websites, by Jon Duckett
Programming: Principles and Practice Using C++, by Bjarne Stroustrup
Python Crash Course: A Hands-On, Project-Based Introduction to Programming, by Eric Matthes
The Pragmatic Programmer: From Journeyman to Master, by Andrew Hunt and David Thomas
The Self-Taught Programmer: The Definitive Guide to Programming Professionally, by Cory Althoff
Cracking the Coding Interview: 189 Programming Questions and Solutions, by Gayle Laakmann McDowell
The Odin Project
FreeCodeCamp - we highly recommend Harvard’s CS50x Intro to Computer Science YouTube lectures
And here are some paid options...
Watch and Code
Strengthen your fundamentals
Rote learning has never been fun. It’s better these days, with games and free video tutorials to help make repetition dynamic. But to get to the good stuff, you’ve got to learn your basics. To make your life easier down the road (take heed), learn your basics.
Don’t worry about memorizing syntax; as long as you get the main concepts down, that will come with time. Your development application will tell you if syntax is wrong. But these other fundamentals are the road to freedom. So once you’ve chosen your language, get to know:
Let’s talk about a degree…
Of course, if you’re just interested in development as a hobby, a degree is not necessary. You can skip this section.
And for those wanting a career, it’s widely accepted that you don’t necessarily need one, either. Many employers will take you on following a short Bootcamp, or if you’re a self-starter with a strong working knowledge of a couple of languages and a good portfolio. So if you want to get to work quickly or make a pivot, then don’t let the convention of a degree stand in your way; it’s simply not necessary in the real world, particularly with smaller companies.
That said, if you want to work at the larger companies, says Microsoft, many do have a prerequisite of a bachelor’s degree, just because the competition is so fierce. Unless, of course, you’ve worked on some notable and bad-ass projects.
If you’re serious about data or web security, however, that’s a different story. Specialists hired for those roles usually have higher education credentials and relevant experience.
Make a project
Once you’ve got a shaky first handle on your chosen language, pick something to make. It will help you to really test and grow your working knowledge, through real-time use. If you’re not sure what to make, first think of a digital problem, and choose to design a solution. You can map out the different ways of approaching it, then prepare an algorithm. After writing the main program, you can develop test cases to check for any errors that arise. Once these are resolved, you’re finished!
The best advice is that once you’ve done your first couple of projects, choose new ones you can’t turn away from. Using the language that you’re already familiar with is great, but incorporating others will force you to grow and strive quicker. The added bonus is that you’ll be building a portfolio of work towards job opportunities.
Celebrate your mistakes
When you’re working in development, you’ll frequently be hashing out problems collaboratively. Not only is this the quickest way to supersede a hitch, but it’s also one of the funniest parts of the biz.
If you’re not working as part of a team, or with peers in a Bootcamp for instance, developer forums can be a great alternative. Some are listed above, but also check out the prolific GitHub. Accessing open source code can help you understand the mechanics of others’ approaches.
Another little trick, one of the most obvious ones, is to Google for solutions. There’s a worldwide web out there, and putting some quotation marks around your error message can yield the solution you’re looking for.
Lastly, like all new skills, favor process over result
Coding is all about problem-solving. Maybe that’s what attracted you to it, or maybe it’s a love of computers or just plain curiosity. Whatever your motivation, tenacity is the name of the game.
Be patient with yourself, and validate any progress you make. It’s easy to undermine the significance of the ‘basic’ stuff or to compare yourself with your mentors or people online. Everyone starts at the beginning, and most of the work is done in the middle. It will all form the building blocks and best practices for your future, more advanced work. If you rush past the basics, you can be assured that your skill set will constantly be undermined. Go ground up - the fastest way to get where you’re going is slowly. That’s how you achieve true fluency.
Get your practice time in. A little a day will speak for itself, and is much more digestible than cramming long hours once a week. That said if the latter is all you can do, do it. Consistent investment in your new skill is the name of the game. You can also measure your progress by setting a timer. Getting lost in lines of code can definitely suspend your sense of time and space. If you can tangibly review your competency in this format, it’s an easy way to track progress and assess yourself. This can inform your choice of projects, or candidacy for employment.