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.

Leave a rating/review
Save for later
Share

If you’ve ever tried a programming challenge, then you know they are fun and addicting.

But they’re more than just fun – they also help you become a better developer.

Over the past few years, I’ve done hundreds of programming challenges. I’ve noticed the regular practice has made me a smarter, faster, and stronger developer.

In this article, I’ll explain how you can do the same:

  1. First, I’ll explain why programming challenges help you become a better developer.
  2. Next, I’ll recommend how you can get started with programming challenges.
  3. Finally, I’ll wrap up with some tips and tricks.

Get ready to get challenged!

Why Programming Challenges Work

To understand why programming challenges work, first you need to understand muscle memory.

Muscle Memory

Think back to when you were first learning how to drive. At first, it required your complete focus. You had to think about how fast you were going, worry when you were parking or merging into traffic, and so on. But now, you can drive while talking with someone and even singing your favorite song!

Driving while talking and singing

At first, performing an unfamiliar action takes focus. But if you practice enough, you can preform the action almost without thinking.

That’s muscle memory: knowing how to perform an action without conscious effort. And you can develop muscle memory for programming tasks too!

Programming as a Muscle Memory

Think back to when you first started programming on a new platform. It took a lot of effort at first, right? Often you needed to look up method names, read documentation, and so on.

But after a while, you developed muscle memory, and are now able to write code off the top of your head.

Muscle Memory

Consider a few other common programming tasks:

  • Creating a singleton
  • Using reduce to transform an array into a scalar
  • Handling errors and exceptions

When you first try these things, it can often be time consuming or confusing. But if you practice it enough, you will build a muscle memory with the solution.

At this point, you won’t need to think about how to solve the problem anymore. it will just become a normal routine when writing code.

This explains why programming challenges work. They give you opportunities to build muscle memory, via practice on common development challenges.

That way, the next time you need to solve a similar challenge, you’ll have a solution ready! This helps you be efficient and allows you to focus on larger problems, rather than the small details.

image-03-challenges

How To Get Started with Programming Challenges

Ready to start building some muscle memories? Luckily, there are some great sites out there offering programming challenges.

Here’s what I consider the best. I recommend you pick one that sounds interesting and give it a shot!

Note: These are not listed in any particular order.

HackerRank

HackerRank

HackerRank, formerly known as Interview Street, is a platform offering coding challenges, usually in the form of algorithms to implement. I love its slogan: “Your most productive distraction“.

On HackerRank, you’ll find:

  • Domains: A selection of problems to solve, categorized by type (algorithms, mathematic, AI, and more) or language.
  • Contests: Time-limited challenges where you’re challenged by a set of problems grouped by a common subject that must be solved within a predefined timeframe.
  • Rank & leaderboard statistics: See how you’re progressing compared to others and which achievements you’ve earned. A nice feature in the leaderboard is the ranking, grouped by complexity level (O(1), O(logn), O(n), and so forth), which helps with figuring out the average complexity of each user’s solutions.

Big O notation: What is it? It measures the complexity of an algorithm, and it’s used to figure out the expected processing time depending from the problem size.

It usually makes sense when the algorithm performs one or more loops, where the number of iterations is in strict relation with the input size.

For more details, check out our Collection Data Structures in Swift article.

Employers use time-limited challenges on HackerRank to evaluate potential candidates’ programming skills and problem-solving abilities with any of its available languages.

Note that employers can choose to reduce the list of available languages — I presume that a company looking for an Android developer wouldn’t be interested in a candidate who excels in Swift development. Well, at least not today. Tomorrow, who knows? :]

I recently participated in a screening process after getting an invite from Amazon — yes, that Amazon. :] The coding experience was pretty good and the available time was reasonable; I finished it in 1:58, just two minutes shy of the two-hour time limit.

Although the environment includes a web-based editor where you can write code and test, I always prefer a local, desktop-class IDE. In this case, I opted for CodeRunner, a coding editor that supports several languages and capable of compiling and running directly from the IDE.

To some extent, it’s similar to Swift playgrounds. The list of available languages and environments is pretty long — 45 in total — which includes new, old, OO, functional, imperative, shell, DB, and so forth. Just to name a few:

  • Swift
  • Objective-C
  • Pascal
  • Cobol
  • C#
  • F#
  • Haskell
  • Go
  • OCaml
  • R

Math Fights

MathFights

Among all the services reviewed in this article, MathFights is the only one where you don’t code. Actually, it’s not even about programming. As its name suggests, it’s about math challenges that are usually served as 1:1 fights.

Why mathematics? Well, this article is about keeping your brain sharp, and solving math problems does that. Practicing mathematics gives your brain elasticity.

Moreover, you use math daily as a developer, so being able to do calculations quickly can help in your daily life.

How it Works

You start a fight with a click of a button, then you’re matched with a random opponent and the fight begins!

You and your opponent are presented with one question at a time along with a list of potential answers. Your challenge is to determine the correct answer in the shortest possible time, staying within the predefined time limit.

Each question has a winner and loser; the winner is whomever chooses the right answer in the least amount of time. For each round, you and your opponent get a score. At the end of the fight, the player with the highest total score wins.

Pro tip: Keep some paper, a pencil and maybe a calculator nearby because you will have to calculate.

Math problems come in different shades of complexity, so MathFights uses divisions to group questions by difficulty. Division 1 hosts the simplest problems and is where you start. After a certain number of wins, you’re promoted to the next division. Look out: you’ll get a downgrade if you lose too many fights.

You can also create public or private tournaments, which is very handy when you and some friends want to engage in some friendly, intelligent competition.

Lastly, there’s a practice section where you can just solve problems without the pressure of a real opponent. It’s just you against yourself and a clock.

In my personal opinion, MathFights is undeniably addictive and remarkably useful. I used to spend a lot of time on it. One day I realized that it was becoming a distraction, so I decided to stop. This was after reaching division 7. Incidentally, I don’t know that I could have progressed much further. Staying there without getting a downgrade was pretty hard.