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.
Practice providing useful critique.
Discuss code in both subjective and objective terms.
Strengthen your problem-solving skills by guiding others through the process.
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.
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.
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.
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!
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
The project is open source, and all the code as well as the exercises are available on GitHub.
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.