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!
[caption id="attachment_55587" align="alignnone" width="1024"] Exercism offers a lot of learning tracks[/caption]
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:
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:
- Syllabuses with supporting exercises offer a logical progression of core language concepts, which are introduced in a piecemeal manner.
- Gamification makes learning fun. Unlocking harder exercises, earning reputation and badges, and seeing your learning journey unfold makes using Exercism an enjoyable experience.
- Fun exercises make for puzzles that you can't resist. Best of all, you don't have to search around the internet to find them (unlike with code kata's). They're all available in the platform, and you can even contribute new ones!
- Compare solutions easily. Want to know if there is a different, or better way to solve an exercise? Reflect on what others did! It's built right into the platform.
- Practice reading code by looking at what others did. Code reading is a crucial, often overlooked skill. One reason for this is that its hard to get started. Exercism makes it easy, because you know the context of the code, and you don't have to scour the internet for code of others.
- Be mentored by real-world, and skillful people. Finding someone who can teach you to solve solutions in an idiomatic way, who provides tailor-made feedback can give your learning journey a boost. Best of all, Exercism has this facility built in!
- Mentor others deepening knowledge about a language you are proficient at, and grow your teaching skills. A great way to give back to the community, and a win-win for both you and the mentee.
- Strengthen your resume by showing off your solutions, languages you're working with, and reputation you earned. These can all easily be shared with a public profile.
- Great tools like the web editor and cli make working Exercism friction-free, allowing you to focus on your learning journey.
[caption id="attachment_55589" align="alignnone" width="1024"] Syllabuses structure your learning journey[/caption]
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:
- Varying level of language support. More popular languages, like Python or Go, Exercism has better platform support, and a more in-depth learning journey. Whereas a language like Scala has a learning track that's stripped down to the very core: exercises and the community. It pays off to see what level of support is offered for the language of your interest.
- Test code is supplied. If all you're trying to do is learn to program in a new language that's fine, but if you want to become a better programmer, writing tests is a crucial skill to master. Exercism is not well suited for that purpose.
- Ecosystem / tooling knowledge are not mandatory. As Exercism offers tooling for the popular languages, that saves you from having to learn about them. That's great starting out, but eventually that too should be part of learning a new language.
- Helps learn languages, not craftsmanship. Exercism's focus is on learning languages, not necessarily on writing better software. Realize that learning a language does not make you a good programmer. As the saying goes: the ability to speak English does not make you a great writer.
[caption id="attachment_55588" align="alignnone" width="1024"] Exercism alone does not improve your craftsmanship[/caption]
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!
What do you think about Exercism? What language will you learn using it? Let us know in the comment section!