I began "learning to code" in 2014, where by "learning to code", I mean moving away from Stata (a proprietary statistical programming language) and into d3.js, JavaScript more generally, and, finally, glorious Python. You can read the whole journey here.

Anyway, back in 2014, I found a number of fun, puzzle-driven coding practice websites. Among these were:

Since getting off the ground with the basics, I've periodically returned to these - mostly LeetCode - but never for very long stretches. I just spent some time working through Exercism though and (a) it's changed a lot, (b) in a really good way.

Why is it so nice?

I'm really enjoying it! It's so nice! There's a bunch of nice... nicenesses about it.

  1. First, the aesthetic is inclusive and diverse. They make a point of showing a wide range of humans coding.
  2. The command line interface is lightweight and friendly. You can easily download puzzles and submit solutions.
  3. There are numerous language tracks available. I've signed up for Python, Clojure (good ol' Clojure), Go, and bash.
  4. The puzzles emphasize teaching the language and its idioms, rather than grinding CTCI-style riddles. I still think HackerRank and LeetCode might be quite good places to grind your understanding of algorithms and data structures (and thus high-level coding interviews), but Exercism is more about becoming a master craftsperson for its own sake. You get to know the language in a lower-pressure, friendly way.
  5. The CLI, interacted with the different languages you'd like to learn (e.g. Clojure), means you can set up your own local environment (figuring out both how to do it, and what you like).
  6. You see the tests. This is not the case with LeetCode, iirc, which hides the tests but lets you "unlock" different test cases for \($\). Oof. Exercism is free and you can, well, teach yourself to the test. This has been a nice way for me to think about edge cases ("oh yeah, good point, test file") and address them.
  7. After submitting your solution, you can seek a "Mentor's" advice (I haven't done this yet) and/or peruse other people's solutions (I have done this). I've really enjoyed the latter because often you learn a nice idiomatic way to do something.
  8. The "easy" puzzles are bite-sized snacks, good for when you're waiting for a meeting to start...

Overall, highly recommend!

Great job, Exercism community!