# Exercism

---
# Agenda
* What is Exercism?
* Exercism as a student
* Exercism as a mentor
* The Future :rocket:
* Q&A
---
# What is Exercism?
---

---
Open source project found at [exercism.io](https://exercism.io)
A platform where one can learn or refine their fluency in programming languages;
This is done via a series of programming exercises, which can be mentored and reviewed by volunteers.
---
_"Exercism aims to provide opportunity for people of all backgrounds by helping them develop their programming skills through practice and mentorship. We provide thousands of exercises spread across over 50 language tracks, and offer both automated and human mentoring."_
Source: [Values](https://exercism.io/values)
---
[The team behind Exercism](https://exercism.io/team/staff)
---
My experience:
- Started using the platform in 2019
- Used it initially to learn Go
- Currently mentoring others on Go and Python exercise tracks
- Helping with v3
- Learning Javascript
- Will use to learn Typescript, Rust, C and maybe Assembly :sweat_smile:
---
# Exercism as a student
[Student tracks](https://exercism.io/my/tracks)
---
- Downloading an exercise with CLI
- Exercise problem spec + tests
- Gamified progression in Core track
- Practice exercises (with community solutions)
- Mentors comment on different iterations
- Need approval to move to next exercise on core track
---
Pros:
* Amazing for gaining fluency in programming language
* Encourages students to follow TDD approach
* Getting code reviews
* Core track gradually increases in difficulty
* Language concepts + features are introduced step by step for students to learn and play with
---
Cons:
* Inconsistent response time when submitting a new solution
* Tests are already written for the student
* Sometimes weird imbalance of difficulty between exercises
* No possibility to code in-browser
---
# Exercism as a mentor
[Mentor dashboard](https://exercism.io/mentor/dashboard/your_solutions)
---
- Queues
- Mentoring notes
- Automated Analyzer
- Slack community
---
Pros:
* Learn language features deeply by explaining them to others
* Really step up code review and people skills
* Very open and helpful community
* People (connecting/networking with)
---
Cons:
* Can become boring to review similar solutions over and over again
* Time consuming, expecially for harder exercises
* People (dealing with)
---
# Future
[v3 features](https://github.com/exercism/v3/blob/master/docs/features-of-v3.md)
---
[Concept exercises](https://github.com/exercism/v3/blob/master/docs/rationale-for-v3.md#concept-exercises)
- Smaller, self contained exercises teaching language-specific concept
- Not blocked by waiting for reviews
- Exercises with specific goals in mind
- Automated reviews
---
[Practice exercises](https://github.com/exercism/v3/blob/master/docs/rationale-for-v3.md#practice-exercises)
- Story based
- Practicing the concept learned
- Community solutions
- List of approaches
- Mentoring
---
[Representers](https://github.com/exercism/exercism/issues/5079/)
- Creating generalised representations from the syntax tree of a submission, in order for us to later match similar code. Representers are pretty straight-forward to build.
---
[Analyzers](https://github.com/exercism/automated-analysis)
- Using syntax analysis to work out the correct feedback to give. Analyzers are pretty complex and challenging endeavours.
---
We need help!
- Mentoring on current version tracks
- Coming up with concept exercises
- Work on Representers + Analyzers
---
# Useful links
[Exercism](exercism.io)
[4 ways exercism sucks](https://www.youtube.com/watch?v=5Cj1Dr9m3GM&t=431s)
[Roadmap](https://exercism.io/roadmap)
[v3 features](https://github.com/exercism/v3/blob/master/docs/features-of-v3.md)
---
# Questions?
---
# Thank you!
{"metaMigratedAt":"2023-06-14T22:03:19.748Z","metaMigratedFrom":"YAML","title":"Exercism","breaks":true,"slideOptions":"{\"transition\":\"slide\"}","contributors":"[{\"id\":\"f7d5c28d-2ad8-4fb0-a3a1-cebdc1d99279\",\"add\":9965,\"del\":6221}]"}