A New Way to Level Up?
I was intrigued. I have always loved small, easily finishable exercises that allowed me to think about things OTHER than the exercise itself. I tried a few and quickly became hooked.
But the thing that really surprised me was not just how hooked I was on leveling up on the exercises, but how hooked I was on reading other people’s code and providing feedback on it. It was fascinating to see how many different ways someone else solved the same little problem. Little differences like naming to big differences like Functional vs. OO approaches to problems become easy to evaluate. It also becomes clear where certain solutions shine and where they don’t.
Room for improvement
There are a few little things that it struggles with. This is not meant as a tear down, but rather as a recognition of the limitations of the system and ways it could improve.
It’s easy for the “one true solution” to be cargo culted down. Instead of giving feedback and trying to nudge their solution toward something slightly better, it’s much easier to just try to nudge them toward your solution. There isn’t a great way around this, it seems, since you’re talking about how people work by default.
There’s also the feedback problem. You can give feedback to anyone who has submitted an exercise you’ve already had approved, which means that as you progress, there are fewer and fewer people evaluating your exercise. The point is the feedback more than the solution, so little feedback causes you to disengage from the site over time. This is solvable by getting the experts to focus first on the latest exercises and getting more experts involved overall. It’s still hard, though.
Finally, as the UI expands, it is becoming clear that it’s hard to do UI for programmers. They all want to look at data 1000 different ways but UI is about compromise and saying no most of the time. This is a piddly detail, though in the grand scheme of things.
But filling a void
But it is great at what it does.
- It gives you direct, real experience on programming languages (that you may or may not know yet) with experts looking at and evaluating your solution.
- It gives you the ability to look at and evaluate other people’s code. This makes you more open and better at solving problems
- It gets you thinking about refactoring in a much bigger way. Refactoring in the small leads to refactoring in the large, though it’s still a hard transition.
I am very impressed with the niche that it does fill already. I hope some of the kinks get ironed out and that Exercism is around in a few years as the de facto way to learn a new language, level up in a language you already know, or help newbies out. Can’t wait to see how it pans out.