まつもとゆきひろさんの講演会のまとめ(20代エンジニアのためのプログラマー勉強法)

f:id:ryoutaku_jo:20190330215245p:plain

【結論】

・人生には戦略が必要である
 日々を無目的に過ごすのは、非常に勿体ない。

・自身の好きを追求して、
 それを強みに差別化する事が最も効果的。
 但し、多少の妥協と打算も必要な場合がある。

・エンジニアとして成功をおさめるには
 アウトプットは不可欠である。
 苦手でも、克服すべき。

【目次】

【本題】

まつもとゆきひろさんの講演会に参加して来ました

サポーターズコラボさん主催の
まつもとゆきひろさんの特別講演に参加して来ました。

supporterzcolab.com

まつもとゆきひろさんと言えば、Rubyの開発者として
説明不要なくらい世界的に有名なエンジニア
です。

20代エンジニア向けのプログラミング勉強法というテーマで、
キャリア論を主軸に、様々なお話をお伺いしました。

今回は、その講演内容をまとめます。

人生には戦略が必要である

テクノロジーの発展によって、生活が豊かになった反面、
以前まで無かった様な不幸に見舞われるケースが目立つ様になった。

例1)
エントリーシート(史上最悪の発明)
就活生はフォーマットに従って自身の経歴をまとめるだけで、
複数の企業へ簡単に応募を出すことが可能になった。
一方で、採用側は、大量に送られてくる情報に翻弄され、
人物本位で選考が出来なくなってしまった。

結果、多くの就活生と企業に不利益をもたらした。
エントリーシートに書ける様な立派な実績のある人と、
就活サイトだけが特をしている)

例2)
・IT系のブラック企業
IT企業にはブラック企業が多い傾向にあると言われている。
本来テクノロジーを熟知して、人を幸せにするはずが、
かえって人を苦しめる存在になってしまっている。

上記の通り、現状テクノロジーは必ずしも人の幸せには結び付いていない。
なので、自分の成したいことを成し遂げるには
ただテクノロジーを熟知するだけではなく、戦略を持つ必要である

モラトリアムは勿体ない

若いうちから人生の戦略を持つことが非常に重要である。
その理由は、体力・気力などが充実している20代の方が、
何かに挑戦する際に圧倒的なアドバンテージがある
からである。

その根拠に、著名人の多くは、若い時にその後の基盤となる実績を残している
アインシュタイン→光量子仮説を提唱したのは「26歳」
まつもとゆきひろRubyを開発したのは「27歳」

また、数学界のノーベル賞と言われる「フィールズ賞」では
受賞対象者を40代までに絞っている。
それは、大きな成果を出せるのは若い時だけであるという考えに基づく。

上記の事から、日々を無目的に過ごすモラトリアムな生き方は、
非常に勿体ないと言える。

勿論、30代以降では挑戦出来ないという訳では決して無いが、
出来るだけ早いうちから、行動するメリットは非常に大きい。

群の心理に惑わされ無い為にも

若い人が働く時に注意したいのは「αシンドローム」という心理作用である。

「αシンドローム」とは、甘やかされたペットは
自身がリーダーである様に横柄に振る舞い、
逆に厳しく躾けられると従順になる、という群れの心理現象である。

これは人間にも当てはまる。
例えば、会社勤めてを続けていると、上司など群のリーダーへの忠誠心が強くなり、
体を壊してでも会社に奉仕しようと働き詰めになってしまうケースがこれに当たる。

会社員は、契約の範囲内でしか働く必要は無い。それを超える要求は断れば良い。
にも関わらず、若いうちは、立場が無いので、辛い状況に追い込まれがちである。

この様な状況に追い込まれない為にも、
自身の指針となる戦略の持つ必要がある。

抽象化の注意点

学習における重要な概念として抽象化があげられる。

コードの共通化に代表される様に、
プログラミングとは抽象化の極みと言える。

「Joel on Software」という書籍に登場する
アーキテクチャ宇宙飛行士」も、抽象化の事例として興味深い。
躍進を続けるアーキテクチャ宇宙飛行士たち - The Joel on Software Translation Project

