見出し画像

ニューヨークのエンジニアコミュニティについて。Hacker Schoolでプログラミング修行中

しばらくぶりです!!(はじめまして!)

私は今、ニューヨークのHacker Schoolという場所でエンジニア武者修行をしています。三ヶ月間のプログラムなのですが、今週で早三週間。1/4が終わったところです。

Hacker Schoolって何?

https://www.hackerschool.com/

日本にあるものだと、「コワーキングスペースと開発合宿を足して二で割ったみたいな所」を想像するとイメージしやすいかもしれません。

といってもコワーキングスペースみたいな任意の登録制ではなく、「特定の三ヶ月間だけここに居たいです!」って形で応募します。コーディング問題やSkypeでの面接をくぐり抜けると、合格メールが届きます。

一ヶ月半ごとに新しい"期"(バッチと呼びます)が始まり、私が参加しているのは 3月末から始まった 春2期/バッチ(Spring 2 Batch)です。一つのバッチは三ヶ月間続くので、それぞれのバッチは必ず他の期のメンバーとスペースを共有します。いわば先輩、後輩みたいな関係が続きます。

仕事で普段からプログラミングをしている人、MITの学生、デザイナーの方で Python習いたて、みたいな人まで、様々な人が集っています。


なんと参加費は無料。

この場所 HackerSchoolのビジネスモデルは人材紹介モデルです。卒業したエンジニアがHackerSchoolを通して転職すると、彼らにいくばかの紹介料が入るみたいです(詳しい事は不明)。

だからといって、転職を前提として施設が運営されている雰囲気は全く無く、まずは一人一人の参加者が熟練のプログラマーとして成長する、というのが彼らの成功指標のようです。

日本だと、こういった施設があるのかな?ちょっと思いつかないです。知っていたらぜひ!教えていただければ嬉しいです。

もう一つだけ前置きがありまして...

HackerSchool、自分が参加する直前に名前が変わりました...

HackerSchoolは旧称で、今は Recurse Center(リカースセンター)と呼んでいます。名称変更の経緯は彼らのブログに委ねます(英語)。https://www.recurse.com/blog/77-hacker-school-is-now-the-recurse-center

個人的には、英語ネイティブじゃない人にとって、この言葉の組み合わせはちょっと覚えにくいなぁ、というのが正直な所。Paul GrahamがやっているY Combinatorみたいに存在が知れ渡れば、この名前に対する印象は変わるのかもしれませんね。


「プログラマーとして成長する」というのはどういうことか?

さて、本題です。このHacker School/Recurse Centerは、エンジニアが成長するためにこの上なく良い場所だな、と感じます。

