
I code with AI every day, and I lean on it more and more. That is mostly great - I ship more and I try things I would not otherwise try. Alongside it I also like having one small, regular space where I still write code from scratch, by hand, just to stay in direct touch with the languages I use. Exercism is that space.
Exercism is a free, open-source, non-commercial coding practice platform. You pick a language track, solve small problems against a test suite, and - if you want - ask a volunteer mentor for a code review. It is run as a UK not-for-profit by Katrina Owen, Jeremy Walker and Erik Schierboom, and it is genuinely free forever - no paid tier, no upsell. The catalog is huge - 82 language tracks at the time of writing, thousands of exercises, and roughly two million users. What keeps me coming back though is not the scale. It is that solving a problem on Exercism feels like *thinking*, not like *prompting*.
I code with AI every day, and I lean on it more and more. Claude is in my terminal, my editor, my PR reviews, and most of the time that is exactly where I want it - I ship more, I refactor more bravely, I try more ideas. What I also want, next to all that, is a regular space where I still write code from scratch - where I pick the data structure, write the loop, choose the idiom - just to stay in direct contact with the languages I use. Exercism is that space for me. Twenty minutes, one small problem, just me, the editor, and the test suite. The AI part of my day is not going anywhere. This is the small complement to it.

Python is the language I reach for instinctively - scripts, automation, small data tasks, anything adjacent to ML. Because I know it well, it is the language where I most enjoy working through small problems by hand - the familiarity is the point, not the challenge. Practice-mode exercises - the ones that do not teach a specific concept but just pose a problem - are the sweet spot. Reverse a string without slicing tricks. Roman numerals. Leap year. Allergies as a bitmask. Run-length encoding. None of them are hard, and that is why they work - they fit in a coffee break and they give me a reason to pick the exact right standard-library tool, write it cleanly, and move on.
I touch JavaScript and TypeScript less than Python in day-to-day work, so on those tracks I use Exercism differently. It is less 'polish the fundamentals' and more 'stay fluent with the parts I would otherwise forget'. A little array manipulation, a little Promise chaining, a little generic gymnastics on the TypeScript side. Because I use these languages for front-end work where a framework usually does the heavy lifting, small exercises are one of the few places I actually write the language for its own sake. TypeScript exercises in particular are a nice reminder that the type system is a puzzle of its own - conditional types, mapped types, template literals - and sitting with a tricky error message for a couple of minutes is a good habit to keep in the mix.
Every track has a Syllabus - a tree of Concepts, each unlocking the next. Inside a track there are two kinds of exercises: Learning Exercises (concept-first, introduced by a short write-up) and Practice Exercises (just a problem plus tests). New tracks default to Learning Mode so you progress through the syllabus in order; you can switch to Practice Mode to unlock everything at once, which is what I do for languages I already know. You can solve exercises in the web editor or download them and solve locally with their CLI - I use the web editor for quick sessions and the CLI when I want to run the tests in my own environment. Submissions get automatic feedback from the track's analyzer (style, common anti-patterns), and optionally a human mentor will review your solution and suggest idiomatic improvements.

The automated analyzer catches style issues. The human mentor catches thinking issues. A solution passes its tests, looks fine to you, and then someone who has written idiomatic Python for a decade comments 'this is a dict.get default - you do not need the if/else.' You cannot really buy that feedback anywhere else. It is not code review for production - it is review for *how you think about the problem*, which is a different kind of feedback than what a test suite or a linter gives you. Volunteer mentors are reviewing asynchronously and for free, so the response time varies, but when a review lands it is usually the most useful five minutes of my week.
I do not sit down for hour-long sessions. The whole point is that it is short enough to be frictionless. One or two problems before I start real work a few days a week, maybe a slightly harder one on a weekend. For these specific sessions I keep the AI closed - not as a rule about coding in general, just a small rule about *this* practice time. If I get stuck for more than ten minutes I close the tab and come back tomorrow; sitting with the problem a bit is part of the value. I read at least a couple of community solutions after each one, and if something is a genuine unknown I read the relevant Concept page - not the docs, not a blog, the track's own Concept write-up, which is usually tight and example-driven.
The concrete gains are small individually and real in aggregate. I reach for the right standard-library function faster. I catch my own non-idiomatic patterns as I type them. I write tests with more specificity because Exercism trains you on what a good test shape looks like. And when I am back in my normal AI-assisted flow, I can read a suggestion and make a better call about whether to take it as-is or tweak it, because I recently wrote something similar with my own hands. It makes me a better partner to the assistant, not a replacement for one.
If you are brand new to programming, Exercism has a beginner course called Jiki, but honestly - a full course like Odin or CS50 is probably a better on-ramp. Exercism shines once you already know a language well enough to have opinions. It is for the mid-level-and-up developer who wants to stay sharp, the polyglot trying a new language in the '12 in 23'-style challenge, or - like me - the daily AI user who wants a regular deliberate-practice habit. It is not a replacement for building real things. It is the gym, not the job.
Exercism is one of the few things on the internet that is straightforwardly good. Free, open-source, run by people who care, backed by a huge community of mentors giving their time for nothing. I use it as the small hand-coded companion to an otherwise very AI-assisted workflow - Python mostly, with JS and TS as secondary tracks to stay fluent in the front-end languages I would otherwise only see through a framework. Fifteen minutes a day, one small problem at a time. That is the whole practice. If you code with an assistant all day and just want a quiet space where you still write things from scratch, this is the simplest, cheapest way I have found to keep that habit in the mix.