Want to help people learn programming languages?
Tags: hacktoberfest, contributorswanted, exercism
Published: 2019-09-26 02:19:15

[Exercism][web-exercism] is an online platform designed to help you improve your coding skills through practice and mentorship. It currently provides _over 50 language tracks_.

[Exercism][web-exercism] provides you with thousands of exercises spread across numerous language tracks. Once you start a language track you are presented with a core set of exercises to complete. Each one is a fun and interesting challenge designed to teach you a little more about the features of a language.

At the moment of writing, I'm a maintainer of the [JavaScript][web-track-javascript] and [TypeScript][web-track-typescript] track and [a while back][blog-ams] we've started working on automating a part of the experience. 

{%link https://dev.to/xpbytes/writing-a-code-analyzer-in-typescript-5ec3 %}

The post above talks extensively about how to write an analyzer and what went into this work.

As part of **Hacktoberfest**, I have updated the [`javascript-analyzer`][contributing-javascript-analyzer] and [`javascript`-track][contributing-javascript] contributing guidelines. Other maintainers have done the same for their repositories.

# What can you work on

Because there are so many projects running at [Exercism][web-exercism], there is also a lot you can work on. Here is a short list of the things I find the most interesting.

I'm super biased, but with 160 repositories, and at least 90 active in the past month, there is plenty for anyone and everyone. 

## Help out your favourite language

Given that we have over 50 _language_ tracks, your favourite language is possibly one of them. Many of them have open issues, and _all_ of them allow for _new exercises_ to be ported from other tracks. 

{% github https://github.com/exercism/javascript/issues/660 %}

## Write an analyzer, or help improving one

There are currently **17** (or more) analyzers! This means that there are many tracks _without_ any analyzer infrastructure. If you know a language well, you can help out with that. However, I would love your help on the [`javascript-analyzer`][contributing-javascript-analyzer] or [`typescript-analyzer`][contributing-typescript-analyzer]. 

- Write a complete new analyzer for an existing exercise. We will provide 500 `fixtures` and what _should_ be approved and what shouldn't. We'll help writing some initial messaging, you don't need to worry about that.
- Help improving an existing analyzer. The coming week, more issues will be opened to indicate where improvement is required!

{% github https://github.com/exercism/javascript-analyzer/issues/56 %}

{% github https://github.com/exercism/javascript-analyzer/issues/55 %}

{% github https://github.com/exercism/javascript-analyzer/issues/53 %}

## Join the mentors

Naturally, we are always looking for new mentors. You don't need to be an _expert_ in your language, but we'd love it if you have extensive experience. You'll be _coaching_ people on their journey to gain fluency. We also have a `#mentor-the-mentor` program, to help you get better at mentoring.

## Join the students!

Know how to program in Java, but always wanted to learn Rust? Or maybe you finally make that step knowing TypeScript? Some tracks are currently _oversubscribed_, but in general we welcome anyone to become a student. Note: this is _not_ a platform to _teach you how to code_. It's a platform to _gain fluency in a **new** language_.

[web-exercism]: https://exercism.io
[web-track-javascript]: https://exercism.io/tracks/javascript
[web-track-typescript]: https://exercism.io/tracks/typescript
[blog-ams]: https://exercism.io/blog/track-anatomy-project
[contributing-typescript-analyzer]: https://github.com/exercism/typescript-analyzer/blob/master/CONTRIBUTING.md
[contributing-javascript-analyzer]: https://github.com/exercism/javascript-analyzer/blob/master/CONTRIBUTING.md
[contributing-javascript]: https://github.com/exercism/javascript/blob/17ed7e7487fd2a6f243b9bd304797e99dc4f0fa2/CONTRIBUTING.md