42 Tokyo とピア・ラーニング

Ryohei Tsuda
8 min readFeb 29, 2020

--

セグフォ職人の朝は早い

…The kinds of work where you win by hacking bad tests will be starved of talent, and the kinds where you win by doing good work will see an influx of the most ambitious people. And as hacking bad tests shrinks in importance, education will evolve to stop training us to do it. Imagine what the world could look like if that happened…

The Lesson To Unlearn — Paul Graham

将来的に42 Tokyoの受験を検討している人向けに、私が受けた2020年2月度の入学試験(Piscine)で自分自身に起きた変化とピア・ラーニングについて書き残すことにした。

42 Tokyo について詳しくは下記の公式サイトを参照してほしい。

はじめに

42 Tokyo はある種のプログラミングスクールで、特徴としては「教師がいない、生徒同士のピア・ラーニング」「学費が無料」「24時間営業」の3つが挙げられる。入学するにはオンラインテストと「Piscine(フランス語で『プール』の意)」と呼ばれる4週間の試験を通過しなければならない。

Piscine は高度なゲーミフィケーションが 施されており、その「進め方」まで含めて試験の一貫とも言える。一部の受験生からは某有名マンガに擬えて「ハンター試験」と呼ばれていた。何をやるか分かってしまうと「楽しみ」が大幅に減ってしまうので、 Piscine の内容を明かすことはできない。内容に関する質問に答えるつもりもない。

気になる人はぜひ「泳いで」みてほしい

before Piscine

私が 42 Tokyo を知ったきっかけは、2019年11月に Twitter で 42 を日本に誘致した DMM のプレスリリースを見たことだった。当時、前の会社を辞めてソフトウェアエンジニアに転職することにしたばかりだったので、これ幸いとすぐに応募してオンラインテストを受け、2月の Piscine に参加することにした。

会社を辞めた経緯やエンジニアになろうと考えた背景は下記の記事に書いた。

今まで JavaScript や Python で簡単な作業を自動化するプログラムを書いた経験はあったものの、 Google で検索した結果や公式ドキュメントのサンプルをコピペして手直しするレベルに過ぎず、今も会社で給料泥棒をしながらプログラミングの勉強をしている。

after Piscine

42 から出題される様々な課題を通じて、コンピュータの基礎やプログラムが動く仕組みを学ぶことができた。4週間フルコミットするとこれ程の効果があるのかと自分でも驚いている。C言語で喩えると、 printf 関数を使って Hello World を出力するレベルから、言語の機能やシステムコールを利用して自力で printf 関数を実装するためにはどうしたらいいかを調べてタスクを分割したり、自分で簡単な標準ライブラリ関数を再実装できるくらいのレベルにはなれたと思う。

また、独学ではなかなか気付きづらいようなエラーや例外処理の考え方、処理の方法についてもたくさんの Segmentation Fault や Bus Error を通じて学ぶことができた。

しかし、それら以上に自分の「学び方」に対する考え方に変化があった。42 では半強制的に他人のコードレビューをしたり自分のコードをレビューされる。例えばある課題をプログラムで解こうとするとき、

  • 課題をどのように理解したか
  • その理解に基づいてどのような解法を試みたか
  • どのような例外を考慮したか
  • 自信がない箇所

などを整理してレビュアーに説明することで、自分のプログラムに対する自分自身の理解促進に繋がる。また、これらを明確に説明することで、レビュアーからもアドバイスを提供しやすくなり、お互いの学びに貢献する。同じ問題でも様々な解き方がある。かくいう私も、レビュアーの人から入手した知識や情報がたくさんある。42 ではこのようなピア・ラーニングを加速する仕掛けが至るところに施されている。これが新たな知識の定着にとって非常に効率的な仕組みだと確信している。

42 のピア・ラーニングについては下記の記事が参考になると思う。

この記事を書いた人には Piscine 中(本当に色々な意味で…)お世話になった。

今後の方針

まずは、早く給料泥棒状態を脱してプログラムで生きていくお金を稼げるようになりたい。

コンピュータの動く仕組みに興味が湧いてきたので、趣味の時間でハードウェアに近い低水準のシステムプログラミングに使われる言語や OS の仕組みを勉強していきたい。また、アルゴリズムの勉強を兼ねて競技プログラミング(AtCoderとか)にも取り組んでいこうと考えている。

Piscine に向いている人

フルコミットを求められるので、時間に大きな余裕があり Piscine 最優先でスケジュールを組める人、そして肉体的・精神的に健康である人が向いている。自分の周りには大学生や大学院生、ほぼ一ヶ月の有給を取得している社会人が多かった。私は現職に無理を言ってかなり迷惑をかけつつほぼフルコミット状態で取り組んだ。

平日昼間に毎日仕事をしながら Piscine に挑むのは「非常に」厳しい。中には昼間に学校や会社に行きながらトップクラスの成績を挙げている人もいるが、全体から見ればごく少数だ。直感的には、「最低でも」週40時間以上は Piscine に費やさなければ課題についていけないだろうと感じた。私は4週間で合計300時間ほどあの場所にいた。

なお、Piscine において事前のプログラミング経験は必須ではない。もちろん経験があるに越したことはないが、教科書を読んですぐ解けるような問題はほぼ無い。事前の手持ち知識よりも、情報を集めて何とかしていく力が求められている。私はその観点から、最も重要なのは時間と健康だと考えている。

プログラミングとピア・ラーニング

ある人がプログラミングの勉強を始めようと考えたとき、その目的に応じて様々な選択肢がある。

例えばどうしても作りたい製品やサービスがあるならそれを作りながら独学で勉強し始めるのがいいし、転職したいなら職業斡旋してくれるスクールに行くのが良いだろうし、短期間で成果を挙げたいならブートキャンプに行けばよい。

42 Tokyo の最大の特徴は生徒同士のピアラーニングにあると私は考えている。正直に言うと私自身、 Piscine の受験前には「詳しくない人に教えてもらうより経験の長い人に教えてもらう形式の方が学習効果が高いのでは」と考えていたが、実際に体験してみるとこれはこれで良いところがある。

だいたい自分の周りには時間が合う人や同じくらいの進捗の人が集まるので、何かで詰まった時に気軽に助けを求めやすいし、皆初心者から初めて同じようなところで詰まった経験があるので一緒に悩み、考えてくれる。

先ほども書いたが、ある課題をプログラムを使って解こうとするとき、その課題への理解度、どのような方針で解こうとしたか、そして実際に解いた方法(プログラム)をレビューで確認しながら進むことで理解の浸透や新たな視点の獲得に繋がる。42 ではこの相互レビューを活性化させる仕組みが用意されているため、「学び方を学ぶ」場所として非常に優れている。基礎を学び、問題を通じて理解度を測り、不足している情報や知識は周りの同級生から集める。その繰り返しが新たな知識の定着に繋がる。

私は Piscine に合格しなかったとしても、4週間の活動を通じてコンピュータやプログラミングの基礎についてかなり勉強できたし、今後の勉強の進め方の方針も立ったので既に満足している(とはいえ、合格したらもっと勉強したい気持ちはある)。

将来的に受験を検討している人は、フルコミットすれば仮に落ちても勉強になるだろう、くらいの気持ちで受けるのが良いと思う。

--

--