Whether you’re a budding developer with a few Hello Worlds under your belt, or you’re a seasoned software engineer with 10+ years of experience, there’s one question that every developer has thought to themselves at some point:
“How do I become an unstoppable programmer?”
Okay, well maybe not phrased exactly like that—but you get the point. The point is to be like them.
We’ve all seen them: those experts who code in their sleep and always seem to know the correct solution for any problem. They are the top contributors to 10 different open-source projects, their GitHub contribution graph is solid green, and they can whip up a prototype for even your most outlandish feature ideas overnight on a lark.
So how do you become one of them?
Well, the answer to that question is that there’s no silver-bullet answer, simply because “unstoppable programmer” means something different depending on the developer in question. But, fret not because there are still plenty of little things a developer can do to hone their craft and make writing excellent code a breeze, even if they face a few bad days along the way.
Let’s start with what’s most important: practice.
Develop a Regular Practice
First and foremost, no developer has ever gotten better at programming through anything other than regular, deliberate practice. Programming is a skill, and just like any skill, it takes time, patience, and regular challenges to get better.
Some ways to practice might be:
Interview Questions
Tons of example interview questions for some of the top tech companies have made their way to the web in recent years. There are thousands of real-world interview questions out there, and they run the gamut from basic to hilariously difficult, so beginners and experts alike can find some useful concepts to drill themselves on.
If answering questions from a list sounds boring, there’s always interviewing.io, a free service that connects engineers at companies like Google with people looking to practice their interviewing skills.
Code Katas
Kata, in a martial arts sense, refers to small exercises that help practitioners master whatever movement they’re learning.
For Code Kata, the concept is simple: Practice a small exercise every day, over and over, implementing it fresh each time and making little improvements until you know it forward, backward, and every which way.
The goal with each kata is to provide a space for practicing new concepts so as to internalize them and make your kata solutions better and more elegant with every iteration.
Just like interview questions, there’s no shortage of katas to find on the world wide web, from crowd-sourced lists to curated selections and whole businesses built around providing compelling code katas.
Don’t Practice in Isolation
You can only get so far on your own when it comes to honing your programming skills, and finding someone more experienced can be one of the best ways to get better faster.
Having someone else on hand to answer questions can be the difference between trying to find a solution to your problem for three hours because you couldn’t figure out the proper keywords, and finding a library that does exactly what you want under the first result.
Luckily, it turns out that programming is a collaborative experience more often than not, and you’ll get the chance to collaborate with more experienced coders who have been exactly where you are in your career.
That collaboration can take the form of submitting pull requests and getting them reviewed, attending meetings, or writing documentation for other developers to read.
Heck, even without being physically surrounded by more experienced programmers, you can still go to places like Stack Overflow to find people who wait around to answer your questions and provide guidance for fun. What a world.
Even more than that, answering questions on Stack Overflow yourself can be a great way to help solidify the skills you’ve already learned. After all, they say you don’t really understand something unless you can explain it to someone else.
Play Around!
Whether it’s a new data-science library, a new testing suite, or a front-end framework you’ve never worked with before, reading the documentation can never replace direct experience.
Even just copying and pasting code snippets from a software’s quickstart guide can make all the difference. Actually running code, and playing around with it yourself is one of the best habits you can develop as a programmer.
Essentially, play with it!
At the most basic level, that can just mean trying functions and observing their outputs, or it can mean intentionally breaking a script and putting it back together. You can even try to create a custom mobile app for something you’re passionate about.
As you get more comfortable with the code you’re playing with, you can try extending it with your own code to suit your needs better.
Look Back at Your Old Code
Anybody who has programmed for any length of time has to contend with their past self. The “past you” had very good intentions when they indexed that list every time they needed a particular piece of data. Past you had no way of knowing that a dictionary would have been a far more economical solution.
What’s important is that the “present you” can pinpoint your mistakes, and has a good idea of how you’d implement it better the next time around.
Looking at your own code, although sometimes painful, can be a wonderful way to keep tabs on how far you’ve come as a coder, and provide the motivation you need to keep going when you’re challenged with a new problem. You’ll know that “future you” has got your back.
Learn New Languages
One of the quintessential books recommended to programmers everywhere is The Pragmatic Programmer, written by Andrew Hunt and David Thomas. In it, the authors make a number of recommendations for programmers looking to get better in various domains: from business development to better code reuse habits.
There’s one piece of advice from the book, however, that has thoroughly penetrated the coding zeitgeist, which is to learn a new programming language every year. Now, that probably sounds like a tall order, but it’s hard to deny the advantages that knowing several languages confers.
It sounds cynical, but one of the benefits of knowing several languages is that it can make you extremely marketable. Knowing Python and JavaScript and PHP not only gives you a larger pool of potential jobs to apply to, but it also looks great on a résumé (as long as you can back it up!).
And, of course, there’s another obvious benefit––you’ll have another language to choose from when you’re solving a new problem. But more than that, you’ll start to understand why you should choose one language or another.
You might learn, for example, that Erlang strings are fundamentally lists of integers under the hood, and that maybe you should turn to Python instead for your natural language processing needs, and likewise that you’d probably best turn to JavaScript for your HTML/DOM controlling needs.
Learning new languages might sound like too much of a commitment for you at the moment. In this case, you should apply yourself to another critical skill for the unstoppable programmer: getting well acquainted with your tools.
Learn Your Tools
Now, there’s no need to ignite the age-old Vim vs. text editor debate here (or heaven forbid the Vim vs. Emacs debate). Let’s instead stick to the general advice that you should learn to use your tools to the best of your ability.
Your editor, yes, is one of those tools, and there are compelling arguments to be made for learning vi or Emacs in one of their various forms, even if you one day go back to your comfy text editor.
Even if you don’t choose to go that route, however, that’s no excuse for not knowing everything about it. Learn the keyboard shortcuts, learn how to install add-on packages, find a linter you like, and for goodness’ sake, if your editor can do breakpoints (and they pretty much all can), use them!
And don’t just focus on your editor, either. Learn all the flags for your most-used command-line utilities, understand your shell of choice (and think about learning to script with it), and make sure you always read the manual
Learning to use your tools not only makes you look like a wizard to the uninitiated, but it also ups your productivity in a noticeable way.
Specialize
Okay, we’re still trying not to inflame any internet feuds, but this has to be said: Full stack developers don’t truly exist.
Now, before the pitchforks come out, it’s not that a developer can’t learn all the things required to build and manage a successful piece of software.
Rather, it’s that no full stack developer can do all of those things with equal ability. In any team of full stack developers, there might be someone who prefers managing the infrastructure and security concerns, or someone who likes fiddling with front-end stuff, and so on.
Specializing just means picking one of these preferred areas of expertise and diving in even deeper by adding skills that complement your expertise. Obviously, you’re not going to forget all the other full stack skills, and there’s no better way to impress employers and colleagues alike than with extensive knowledge of an area you’re passionate about.
That is to say, you can definitely be a successful jack of all trades, but make sure you’re a master of some instead of none.
Keep It Up!
That’s all there is to it! Do all of the above things and nothing else, and you’ll be an unstoppable programmer, guaranteed.
No, obviously that’s a joke. There are many different ways to become a better programmer and it would be impossible to list them all in a single article. If none of these tips resonate with you, find some other way to sharpen your skills. The important part is that you keep trying.
Lots of programmers find themselves with a case of impostor syndrome, thinking they need to be the best programmer on earth before they have any confidence in their skills. Ironically, dispelling this myth for yourself is a critical step toward becoming a truly unstoppable programmer.
Beginner or expert, as long as you put in the effort to learn more every day, you’ll find yourself with so much momentum, you won’t be able to be anything but unstoppable.