最近は、プログラミングが流行っている。
今の社会では、世界中のあらゆる分野にソフトウェアが必要とされてきているからだ。
これからは、プログラマーに限らず、「あらゆる職種でプログラミングの知識が必要である」そんな時代がすぐそこまで来ている気がする。例えば、アメリカ、シンガポール、イギリス、エストニアなど海外の国では、国をあげてプログラミング教育を支援する動きが盛んである。
でも、文系の方からしてみれば、プログラミングは理系だけが大学の授業で学習するものだと捉えられがちではないだろうか?
また、理系の方からしてみれば、授業で習うことが難しすぎたり、「これ何の役に立つんだろう?」と捉えられがちではないだろうか? 一昔前だとそうだったかもしれないが、今は違うと思う。
Progateとは、そんな避けられがちなプログラミングをWEB上で、実践的でありながらも、ゲームのように楽しく学ぶことができるサービスのことである。
ぼくは、2015年の8月にノリで京都から上京し、アメリカ西海岸に留学する2日前までProgate社でエンジニアのインターンとして働きながらプログラミングを学んでいた。インターンをするまでは、全くの初心者だった。
そんなぼくが、Progateでソフトウェアエンジニアとして、5ヶ月間インターン(有給)をしたことで学んだことは次の3つである。
1.“1人”より“2人"
2.“教材”より“メンター"
3.“海外留学”より“国内もまた留学"
##1.プログラミングをはじめるときは、“1人”ではじめるより、“2人”ではじめるほうが学習効率が良い
勉強といえば1人だ。成績を図るテストはいつも1人で受ける。だから、プログラミングなど新しい技術を習得するのも1人で勉強するのが当たり前だと思っていた。
チームラボの猪子さんも次のように言っている。
日本の学校は個人主義でしょう。テストも1人、受験も1人、家に帰っても1人でスマホ。共同で何 かする体験が少ない。
しかし、それは本当に学習効率が良いのだろうか? 今回の経験を通して、そんなふうに考えるようになった。
なぜなら、Progateでは何か新しい技術に手を出すときは、1人ではなく2人でタッグを組んで取り組み、習得する光景をよく見たからだ。2人でタッグを組んでいるからか吸収スピードはかなり早い。
詳しく話を聞くと、それはProgate自体が、村井くん(左)とまささん(右)が、ぼくと同じように全くのプログラミングの知識がなかった状態から、仕事の受託を通してプログラミングを身につけた後に、「じゃあ次は自分たちがプログラミングを手に入れて得た体験をもっと多くの人ができるようにプログラミング学習サービスを」という感じで開発しはじめてできたというストーリに起因するということを教えてもらった。
ぼくは、とくにプログラミングのようなものを学ぶときは1人ではなく、同レベルの2人で学びはじめることは教育上、非常に有益だと思う。
たとえば、とくに初期なら、何かわからない問題に出くわせば、2人なら1人で考えるときに比べて詰まる時間は半分程度で済むだろう。また、共同で開発する際に必要となるGitHubというサービスを利用すれば、それだけで実践的なGitの概念やソースコードの管理のスキル、チーム開発の経験を身につけることができる。コードをお互いにレビューし合うと、パートナーの成長や得た知識が可視化されるので吸収して自分のものにしやすい。もちろん、1人のときに比べて納期や役割分担がはっきりするので意欲や責任感も高まるはずだ。だから、1人で学ぶときに比べて、2人で学ぶときの成長スピードは指数関数的なグラフを描くと思う。
Progateの共同創業者である村井くん(左)とまささん(右)
ぼくの吸収スピードは、Progateのみんなに比べると圧倒的に遅い。サッカーにかまけて、中学と高校で勉強をさぼっていた漬けである。
でも、だからといって、プログラミングを諦めたくないし、「お前には向いてない」なんてだれにも言わせたくない。「みんなは東大生だから自分とは違う」という言い訳で、自分の可能性とプログラミングの選択肢を放棄するのではなく、「どうやったら彼らに追いつけるか」を考えたい。
だから、負けず嫌いなぼくは、「1人ではなく、2人でプロダクトを開発する経験を積む」という工夫によって学習効率を高め、その差を近づけてみたい。
誰もが唸るような才能のないぼくはそうやって考えて、知恵を振り絞り、工夫をするしかない。
そうやって、アメリカ西海岸で、身の程をわきまえて精進したい。
##2.“教材”に加えて、“メンター”のアドバイス
高校で、質の低い教材と崩壊した授業を受けたあとに、受験勉強で、映像授業による質の高い教育と素晴らしい参考書に出会ったことで英語の偏差値を30近く伸ばしたことがあるぼくは、勉強といえば『教材』が全てで、一番大切だと思っていた。しかし、それは間違いだった。プログラミングなど、新しい分野のことや難しい分野を学ぶときは、例え『教材』が良くても挫折しやすいのだ。実際に、ぼくは、プログラミングに手を出して挫折した友達を両手で数え切れないくらい知っている。では、ぼくと挫折した友達を分けた違いは何だったのだろうか?
ぼくは、それは才能でも地頭でもなくて素晴らしいメンターの有無だと思う。
インターンでは、東京大学法学部卒で技術力も、論理的思考力も、文章力も、問題解決能力も、なにをとっても、ぼくが足元にも及ばない人が、ぼくのメンターとして、ぼくを鍛えてくれた。
メンターは、ぼくの成長についてぼく以上に考えてくれていた。メンターとの個人面談は月一回あり、月に何回かふたりでランチをする。また、ぼくの書いたコードはすべて、GitHubを使ってメンターにコードレビューしてもらっていた。何かわからないことがあれば、対面でもチャットで質問できた。
メンターは、ぼくに「質問をするときは、もっと自分で噛み砕いて順序立てて話せ」、「お前のコードは汚い」、「問題は細分化しろ」、「PDCAを回して、もっと生産性を早めろ」、「会社からお金をもらって働いている意味をもっと考えろ」、「何回同じことを解説すれば気がすむんだ」と口を酸っぱくして、根気よく教えてくれた。また、ぼくが思うようにコードが書けず、落ち込んでいるときは励ましてくれた。メンターは、時に厳しく、時に優しく、ぼくを支えてくれた。
*ここでは、メンターのアドバイスをわかりやすくするために、表現を誇張しています。
メンターがいなければ、ぼくはプログラミングを早々と挫折していただろう。メンターがいなければ、もっと成長スピードは遅かっただろう。だから、メンターには、感謝の気持ちが尽きない。ぼくにとって、本当に素晴らしい環境だった。
↓GitHubでのコードレビューの実際の様子
まるで、自分の中の毒が洗い出されているような感覚だった。
いまのぼくの最大の懸念は、Progateを離れることで、メンターがいなくなることだ。メンターを失うと、誰もが自分に対しても、自分のコードに対しても甘くなる。メンターは、双方向でオフラインで頻繁に会える環境でなければいけない。
留学後には、「あなたは、留学で何をしましたか?」が問われるのはよく聞くが、「あなたは、留学でだれをメンターにしていましたか?」と問われるのは聞いたことがない。人一倍自分に甘くて、仕事と勉強ができないぼくは、後者にこだわりたい。だから、一刻もはやくアメリカで自分のメンターとなってくれる人を見つけたい。
##3.“海外留学”が全てより、“国内もまた留学である"という認識
留学という単語を聞いたとき、多くの人が思い浮かべるのは、アメリカ、イギリスなどの海外の国や、大学というある種の型や形式ではないだろうか? また、海外留学を経験した人にありがちなのは、「日本には多様性がない」と日本をDisる行為だ。かくいうぼくも、もともとそうで、海外思考が強かった。「日本なんて多様性がない」と知ったかぶり、海外がすべてだと思っていた。しかし、今回の経験を通して、理解を改め、ぼくにとっての留学を再定義したい。ぼくは、留学とは、「海外、国内に限らず、垣根を超えた人の流動によって異文化を理解することすべて」と考える。
たとえば、進学校ではないぼくの高校では、「東京大学に合格することは、親族が東京大の出身者などでないといけない。努力だけでは不可能で、才能が必要。合格者は宇宙人のようなもの」という教育を受けてきた。現代社会の先生が、わざわざ授業でみんなの前でそんなことを言う変わった高校だった。1学年に1000人いるマンモス高校でただ1人東京大学に合格したのだが、教師たちは彼だけには特別に敬語を使っていた人もいた。異様に思えるかもしれないが、事実である。
さて、ここでProgateのメンバーの経歴を簡単に紹介してみよう。
帰国子女→DQN高校→東京大学理系
有名進学校→東京大学理系
有名進学校→東京大学理系
関西随一の進学校→東京大学法学部
中学卒業と同時に渡米→イギリスの大学を中退
DQN高校→東京工業大学(日本一の理系大学)
開成高校(日本一の高校)→東京大学理系
開成高校→ハーバード大学
東大生は宇宙人高校→浪人→同志社大学文系(ぼく)
要するに、この5ヶ月間、ぼくは、当時の高校の先生の言葉を借りれば、宇宙人といっしょに仕事をしたり、飲みに行ったりしていたわけだ。
海外ではなく、京都から東京という国内だが、この体験は、もはや留学と呼んでもいいのではないだろうか?
その証拠に、京都や大阪に帰省したときに、昔のぼくを知る友達によく「お前ほんま頭良くなったなー」と言われる機会が多かった。前提として言っておくと、自分は、中高の大半をサッカーに費やし、おまけに大学受験では失敗している。だから自分は頭が良いはずがないし、いいと思ったことは一度もない。
仮説として考えられるのは、この5ヶ月間の間に、頭の良いメンバーに囲まれていたことで、周りに適応しようとして自然と自分の頭のレベルが上がったことである。そして、これは、英語ができなかった日本人が、海外留学を経て帰国してくると「お前英語できるようになったなー」と言われる現象のそれにそっくりではないだろうか。
シカゴ大学経済学部を卒業、「マネー・ボール」で有名になった野球データ予測モデル「PECOTA」の開発者であるとともに、大統領選挙の結果を正確に予測することで有名であるネイト・シルバーも、TEDで次のように言っている。
ニューヨークと外国とで学生を交換する交換留学制度がありますが、率直に言って米国内だけでも十分な差異があります。たとえばニューヨーク大学の学生を一学期間アーカンソー大学(アメリカの地方の大学)で学ばせ、逆も同様にするとか。それを高校の段階でやるのはどうでしょう。実際アーカンソーやテネシーの学校にいる人は恐らく別の州や別の人種の人たちと積極的に交流する機会を持たないでしょう。先程話した教育という要因の一部は大学に行くことで得られる。他では交流する場がなかった人達と混じりあ経験のためだと思います。重要なのはこれがすべて良いニュースだという事です。
だから、ぼくは、「おれは世界一周したぞ!、日本には多様性がない」などと訪れた『国の多さ』を自慢し、日本をDisる人生ではなく、暮らした『街の多さ』を自慢し、「世界も日本も、思っているより多様性に溢れている」と自分の視野の狭さと世界の多様性に謙虚な人生を選びたい。
##初心者から、創れる人になる
みんなは、プログラミングを教えるのがとてもわかりやすかった。本当に頭が良いんだと思う。
学校の成績といえば、テストの点数評価だけれども、教えるうまさで成績を図る指標があってもいい。
わかりやすく物事を教えるには、その事象についての体系的で正確な理解や、論理的思考力などたくさんの力を必要とするからだ。
「初心者から、創れる人を生み出す」がProgateの理念だ。
これから、ここを離れることになっても、この意思は、ぼくの中にずっと持ち続けていたい。
そういえば、昔に、Progateの人と仲の良い人からみんなは仲間内で集まっている感じと聞いていた。
だから、ぼくは、最初のほうはみんなになじめるか心配で仕方なかった。
今振り返ってみると、それはただの杞憂だった。
5ヶ月間もいっしょにずっといたから本当に仲良くなった。間違いなく、ここは、いつでも帰ってきたいと思える自分の「居場所」だ。5ヶ月間のインターンを経たいまでも、ぼくは、まだまだエンジニアとして大したことない。たいしてきれいなコードも書けないままだし、デバッグにだって時間がかかる。
しかし、サッカー日本代表である本田圭佑選手は、次のように言っている。
その10日間ですべてが変わるわけじゃないです。でもその10日間でそのあとのすべてを変えるきっかけにするんですよ。
「Progateでの5ヶ月間は、これから技術を更に深掘りして、もっともっと身につけていくためのきっかけになった」と言えるようにこれからも、ぼくは、コードを書き続けて、手を動かし続けていきたい。
最初は、迷惑をかけてばかり、みんなの時間を奪ってばかり。しまいには、明日には渡米である。本当にみんなには、申し訳ない。プログラミングについて、ぼくは、0から面倒を見てもらって、たくさんのことを教えてもらい、育ててもらった。それもバイトのようにお金をもらいながら。本当にありがとう。この借りはいつか返したい。
だから、ぼくは、せめて、これからアメリカで、Progateを通して『初心者から創れる人』になった第一任者になりたい。
それが、少なくともこの2年間で、ぼくが、みんなにできる唯一の恩返しなのだから。
ありがとうございました
読んで下さってありがとうございました。「お前がプログラミングができない理由は、こういう記事を書いているからだ。とっととコードを書けハゲ」という突っ込みは無しの方向でお願いします。重々承知しております。でも、不定期に文章を書くのが趣味なのです。文章を書くようにコードを書けるようになるのはいつのことやら。
##謝辞:1年半後
ぼくにとって、この半年間は、留学のようなものでした。そんな留学を身近にするサービスを開発しました。留学codeという、留学経験者と留学したい人をつなぐ『オンライン無料留学相談』サービスです。詳しくはこちらからどうぞ。
留学codeのプロトタイプは、Progate株式会社でのインターン時代に、1人で作っていたサービスに遡ります。Progate株式会社での1番最初のタスクが、「自分でなにかアプリを作ってください」だったからです。当時作っていたサービス↓
留学codeを支えている技術は、この時に、Progateで学んだ基本的な知識が土台になっています。
だから、Progateと繋がるきっかけを作ってくれたCTOの@wyvernMuraiと「おれ、洪くんのことが好きなんだよね」ってだけで、なにもなかったぼくを最初のインターン生として招き入れてくれたCEOの@cmasad43とメンターとして、たくさんのコードレビューとメンタリングをしてれたCOOの@mate0rich。
そして、リードエンジニアの@shohohohfireやデザイナーの@michiminstar や同じインターンの@k_tooooooooooo。そして、東京留学生活の最初から最後までスラムダンクの流川的存在として、刺激を与え続けてくれた@YFuka86と渡米のときに色紙を描いてくれた@yrmtsのコンビに本当に感謝したいです。
また、このプロジェクトを一緒にしてるわけでもないのに、技術的な相談にいつも乗ってくれた奥原さんと@yasu_919にも感謝の意がつきません。ふたりがいなかったら、プログラミングもデータ分析も途中で挫折していただろうと思います。
この色紙とメッセージは、つらい時にいつも支えてくれました。自分の宝物です。
ぼくは、Progateでみんなと過ごした386 commitと、168pull requestsを一生忘れない。
全文はこちらからどうぞ。