はじめまして!
42Tokyo の2022年度アドベントカレンダー、22 日目を担当します、てっぺーと申します。
42には日本での開講から2年半在籍していまして、約3年弱もプログラミングを学んでいるくせに、なんとQiitaを書くのは初めてです。
よろしくお願いします!
この記事の目的
普段なら自分の思考の整理とかそういうのもののために記事を書くところですが、せっかくのアドベントカレンダーなので、本記事の目的は、42Tokyoに挑戦してくれる人を増やすこと です!
ちなみに、応募は↓から可能です。(入学試験の開催時期は限られているので、開催されているタイミングでの受験になります。)
と言っても、42がどんなに魅力的な場所で、どんなカリキュラムで何を学んでいるのかという、42へのアトラクト的な記事については、すでにたくさんの学友たちが書き残してくれているので、そこは最小限にして、僕からは(これから挑戦するみなさんの楽しみを損なわない範囲で)、「42の攻略法」 をテーマに記事をお届けし、42への参加のハードルを下げる ことに貢献できたらなと思っています。
「これから挑戦するみなさんの楽しみを損なわない範囲で」とは書きましたが、むしろ、攻略法を見て楽しみに思っていただけるようなポイントを紹介するつもりです。
42の性質上、あまり具体的なことは書けないので、抽象的な話になってしまうことはご容赦ください🙏
個人的に、42Tokyoのおもしろいところは、スキルがつくところだけではなく、学生のコミュニティを自分たちで育てていかねばならないところにもあると思っています。
「42に興味はあったけど自分は忙しいから無理だろうな」と思っていた人に、少しでも「やってみようかな」と思ってもらえたらという気持ちで書いていきます。
2022-12-22 公開後の追記
思ったよりもずっと長い記事になってしまったので、伝えたかった結論だけここに簡潔にまとめておきます。
- フルタイムで働いているような人が42に挑戦して生き延びるコツは、友達をつくること!
- 友達をつくる近道は、他者やコミュニティに貢献すること!できることがないときはレビューを開けること!
- 合格しても落ちても無料なので迷ったら一度挑戦してみること!
目次
- 簡単な自己紹介
- 42の入学試験 Piscineの攻略法
- 42に在籍し続けるためには
- 42を通して得た成長
簡単な自己紹介
てっぺーってどんな人?
一言で言うと、怠惰な人間です。
怠惰はプログラマの三大美徳の1つと言われるくらいですから、さぞかしプログラミングに向いていることでしょう()
しかし学習には向いていなさそうですね()
あと、自分にも他人にも甘いです。優しいのではなく甘いです。自分を律する気が一切ないので、好きなことばかりしています。
漫画とゲームが好きですが、オタクというほど詳しくはなく、かといってオタクではないというほど陽キャでもなく、目的のある会話は好きですが、目的なく雑談したりするのは苦手、そんな人間です。
強みと言えば、怠惰で自分に甘いがゆえに、楽をするための工夫は惜しまないことくらいです。
合理的で効率厨的な思考は得意で、学習の進め方も、目標を定めてそれに対してとにかく合理的に行動することを意識していました。
42入学前のプログラミング経験
42の入学試験を受ける前の段階で、プログラミングの経験はほんの少しだけありました。
と言っても趣味程度で、きちんとコードを書いたことはなく、入学試験で初めてターミナル(プログラマがコマンドを打ち込む黒い画面)を開いたというレベルです。
今となっては親の顔より見たような、ls
やcd
といった基本的なコマンドも、全く知りませんでした。
仕事の忙しさ
本記事のタイトルにフルタイムで働いていると書いていますが、実際どのくらい働いているのかを紹介しておこうと思います。
だいたいこのくらい働いていても在籍は可能だよ、という物差しになればと思います。
時期 | 残業時間 | 補足情報 |
---|---|---|
入学試験の頃 | 40h/月 | 普段のペースで残業しているとさすがに合格できないと思ったので、10日くらい有休を取って臨みました。 |
入学直後〜半年頃 | 30〜50h/月 | ちょうどコロナが出始めた後で、コロナによる打撃をかなり受ける業種だったので、そこそこ激務でした。また、同時に転職活動もしていて、この時期が一番きつかったです。 |
入学半年〜1年頃 | 0〜10h/月 | 転職し、最初の半年はまだ仕事に慣れる段階ということもあって、比較的時間に余裕がありました。 |
それ以降〜今 | 0〜10h/月+副業40h/月 | 残業時間はあまり変わっていませんが、任されることが多くなったり重たくなったり、さらには副業を始めたりして、自分でもなぜかわかりませんがわざわざ忙しくしています(本当になぜ…)。ちなみに42の学習ペースは、退学になるかならないか、結構ギリギリです。 |
42の入学試験 Piscine(ピシン)の攻略法
Piscineとは何か、みたいなことは他の学生や受験者の記事をぜひ読んでみてください。
簡単に言うと、「他の受験者と協力したり競ったりしながら約1ヶ月間でできるだけたくさんの課題をこなす試験」です。
42に通うためには、まずこのPiscineを突破しなくてはならないので、その攻略法、特にその裏技をご紹介します。
正攻法は「とにかく時間をかける」こと
さて、そんなPiscineの攻略法ですが、まず正攻法は、「とにかく時間をかけること」です。
Pisicneの期間中は、24時間いつでも課題に取り組むことが可能であり、課題を完了すればするほど、合格の可能性も高まるので、少しでも多く時間を使うことは当然有効です。
また、「とにかく時間をかけること」は、この後に紹介する裏技のためにも非常に有効なアクションです。
ただし、僕のように働きながら参加する場合はやはり他の受験者と比較してかけられる時間は少なくなってしまいます。
そんな中で僕なりにどうやって合格してやろうかと考えた攻略法が、裏技です。
裏技は「他の受験者に貢献する」こと
仮にも入学試験で、他の受験者に貢献していたら落ちてしまうのでは…?とは当然の疑問ですが、Piscineに限ってはそうでもありません。
Piscineは、実は1人では決して合格できません。
42の学習の特徴であるPeer to Peerが、Piscineの課題にも基本的なシステムとして備わっています。
レビューというシステムがあって、自身の課題の成否について他の受験者が判断します。(チェック項目は決まっているものの、課題がその項目を満たしているのかどうかを他の受験者が判断します。)
みんなでみんなを評価しあって、その結果高評価だった人が合格する、というイメージです。
(Piscineの合格基準は公表されていないので、あくまでイメージです)
つまりPiscineは、受験者同士の協力が前提の仕組みになっているのです。
かといって、レビューでおまけをしてもらえるように媚を売っておけという話ではありません(合格基準は公開されていないものの、不正には非常に厳しいです。レビューでおまけをしたりされたりしていたら、合格は遠のいてしまいます)。
レビューでは、ただ基準通りなのかどうかをチェックするだけのレビューをする人もいれば、提出された課題にアドバイスをくれたり、先の課題での注意点を教えてくれたりする親切なレビューをする人もいます。
少ない取り組み時間しか使えない状況で自分が合格するためには、自力で時間をかけることができて先に進んでいる受験者から、レビューや質問を通してできるだけヒントをもらわなければなりません。
自分に親切にしてもらう必要がある => 自分からまずは貢献しよう
ということです。
要するに友達を作りましょうということなのですが、入学試験でみんなが初対面かつ疑心暗鬼の中、友達になるには、信頼してもらうことが何より大切です。助けてもらう前提ではなく、自分が貢献する姿勢を見せることを惜しまずやっていきましょう。
貢献するタイミングは最初が肝心
貢献しようと思っても、自分は時間をかけれていないし、経験も持っていないわけですから、Giveできるものがありません。
そこで、Piscineの開始直後はチャンスタイムです。
Piscineは、少なくとも始まった直後は、とても孤独で不安な状態でスタートします。
なぜなら、Piscineでは、運営側からは本当に何も教えてもらえないからです。
「本当に何も」というのは、文字通り「本当に何も」です。
会場にはたくさんのiMacが並んでいますが、どこに座っていいのか、座ったところでどうやってPCにログインするのか、ログインしたところで何を開けばいいのか、そんな基本的なことさえ、運営側からは教えてもらえません。
そもそも、座ってPCにログインするのが正しい行為なのか、という確信も持てません。
スタッフっぽい人に質問すると何を聞いても、「やってみればわかります」とだけ回答されます。(スタッフは決して冷酷な人間なのではなく、Piscine受験者にはそう対応するように訓練されています。)
みんながみんなそういう状況なわけですから、そんな中でとにかく大事なのは人に話しかけることです、たまたま席が隣になったとか、どんな形でもいいので、自分から話しかけにいきましょう。「こんにちは。私は〇〇と申します。何をすればいいのかわかりませんね…笑」これで十分です。
ナニモワカラナイという状況では、「同じくナニモワカラナイけど一緒に困ってくれる人」がいるだけでも嬉しいものです。
そういう輪を広げていくのが、Piscine序盤のコツです。
輪が広がっていくと、その中に突破口を見つけた人が現れたりします。
また、人と関わることが苦手な人でも、強制的に友達を作るチャンスがあります。それがレビューです。
レビューは、自分がレビュー可能な枠を開けておくと、課題を終えた人がその枠に申し込み、成立します。
つまり、自分のアクションとしては、枠を開けるだけでいいのです。
レビューを受けないと先の課題には進めないわけですから、レビューの枠を提供するというのがめちゃくちゃ立派な貢献です。
枠を開けた時点ですでに貢献を果たしているのですから、レビューを申し込んでくれた人に、どんどん課題に関係のないことも質問しましょう。
実際のところ、話しかけるのが苦手な僕のようなタイプにとっては、レビューを通して仲良くなった人というのが、Piscine中の人間関係の大部分を占めていました。逆に、他にどんなつながりがあったかというと、レビューを通してできた友達の友達だったりします。
Pisicneは4週間ありますから、特に最初の1週に、他の受験者に貢献する・友達を作るということは何より大切です。
序盤においては、課題を進めることよりも大切と言っても過言ではないでしょう。
実際に経験したスケジュール
僕の場合のスケジュールを紹介します。(およそ3年前のことで、日数は正確には覚えていないのでおおよそです。)
週数 | 通った日数 | やったこと |
---|---|---|
1週目 | 5日 | 初日に隣の席の人に話しかけた。その人は今でも友達。周りの席の人にも話しかけた。毎日同じ席に座り、その席にいる人として認識してくれる人もいた。レビュー枠を開けて、色々教えてもらって、教わったことを忘れない程度に、少し自分の課題も進めた。少しでも仲良くなった人とは一緒にごはんを食べるなどして、親睦を深めた。課題は全然進んでいない。 |
2週目 | 3日 | 仕事があったのでほとんど出れず。課題の内容は控えておいて参加時間以外にも考え続け、数少ない参加時間は、レビュー(するのもされるのも)に使った。参加できない分、受験者のslack(※)での非同期のリアクションなどはそれなりに頑張った。課題は少ししか進んでいない。 ※slackは公式のものが作られます。slackも、参加時間短い勢が貢献するチャンスの場です。 |
3週目 | 2日 | 同上。この頃になると人によってだいぶ進度に差が出ているので、自分より先に進んでいる友達が誰かということは突き止めておいた。課題は少ししか進んでいない。 |
4週目 | 6日 | 自分より進んでいる友達に、恥も外聞もなくなんでも質問し、爆速で課題を倒していった。(「4週目にもなってそんなことも知らないなんて、今まで何をしていたんだ?」というレベルの質問もたくさんした。) |
ぶっちゃけこのスケジュールを見てわかる通り、僕は貢献したことよりも助けてもらったことの方が遥かに多いです。
本当に人に恵まれていたと思いますが、関わった人みんなが助けてくれたわけではなく、そこそこたくさんの人と関わったので、その中に助けてくれる人がいた、というのが実情です。
時間がないけど42に参加したい人は、とにかくたくさんの友達を作りましょう。
友達を作るのが苦手な人はとにかくレビューの枠をたくさん開けましょう。
42に在籍し続けるためには
さて、序盤の信頼貯金を駆使した後半の乞食作戦によって、めでたくPiscineを突破し、42に入学できたのは良いですが、42には、なんと自動退学の制度があります。
入学時からカウントダウンが始まっており、カウントダウンが終わるまでに一定のレベルの課題をクリアしないと、退学となってしまいます。カウントが残っているうちに課題をクリアすると、カウントが伸びてまたしばらく在籍できる、という制度になっています。
心構えの話
まず、僕が個人的に大切にしていることをお伝えします。
それは「とにかくどんな手を使っても退学にならないようにすること」です。
学生の中には、「期限ギリギリまで粘ってでも、この課題で学べることを学び尽くしてやるぞ」という殊勝な考えを持って学んでいる人も少なくありません。「せっかくやるなら、学び尽くそう」「納得いくまで課題を作り込もう」というマインドの方は、多いようにも思います。
そういう人が多いのは42のいいところでもありますが、プログラミング未経験の上にフルタイムで働いている身では、そのような学び方をしていてはあっという間に退学になってしまいます。
「やっていた課題はとても深く学べたが、退学になってしまい他の課題に取り組むことができなかった」と、「まだ学べていないことはあるが一応クリアしてしまったので一旦その学習は終了し、他の課題をどんどんやっていく」を比較して考えたとき、在籍し続けてさえいれば、クリアした課題のやり残しは、いつでも戻って学習できるわけですから、クリアを第一優先にしていくことにデメリットはないはずです。
僕は、「課題の数はたくさんあるので、学びが100の課題を1個より、学びが50の課題を2個、3個とやっていく方が良い」と考えて、とにかく在籍し続けることを第一の目標にしています。
なぜこんな話をするかというと、この目的の部分がブレると多分すぐに退学になってしまうからです。生き延びるために頑張らないといけないとき、試験前に掃除が捗ってしまうみたいなノリで、課題のクリアに直接は向かわない深い知識の習得に時間を使ってしまったり、「こんなお粗末な出来でクリアしても意味ないからがんばるのやーめた」と逃げてしまったりといった事態が容易に想像されます。
正直、本記事に書いているような攻略法は実践できていたのに、退学になってしまったという学友もたくさんいます。
その人たちが何か悪かったというわけではなく、個々の事情でいろんなことに流されていく中で、42の優先度が下がってしまったとかが多い印象です。
目標がブレてしまうと簡単に退学になるので、十分に時間が使えない中でも42にチャレンジする方は、とにかく在籍し続けることを第一の目標にしましょう。
入学後もPiscineの攻略法は通用する
では、実際どうやって在籍し続けているのかというと、とにかく人に助けてもらっています。
Piscineと一緒じゃねーかという声が聞こえてきそうですが、その通りです。Piscineの攻略法は、正攻法も裏技も、どちらもそのまま入学後の攻略法として有効です。
自力で生き残っている人は、しっかりと時間を使って課題に取り組んでいますし、助けてもらって生き残っている人は、友達がたくさんいます。
先に進んでいる人の記録を読む
入学後になると、当然全員がPiscineを突破してきたメンバーですから、ほとんどの学生が助け合うことの重要性を理解しています。
また、エンジニア界隈というのは、自分の知識の整理のために技術記事を残したりすることが自然に行われる文化があります。
ありがたいことに、42Tokyoにおいて、自力でずんずん課題をクリアしていく猛者たちの中には、自分がハマったポイントや、課題を通して学んだこと、はたまた課題の具体的な進め方まで、記事に残してくれたり、学生のDiscordで発信してくれる人がたくさんいます。
そういった学友たちの記事を読むことで、人見知りな自分は序盤の課題をなんとか理解していきました。
やっていることを発信する
課題のとっかかりを理解しても、なかなかクリアできないハマるポイントというのがあったりします。
何を質問していいのやらわからない状況でも、とにかく「自分はこういうことをやっていて、〇〇になるはずだと思っていたのに××と表示されている」ということを独り言のように発信していくことが重要です。
なぜなら、それを見て一緒に考えてくれる救世主がたくさんいるからです。
繰り返しになりますが、ほとんどの学生が助け合うことの重要性を理解しています。また、これは僕の主観ですが、プログラミングが好きな人には、課題を解決すること/問題を解くことが好きな人が多いです。
そんな中に、問題を放り投げると、頼んでもいないのに解決策を考えてくれて、コメントをもらえることがあります。
かく言う僕も、自分の課題がろくに進んでいないのに、人の困っているのを見て「それ考えるの面白そうだな」などと首を突っ込んでしまうこともあります。
課題の内容はSNSで発信できませんが、42Tokyoには、timesという自分のTwitterのように使えるDiscordサーバーがあります(学生の自治で運営されています)
そのサーバーでどんどん自分のやっていることを発信していくと、
- うまくいっていないときは、誰かが助け舟を出してくれる
- うまくいっているときは、その発信自体が誰かを救う
という形で、学生同士で助け合いながら42生活を送ることができます。
↓最近助けてもらった例
こんな感じで、ここでも僕は、貢献していることより助けてもらっていることの方が多いですが、時々自分にできる貢献をできる範囲でやりながら、生き永らえています。
42主催のイベントにはしっかり参加する
上記を徹底していれば良いかというとそうでもなく、基本的にフルタイム勢には時間が足りないような課題設計になっていると思います。
そこで重要なのが、42が主催してくれるイベントです。イベントには様々なものがあり、課題とは関係ないけどプログラミングの学習になるものや、まだ登録できない先の課題を先取りできるものや、全然プログラミングに関係のない大喜利などなど、本当に色々あります。
なぜイベントへの参加が重要かというと、参加することによって退学までの期日が伸びたり、期日を伸ばす権利を得たりすることができるからです。
時間が足りないから課題に集中しないといけない。イベントなんか参加している場合ではない…!そう思っている時期が僕にもありました。
しかし、最近の傾向では、おおよそイベントに費やす時間の1.2〜1.5倍くらいの期日延長をもらえる感触があります(個人差があります)。
このわずかな延長が生死を分けます!!
もちろん、純粋にイベントも楽しいので、参加して損はないです!
また、運営が発信してくれる学生向けのアンケートなども、欠かさず回答していきましょう。
アンケート回答によっても、期日を伸ばす権利を得られる場合があります。
それに、アンケートで陳情すれば、退学期日が短すぎるんだよということにも気づいてもらえるかもしれません…
42を通して得た成長
さて、「こんな裏技で攻略ばっかりしてきて、こいつは本当に学べているのか…?」と不審に思われている頃でしょうから、最後に、僕が42で成長したことも簡単に紹介しておきたいと思います。
以下は、かなり主観に基づいて書かれているので、レベル感に関する記述について、正確さは一切保証されていません。
入学してから身につけたスキルや知識
- シェルスクリプトの扱いは平均的なエンジニアより上っぽい
- docker / docker-composeを多分普通に扱える
- C言語、特にその鬼門とされるポインタの扱いや理解にかなり自信がある
- 排他制御をC言語で実装できる
- C言語でほぼフルスクラッチで3Dゲームを作れる
- C++の基本的な文法を理解している
- クラス、インスタンスなどの概念がわかる
- CとC++を学んだことで、他の言語の習得にも役立った
- 副業と本業はTypeScriptでコードを書いている
- GitHubは普通に扱える。なんなら多少のトラブルシューティングもできるし、人に教えることもできる
などなど、書ききれないくらいにはたくさんの成長がありました
実際の成果
- 今年から副業でエンジニアとして働き始めた
- 友達の会社なので下駄を履かせてもらってはいるが、それなりに貢献実感はあるくらいは活躍できている。
- 「何もわからなすぎる」ということも発生していない。
- 本業の方でも、エンジニアチームと関わるポジションで働けるようになった
- かなりエンジニアに近い理解度でエンジニアとの会話ができている
- 本来の役割ではないが、自分でコードをいじることもある
- そう遠くないうちにエンジニアへのキャリアチェンジもあるかもしれない
- 副業のエンジニアはもう1個増えそう
- 42の学生の紹介がきっかけ。ちゃんと面接して採用してもらえた。
結論:忙しい人もぜひ42にチャレンジしてみよう!
長々書きましたが、忙しい人に向けた、大事なことは下記だけです
- とにかく課題をクリアする手段を考え抜こう
- そのためには、友達をつくろう
- そのためには、他者にどんどん貢献していこう
忙しい人には忙しい人なりの42攻略法があるし、忙しくない人と比べても、遜色なく楽しむことはできていると感じています。
フルタイムで働いている方の場合、月の残業が40hくらいまでであれば、いろんな人に助けてもらいながら、無理をしなくても長く学び続けることができると思います。
忙しくない人は、もはやチャレンジしない理由はありません。なぜなら、費用は一切かからないからです。参加しても失うものはありません。
一人でも多くの方が、42の学生コミュニティに参加して、一緒に盛り上げていってくださることをとても楽しみにしています!
↓エントリーはこちらから(入学試験の開催時期は限られているので、開催されているタイミングでの受験になります。)