Skip to content

Need some problems to solve?

💻 Online resources

These sites provide challenging and fun coding problems:

  • Advent of Code - Annual programming puzzles for all skill levels.

  • LeetCode - Extensive collection of coding problems for interviews and practice.

  • HackerRank - Challenges in algorithms, data structures, and more.

  • Codewars - Solve kata (challenges) and improve your ranking.

  • Exercism - Practice coding exercises with mentor feedback.

  • Project Euler - Mathematical and computational problem solving.

  • Edabit - Bite-sized coding challenges for beginners and beyond.

There are more! Ask your favorite search engine or AI for websites that provide coding challenges.

❓ Why do this?

When you are learning a new language or working with a new tech stack, you need problems to solve. Some problem, to which, you can apply the technology and your understanding - this creates practical and active learning.

Some sites provide extensive tutorials. For me, I will learn something from being spoon fed (walked through) building some illustrative example project. However, I will more from being given a problem to solve and then going to work to build a functional solution. This active learning process forces me to ask and answer meaningful questions and learn more than just the lesson material the tutorial author created:

  • How do I start a new project using this tech stack?
  • How should the project be structured?
  • Where are the docs? How good are they?
  • How do I build the project?
  • What artifacts are created?
  • How do I deploy the project?

I start (and abandon!) new projects all the time. Repeating this active problem solving / project creation process over and over creates muscle memory. You'll begin to see patterns emerge in your processes. You'll find tools and resources you love ❣️ and some you loath 😡. When your goal is learning, every project doesn't need to be a complete and polished deliverable. Go as far as you need to satisfy what you want to learn, then stop. If you make it a habit of checking your code into code repositories, you can always come back to where you left off and go further to continue learning.


Explore these resources to practice, learn, and compete (if you're into that)!