Beta

The devil is in the details

Why GitHub?

Deep Practice

Deliberately focus on improving your skills.

Gain a deep understanding of the fundamentals of your craft.

Experiment in a place where bugs don't inconvenience anyone.

Crowdsourced Mentorship

Practice providing useful critique.

Discuss code in both subjective and objective terms.

Strengthen your problem-solving skills by guiding others through the process.


Practice

Focus on expressive, readable code.

Work in your local development environment using your usual tools in multiple languages. We give you a test suite, and you make the tests pass... but that's just the first step.

Communicate

The code is a conversation starter.

Have a thoughtful discussion with your peers about the choices that you made. Take this opportunity to explore idioms, style, and trade-offs. There's no right answer, and many good questions.

Pay it Forward

Explore other people's solutions.

Articulate what you like and dislike in other people's code. Have a thoughtful, nuanced discussion, deepening your own understanding of the design choices that you make every day.

Better code through conversations.

Thousands of conversations are happening on exercism. Here's one of them.

You start with some code. Talk about it a little. Rewrite the code a bit, then post the new version. Make it better. After a few cycles you've got improved code, and perhaps even a new friend!

Try it.

You don't need to log in to check out the problems.

Download the command line client, and extract it.

The binary is named exercism. Fetch the first exercise available for each language:

$ ./exercism demo

If you want to submit the exercise you'll need to log in with your GitHub account and grab the API key from the account page.

$ ./exercism configure --key=YOUR_API_KEY

Browse the Code

The project is open source, and all the code as well as the exercises are available on GitHub.

Browse through the various language tracks, or the code for the CLI. If you have a strong stomach, check out the code for this prototype.

For a quick-and-dirty overview of which languages and problems are available, we've got a synopsis. You'll notice that some languages have more exercises than others. If you'd like to help remedy that, or if you'd like to contribute exercises in a new language, check out the contributing guide.

If you're not into the whole code review thing and just want to work through small programming problems, then you don't need the CLI. Just clone the language track that you're interested in and work through the problems locally.