Exploring Existence

How To Use Exercism To Learn Programming Languages

Want to learn a new programming language, but don't know where to start? Exercism might be what you've been looking for...

Exercism Simplifies Learning a Programming Language

What is the last programming language you learned?

Learning a new programming language is a great way to expand your horizons and improve your skills as a developer. In the Pragmatic Programmer they even recommend you learn a new one each year! The important questions here are:

How did you go about learning it?

Did your learning feel effective?

If you want to learn a new programming language, you just want to get started, and get learning. You want a quick way to start practicing. Wrapping your head around the new language is challenging enough by itself!

I used to learn a new language by going online, reading about the basics of a language, and then start doing code katas. Recently I have found a much nicer way, using Exercism.

Exercism is a fun learning platform with some nice tricks up its sleeves. It excels at guiding you through mastering programming languages, but more on that later. Let's see what Exercism is all about.

How Exercism Works

Exercism is a free, and open source learning platform for Software Development. The idea behind it is to make mastering programming fun, and accessible to anyone.

To use Exercism you first need to create an account, after which you can embark on your learning journey (pun intended, you'll see). You start by enrolling in one of their language tracks, of which there are a staggering 57 at this time of writing!

exercism-dash

Exercism offers a lot of learning tracks

Once enrolled, you can select a track and start learning. Tracks start with the obligatory "Hello World", after which a few basic exercises are available. This progression continues: each assignment you complete "unlocks" new ones, like levels in a game.

There are two ways you can work on assignments:

  1. In the Web Editor, or
  2. Locally using the Exercism CLI

Exercises usually come with a short explanation, a file to put your code in (with comments), and some tests to see if your program is working. Once you're satisfied with your work you submit your solution.

After submitting your code, automated checks like tests, and formatting checks are executed. After receiving the all-green, the exercise can be completed, and you can compare your solution to those shared by others.

Besides pouring over the code of others, you can also request mentoring by a real-world volunteer. These mentors are well-versed in the language at hand. Not dissimilar to a code review, they will assess what you submitted and give you feedback on how you can improve.

That's how Exercism works, but what makes it so great for learning?

The Awesomeness That Is Exercism

Exercism is one of the best ways to learn programming languages in my opinion. It's major pro's are:

exercism-syllabus

Syllabuses structure your learning journey

Phew... What a list. As you can see, there is a lot to like about Exercism, but I do think it has a few downsides. Let's find out what those are.

Exercism's Drawbacks

As amazing as it is, there are downsides to using Exercism. To name a few:

exercism-journey

Exercism alone does not improve your craftsmanship

These downsides can be easily mitigated, by also doing code katas and breakable toys. These force you to dive more into the ecosystem of a language, require you to write your own tests and become a better software craftsman altogether. How's that for a great learning experience!

Wrapping Up

Exercism is an effective way to get your feet wet with a new programming language. It offers learning tracks for a ton of languages, and is a lot of fun to use!

The best way to use Exercism, is to use it for understanding language basics, and idioms. After that it is important to complement your learning journey with code katas and breakable toys. This way you will master a new programming language, and become a better software craftsman in no time!

#career #languages #tech