> We believe people learn best when they have the freedom to explore what interests them, surrounded by friendly and intellectually curious peers and mentors.(サイトから引用
(意訳)知的好奇心旺盛でフレンドリーな仲間やメンターに囲まれた状態で、自分の興味の赴くままに(エンジニアリングの)世界を探検できること。それが私達が考えるベストな学習環境です。

具体的には何がポイントなのかな?と考え、良いと思った仕掛けが4つあったので、下記にまとめました。


1. 先輩と後輩が常に共存している

(岡崎の個人的な日記より抜粋)

(岡崎の個人的な日記より抜粋) 初日。軽食を囲みながら人と話す。自分にとっては、英語もネイティブではないし、プログラミング言語と自然言語、両方が制限されていることに気づく。集中して話をしていて、気がついたらスタッフの「Recurse Centerへようこそ」プレゼンテーションが始まっていた。
自分たちにとっては初日でも、すでに一ヶ月半ここで過ごしている「先輩」たちがいることに気づく。ちょうどこの先輩方が一ヶ月半後に卒業したタイミングで今度は自分たちが先輩になるようだ。(抜粋終了)

「人に教えることができたら一人前」みたいな言葉があると思いますが、先輩/後輩関係が必ず生まれ、それが一ヶ月半ごとに交代するのがうまい仕掛けだな、と思いました。


2. 社会的なマナーだけをルールとして、あとは放置プレイ

(再度 個人的な日記からの抜粋) 最初に、守ってほしい社会的なマナーを四つだけ説明された。他にルールはほとんど無いみたいだから、これらのルールを彼らはとても大事にしているみたい。

1. (他人の無知を笑わない)no feigning surprise.

2. (知識をひけらかさない)no 'well actually' s.

3. (会話に中途半端に参加しない)no backseat driving

4. (人にレッテルを貼らない)no subtle-ism

この四つを守りさえすれば、プログラマーにとっての「成長に集中できる空間」はつくれるよね、っていうのが彼らが今導きだしたルールみたい。
さて、先輩やスタッフからのアドバイスを聞いた後は、全くの放置プレイ。50席くらいの開放的なホールと、それ以外に 6人くらいが作業したり議論したりできる部屋が6部屋くらい。小さいけど技術本が読める小さな空間もある。
そのどのスペースを、どんな風に使っても、ルールは(少なくとも最初に守るように言われるルールは)一切ない。(日記からの抜粋終了)


3. 同じ期間を過ごす人との間に程よい対抗意識、緊張感がある

ここでは、月曜日から木曜日まで週4日、朝10時半に「モーニングチェックイン」という簡単な立ったままでのショートミーティングがあります。

参加が義務づけられていて、6~7人くらいの小さなグループに分かれて「昨日やったこと、今日やろうとしていること、シェアしておきたいこと」を一人30秒くらいで喋ります。

また、毎週木曜夕方に ミニプレゼンテーション大会があります。直前に希望者を募り、それぞれが学んだ事、つくったものをプロジェクターを使って発表します。

観覧は自由参加ですが、毎回とっても面白いのでセンターにいるほぼ全員が参加します。

発表のいくつかを羅列してみます。

1. マインクラフトのような環境で動く対話型プログラミング環境

2. Mozillaの次世代ブラウザエンジンServoに出したプルリクエストがマージされた話

3. Yコンビネータという、無名関数だけで再帰処理をする方法の説明(これは、今週私が発表しました!)

人の数だけエンジニアリングの領域があることをつくづく感じさせられます。分野が違っても、それぞれが好奇心旺盛に首を突っ込みまくるので、何をしゃべっても良い、ウェルカムな雰囲気を感じます。


4. 打てば響く人々、支援するツール

Recurse Center/Hacker Schoolに今まで参加してきた人を足すと、ゆうに数百人を超えるコミュニティが生まれています。

それぞれのコミュニケーションを支援するために、

・ Communityという自家製オンラインフォーラムサービス
・ メンバー専用のチャット部屋 (IRCとSlackを足して二で割ったような  
  Zulipというサービスを使っています)
・ 声をかけた瞬間にその場で相談にのってくれるスタッフ/ファシリテーター
・そして先輩、同期、後輩間での即興ペアプロ

様々なツールが使われています。オンラインオフライン、昼夜問わず、そこらじゅうで コラボレーションが起こっています。


リスク

ただし、彼らが目指している学習環境にはリスクもあると感じます。それは「自己判断と自己管理が常に問われる」ということ。

センターを行き交う情報量は、一人が処理できる量をはるかに超えています。

今自分は「情報を必死に追っているだけの状態」なのか?「実際に何かを学んでいる状態」なのか? 適切に判断できないと、あっというまに三ヶ月が過ぎ、中途半端な成果で終わってしまうリスクを感じます。

大量の情報を咀嚼(そしゃく)して、自分にとって大事なものだけに集中できるかどうかは、あなたの自律スキルにかかっています。


思ってもみなかった学習体験に出会えること

ほとんどの活動が「興味があれば参加してください!」というものなので、自律さえできれば、自分の知的好奇心に耳を傾ける時間は必ずあります。

自分の場合は、「The Little Schemer」という本でした。日本語版だと(絶版だけど)「Scheme手習い」という本です。

この本をオススメしたいわけではありません(読んで楽しかったよ!って人はぜひおしゃべりしましょう :)

ただ、普段の生活だと色々な声(学校、会社、インターネット。。)に惑わされるので、自分の知的好奇心にだけ従える機会ってなかなか無い気がします。

「自分が○○を面白いと感じるなんて思ってもみなかった」っていう感想が出てくるのが、この場所ならでは、という感じがしています。

私の場合は、前述の本を読んだおかげで 一からLispのインタープリタを書きました(Rubyで)。https://github.com/kenzan100/utalisp

そんなことをするとは、全く想像になかったです。


生涯学習に通じる道

このセンターでのサバイバルに必要なスキル、

「自分がやればやるほど楽しめそうだと思うもの」と出会うことに集中する

というものは、実は生涯に渡って大事だなと感じます。

「生涯学習」って言葉があると思いますが、Recurse Centerのファシリテーターの一人 Maryさんが含蓄のある言葉を使っていたので引用します。

> If you make your time at the Recurse Center the most productive three months of your life, that’s fine. That’s pretty OK. But, given the sacrifices you’ve made, it would be even better to use your time here to learn skills that will compound your improvement as a programmer forever. The Recurse Center is a great place to put into muscle memory these higher level skills that get neglected under pressure from grades or bosses or worrying about what the internet will think.(サイトから引用)
(意訳)ここでのプログラムが終わったときに「この三ヶ月間が人生で一番生産的な期間だったなー!」というのも良いけど、それ以上に目指してほしいことがあります。それは、この三ヶ月間を使って 一生プログラマーとして進歩し続けるスキルを身につけること。学校の成績や上司の評価、ネット上の声に惑わされずに「学び続ける姿勢を手に入れる」ことに集中できるのは、このプログラムのかけがえのない価値です。

まだ四分の一しかプログラムを味わっていないですが、僕もMaryさんに共感します。

自分の知的好奇心に忠実になることを心がけて、残りのニューヨーク、Recurse Center(リカースセンター)での日々を過ごします!


質問お待ちしています。

もっと知りたいこと、疑問点あったら気軽に連絡ください! 自分も日本でのエンジニアコミュニティや、学習環境全般について知りたいです。

長文お読みいただき、ありがとうございました!

この記事が気に入ったらサポートをしてみませんか?