Exercism というプログラミング学習サイトをご存じでしょうか?

https://exercism.org/

プログラミング学習サイトの特徴として、進捗を進めるにあたり、「コードを書いて正誤判定を行う」というのがあります。
この特徴だけでいうと、競技プログラミングサイトも当てはまります。

Exercism もコードを書いて正誤判定を行うところは同じですが、
他のサイトと一味違うところは、正誤判定を行うテストケースがユニットテストのファイルとして用意されている点です。

標準出力にアウトプットしたものを正誤判定するようなサイトであれば、
正解が 1 のときに数値型の 1 でも文字列型の “1” でも、その他独自に定義した型の 1 でも、
とにかく 1 がアウトプットされていれば正解になりますが、ユニットテストの場合、
(言語にもよりますが)基本的には関数名・引数・返り値が型を含めて厳密に定義されるため、
型が間違っていればテストが通らず不正解となってしまいます。

テスト駆動開発のような側面も見られ、仕組みとして非常に興味深いものであると言えますが、
その反面、デメリットもあります。

それは、テストケースがあらかじめ見えているため、
テストケースの数だけ if 文なり何なり記述することでもテストを通せるという点です。
テストを通すことが目的になってしまっては、プログラミングの上達にはつながりません。

しかし、Exercism にはそのデメリットをカバーするメンター制度のようなものが存在します。
書いたコードをメンターに添削してもらい、OK が出たら次の問題に進めるというような方法です。
答えを直接教えてもらうわけではなく、ヒントを与えてもらい、何度かメンターとやり取りしながらコードを推敲していきます。
答えが合っていれば必ず OK が出るというわけでもなく、より良いコードを書くためのアプローチをしてくださるメンターもいます。

非常に魅力的な機能でありながら、このメンター制度は無料です。
有志で集まったメンターの方々が学習者のコードを添削します。
もちろん、自己学習モードとメンター学習モードは好きなタイミングで切り替えることが可能です。

海外のサイトなので、全部英語ですが、英語さえ読めれば無料サービスの中ではかなり画期的なものかと思います。
エンジニア新人の方が基本的な文法を学習した後、知識を定着させるうえで有効なツールであるとも思います。