A few months ago I stumbled across an interesting open source project created by
Katrina Owen called
exercism.io that provides a collection of programming practice problems in
over 30 languages. On the surface, it’s a great resource for learning to code or learning a new language. I’ve found however that as you dig deeper it has much more to offer on a number of levels.
To get started you simply install the exercism command line client, login with GitHub, pick a language to work in, and fetch your first problem. The first problem in many languages is often just a simple “hello world” exercise just to get you started. When you fetch a problem you get a ReadMe file with a description of the challenge and a suite of unit tests. In TDD style you write code until the tests are passing and you’ve solved the problem. Afterwards, you submit your solution and other exercism users are able to review and comment on your code. You can carry on the conversation and submit additional revisions of your code as part of this informal peer code review.
This immediately reminded me of
Art & Logic’s own programming challenge (ALPC for short) which everyone completes as part of the application process. ALPC submissions are reviewed by a team of developers here at A&L and are discussed during the interview process. It’s been a staple of the A&L hiring process for a long time and has served us well. I’m a part of the team that reviews ALPC submissions and it’s interesting to see how people approach the problems presented in new and unique ways, and rewarding to then get to work with the people who’ve submitted the best responses.
What’s great about exercism is that it’s not just a single set of problems to solve, there’s a huge number of them with more being developed all the time, and you can compare solutions to the same problem in a huge number of languages. Often problems offer a solution that is available to those learning the language, but can also been solved in more elegant or subtle ways which through comparing and discussing your solutions with others, offers an excellent learning opportunity. While comparing solutions, you can post feedback and can resubmit your solutions with changes in an informal peer code review process.
Katrina writes an email
newsletter, which is a behind the scenes look as to how the project is evolving, what’s working, what’s not, and how you can contribute. The community has worked hard to set the bar low for making your own first contribution and in a very meta way, is also a great way to learn how to get involved with open source projects and communities. It’s setup so that no matter what your experience, there’s something you can help with – from documentation, to the project website, the command line client, languages, or projects. I’ve started looking at the set of open issues for the Objective-c language track along with the set of problems that haven’t been ported to it and am looking to set aside some time to make some contributions of my own.
Whether you’re learning to code, looking to learn a new language, or want to contribute to an open source project with a great mission, do yourself a favor and check out the
excercism.io site today and
subscribe to their email newsletter.