但し、抽象化は万能では無い。
・抽象化の漏れ
・過剰に単純化
・なんでも二元論(右翼 vs 左翼、保守 vs 革新など)

上記によって発生する差異を、初めは非常に小さいが
バタフライエフェクトの様に、大きな影響をもたらし、
正しい検証を行えなくしてしまう。

これは勉強にもあてはまる。
一口に「勉強」といっても、これまでの学生時代の勉強と、
社会人に求められる勉強は、全く異なると言っていい。

なので、それぞれの違いを考える必要がある。

学生と社会人での勉強の違い

学生と社会人の勉強には、下記の様な違いがある。

・満点あり vs 満点なし (点数の上限は無い、1万点の成果を出す事も可能)
・正解あり vs 正解なし(絶対的な正解が無い中から、最適解を探す)
・苦手の克服 vs 得意を伸ばす(苦手は組織で補完し合える)
・知識 vs インデックス(暗記する必要は無く、速やかに引き出せれば良い)
・試験 vs 常時戦場(毎日成果が求められる)
・メイン vs サブ(学ぶ事はサブで、成果を出すのがメイン)
・安定 vs 変化 (社会人は学ぶ対象が変化する)

他人と差別化する為の戦略を持つ

学習の目的は人それぞれある

・成功したい
・高収入を得たい
・良好な人間関係を構築したい
・好きな事だけしたい
・嫌いな事をしたく無い

いずれにしても、これらを達成するには、高評価を得る必要がある。
では、勉強するだけで高評価は得られるのか? → 答えは「NO」

知識のインプットは確かに重要であるが、それはみんなやっている。

高評価を得る為には、差別化が必要である。

では、差別化するには、どの様に学べば良いのか?
それを考えるには、下記の観点から検証する必要がある。
・なにを学ぶか?
・どこで学ぶか?
・いつ学ぶか?
・どう学ぶか?

なにを学ぶか?

社会人は、苦手の克服に力を入れるよりも、
好きなことに集中する方が、成果は出る。

なので、自分が好きな事に注力すべきである。

自分の好きを見つけるには、下記の観点から、
自分の性質のインベントリ(棚卸し)を行うことが効果的である。
・得意
・興味
・趣味
・嗜好
・背景

これらは、人と違ってるほど差別化に繋がる。

これらは他人が教えてくれないし、他人の話を信じてはいけない。
自身に問い続けるしか見出せないことである。

どこで学ぶか?

ポジティブフィードバックが貰える様な
良い環境が、人を成長させる

勉強する

高評価を得る

尊敬される

モチベーションが上がる

勉強する

(ループ)

上記の様なループに入れる環境が理想的である。

もし、ループを壊される環境に身を置いているのであれば、
直ぐに逃げるべきである。

いつ学ぶか?

社会人となれば、まとまった時間を取るのは難しい。

だからといって、プライベートを犠牲にすべきでは無いし、
睡眠時間を削るのは、学習効率を下げるのでお勧めしない。

なので、下記2点で対策する。

・優先順位を付ける

ただ無目的に何となく行っているタスクを削っていく
-Twitterのフォローを絞る
-情報の収集先を絞る
-音楽を聞くのをPodcastに置き換える

但し、自分の中で重要な事柄まで削る必要は無い。

例えば、ゲームが自分の人生の中で非常に重要な位置付けになっているのであれば、
止める必要は無いし、それは他人がとやかく言う事では無い。価値観は人それぞれ。

ただ、ゲームより重要な事、成し遂げたい事があるのであれば、
それは仕分けするべきである。

・生産性を高める

短い時間で成果を出して、時間を作る。
作った時間は、学習の時間に充てる。

決して早く終わったなどと上司に報告しない事(笑)
新しい仕事が舞い込んでくるだけ。

どう学ぶか?

知らない知識は検索出来ないので
技術全体の概要把握も重要である。

先ほどは、好きな事に注力すべきと主張したが、
時には妥協と打算も有効である。

但し、お金は目を曇らされない様に注意する必要がある。

Rubyを開発した当初はフリーソフトウェア開発だけで
報酬が貰える様な状況では無かったので、
お金を目的にしていたら、現在の成功は無かった。

