How To Be a Better Developer with Programming Challenges
Learn how to be a smarter and better developer with programming challenges! Here’s my advice on the top sites along with some tips and tricks. By Antonio Bello.
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more!
Create accountAlready a member of Kodeco? Sign in
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more!
Create accountAlready a member of Kodeco? Sign in
Contents
How To Be a Better Developer with Programming Challenges
25 mins
- Why Programming Challenges Work
- Muscle Memory
- Programming as a Muscle Memory
- How To Get Started with Programming Challenges
- HackerRank
- Math Fights
- TopCoder
- CodinGame
- CodeFights
- CodeEval
- Advent of Code
- Alternatives to Online Challenges
- Tips and Tricks
- Competition and You
- Take some Rest
- Where To Go From Here?
Advent of Code
There are two things that I really love about Advent of Code:
- Interface: it looks like an old, green phosphor monitor
- Challenge result: you don’t have to submit your code — you just write the solution
Rather than having an IDE, a list of available languages, complexity, Big O notation, and so forth, Advent of Code just asks you to provide an answer to a question.
How you find the solution does not matter. Nobody cares what language your work in or how efficient your algorithm is. Advent of Code offers complete freedom of choice.
Alternatives to Online Challenges
Challenges are fun and fulfilling but not the only way to keep your brain sharp. There are other ways to stimulate your brain! Here are some of the best:
- Hackathons: Sure, you’re solving problems, but you’re also fine-tuning your collaboration skills, which is vital for success. While you’re at it, you’ll probably also compete with your colleagues in subtle ways and pick up some new tricks. You might even find your next employer this way! A word of advice: they burn hot and fast and can be quite exhausting. I don’t recommend doing a hackathon every day — or week for that matter.
- StackOverflow: Real people are very creative when it’s time to solve real problems. Not only can you get help when you’re stuck, but you can help others when they’re stuck. By participating, you’ll learn a lot and increase your fluency with the language(s) of your choice.
- GitHub: What is there to say about this really? There’s just too much to discuss here in this review. To learn and challenge yourself, just pick a project and start coding.
Tips and Tricks
I’d like to wrap up with a few tips and tricks.
Competition and You
As you may have noticed, many of these programming challenge sites are competitive.
As humans, we’re naturally competitive. We compete on almost everything:
- Catching the eyes of a special somebody before your friend does
- Landing a job
- Sitting in the front seat of a car
- Having the TV remote
Competition often drives us to try harder than we would otherwise. This can be great when you’re trying to improve your coding skills.
But there are a few gotchas about competition I’d like to point out.
Competition is Not for Bragging
Competition is a tool to improve yourself, what you’re working on, and the people around you. It is not a way to prove you’re superior.
Having this attitude can cause significant problems in the workplace, as Sarah Mei notes:
So remember to stay focused on self-improvement, not superiority. As Swift team member Gemma Barlow said, “…friendly rivalry is always good as long as you’re striving to create a better product for your users”.
Competition has a Time and Place
Another thing to note is competition isn’t always the proper solution.
Unity team member Barbara Reichart said that she prefers the following:
- When learning new things, she prefers to use cooperative environments. This way, when you’re learning you can be in a low-risk environment and can take your time.
- When trying to become great at things you already know, she prefers competitive environments. This way, you can have a fire lit under you to drive you to the next level.
Finally, Gemma points out that competition isn’t for everyone. “It’s good to acknowledge that not all personality types thrive in a competitive environment, and there are other ways to keep your brain sharp.”
So remember – competition is a tool, and deploy it only when appropriate!
Take some Rest
These programming challenge sites can often be addicting, as I know from experience!
But be sure not to overdo it – your brain can only take in so much at a time. It’s better to be consistent and space it out.
Gemma put it well: “I would prefer to be getting some sunshine and resting my brain rather than continuing to stress it”.
That’s a good piece of advice. Don’t expect too much from your brain after you use it all day long. Would you expect your legs to run all day or your arms to do pushups nonstop?
Give it a break and let it relax, from time to time. Just don’t abuse it.
Where To Go From Here?
I hope that I’ve convinced you to give programming challenges a try!
Note there are more great places for programming challenges beyond what I’ve covered here. This article focused on those that I’ve used so that I could speak from experience.
I asked our readers what other sites they recommend, and they gave the following list:
Remember, although traditional learning and a challenging workplace are valuable tools, they’re not enough.
To be the best developer you can be, you want to build your muscle memory. You should look outside your comfort zone and work with unfamiliar tools and problems. That’s what programming challenges are all about!
I recommend you take a site mentioned in this article and give it a shot! Whatever you choose, what’s most important is that you do it regularly.
That’s it for now. If you have any questions, comments or suggestions, please join the discussion below!
raywenderlich.com tutorial team members:
raywenderlich.com readers:
I may not have quoted everybody, but trust me when I say that their input helped me a lot shaping and giving this article a direction!
- Foster Bass
- @MosquitoIce
- @herval
- Lê Trí
- Marius Horga
- James Hall
- Nick Mayfield
- Abhinandan
- Michal Ciurus
- Kuba Suder
raywenderlich.com tutorial team members:
raywenderlich.com readers:
- Foster Bass
- @MosquitoIce
- @herval
- Lê Trí
- Marius Horga
- James Hall
- Nick Mayfield
- Abhinandan
- Michal Ciurus
- Kuba Suder
I may not have quoted everybody, but trust me when I say that their input helped me a lot shaping and giving this article a direction!