I have been enjoying Exercism.io, and I wanted to share the fun with you. The site’s name is a playful take on the term code exercises. I think the designers of Exercism got a lot of things right.

The authors made the site easy to use. Exercism has two components: its web site, and a command-line client. For anyone who uses a version control tool like Git, the interface should seem familiar. The command-line client allows you to submit solutions as well as fetch new exercises.

Although there doesn’t appear to be a strict progression, later exercises are certainly more challenging than early ones. Each exercise can be solved by writing a method or two, so I normally complete one or two during a lunch break. Many would be suitable as an interview exercise.

The web site is where the site really shines. The thing I love the most about Exercism is its code review capability. When you upload a solution to an exercise, you are given a URL to your submission. Here, you can see your code as well as a comments section. There’s a notification feature that encourages code reviews in the top navigation by showing you recent submissions by other people. To update your code, you simply submit a new copy and the site displays it in a new tab on your submission page.

What sets Exercism apart from other implementations is its community. I’ve submitted around fifty solutions thus far. I’m happy to say that about a quarter of them have received comments, and all of those people had constructive things to say. Most people will ask leading questions on this site, encouraging the submitter to do some thinking or research. There was one gentleman who reviewed one of my solutions multiple times, each time pointing out a new enhancement to the algorithm. I profusely thanked him for his time.

In my experience, a code review is perhaps the most effective way of improving your technique, aside from pair programming. After all, pair programming could be described as a real-time, continuous code review.

If you are looking for a way to keep your programming skills sharp, take a look at Exercism.io.