先の事など、誰にも予想できないので、人間の判断を信用してはならない。
なので、頻繁に振り返る必要がある。

アウトプットは重要

インプットだけでは差別化にならない。
差別化には、アウトプットは欠かせない。

但し、多くの人は、様々な理由で躊躇しがちである。
・面倒である
・億劫である
・恥ずかしい

これらの心理的障壁を乗り越える方法は、
クオリティは気にしない事である。

Twitterでの投稿でも構わないので、アウトプットを続ける。
すると、アウトプットが最適化されて、楽にアウトプット出来る様になる。

得意を伸ばして、苦手は後回しで良いと主張したが、
アウトプットに関しては、苦手意識を克服する必要がある。

成功に必要なものは知名度

マタイの法則と呼ばれるものがある。
「おおよそ、持っている人は与えられて、いよいよ豊かになるが、
持っていない人は、持っているものまでも取り上げられるであろう。」

成功の為には有名になる必要がある。
にも知られていない状態で、
誰かが自分の可能性を見出してくれる事は決してない。

では、有名になるにはどうすれば良いのか?
マーケティング理論のキャズム理論が有効な戦略の一つである。

これは、ニッチに進出し、そこでの知名度を有効活用して
他分野に横展開していく事である。

まつもとゆきひろさんの場合)
Rubyの言語開発というニッチな分野で成功を納め、
そこでの知名度を活用して、講演会・執筆業・技術顧問など横展開を行う。

3つのアドバイス

・基礎を抑える
他人より処理の早いプログラムを書ける人は、
コンピュータアーキテクチャに関して深い理解があるケースが多い。
なので、コンピュータサイエンスを理解しておく事は、

・英語を学ぶ
最新の情報は英語発信であるケースが大半である。
英語を学べば、これらの情報を最速で把握出来る。

それによるメリットを活かした戦略が、タイムマシン経営である

欧米でヒットしたサービスというのは、
5年ほどの時差で、日本でもヒットするという傾向にある。
なので、日本でヒットする前に情報を仕入れておけば、
先行者利益を獲得する事が可能になる。

・コンフォートゾーンを抜ける

居心地の良い環境では成長は臨めない。
勇気を持って、そこから抜け出すべきである。

最後の一言

『考えることをあきらめないで下さい!』

感想

初めは「Rubyで開発してる人間なら、一回くらいMatzさんの顔見とかな!」という
完全なミーハー感覚で参加した会でしたが、結果非常に有意義な時間となりました。

お話の内容としては、新しい知見を得られたというよりは、
自身の戦略に間違いは無かった再確認出来て、非常に有意義でした。

特にアウトプットに関しては、非常に勇気づけて貰いました。

このブログは、現時点で毎日の投稿を90日以上続けていますが、
これも差別化を図る為に続けている事です。

毎日技術ブログを投稿しているエンジニアは、
恐らく全体の0.1%にも満たない筈なので、
これだけで一定の差別化は図れると考えています。

引き続きブログ投稿は継続しようというモチベーションになりました!

それと、イベント後の抽選会で、サイン本が当たりました!!!!!!!

f:id:ryoutaku_jo:20190331171110p:plain

www.amazon.co.jp

今までサポーターズさんの勉強会には何度か参加していますが、
一度も当選した事が無く、何故か倍率の圧倒的に低い今回当たるという奇跡(笑)

軽く全体を読みましたが、エンジニアとして駆け出したばかりの自分でも
ある程度理解出来るほど噛み砕いた解説がなされていて、非常に読みやすかったです
(理解できたとは言ってない・・・)

これで「言語のしくみ」を理解するという新しい目標を得る事も出来ました!

これらかも、まつもとさんの様な尊敬出来るエンジニアに近づける様に、
日々努力を積み重ねたいと思います!!!

《今日の学習進捗(3年以内に10000時間に向けて)》

学習開始からの期間 :113日
今日までの合計時間:1062h
一日あたりの平均学習時間:9.4h
今日までに到達すべき目標時間:1032h
目標との解離:30h
「10,000時間」まで、

残り・・・「8938時間!」