サクッとイベントメモ：まつもとゆきひろ氏　特別講演】20代エンジニアのためのプログラマー勉強法 

## 0. 経緯
サクッと夜中のテンションでまとめました。

以前から参加していたサポーターズのイベントでたまたまタイトルにあるイベントが開催されるということで、興味本位で参加しました。

閲覧総数300人超（ネット中継含む）ということでなかなかの総数のイベントでもあり、参加抽選も発生していました。

キャンセルの方や予定が合わずに参加できなかった方も結構いたと思われますので、そういう方向け、そして自分の備忘録としてもここに残しておきます。

要所要所で補足も入れていますのでご参考までに。

もしも参加された方でミスリーディングしているよってとこがあったら編集リクエストをよろしくお願い致します。

*２時間のイベントだったので非常に長くなってしまいましたことはご了承ください*

## 1. はじめに
### プロフィール
まつもとひろゆき氏(Matz)はオープンソースプログラム言語の開発者です。

現在はHerokuに勤めながら技術顧問や講演、執筆等と多方面で活躍されています。

日本でもっとも有名なエンジニアと言っても差し支えないと思います。

### その他
・まつもとひろゆきがひらがな表記は差別化の為だったが、エゴサーチすると割とひらがな表記もヒットするらしい（ギタリストの方）

・Matzは氏がファーストネームで呼ばれ慣れてないのと海外の人が発音しやすい(=覚えやすい)ということで５秒ぐらいで考えて作った

・政府IT総合戦略本部委員だけど、意見が反映されていないと、島根に住んでいるのに年１で首相官邸に呼び出されるから結構大変

## 2. 勉強とは
・ミスリーディングしがちなキーワードとして「勉強」を取り上げる
→メタファーであり実は社会では学生の勉強法が通用しないから

・「勉強」ということを抽象化して再構築して考える
→詳細に踏み込まないことで理解しやすくする
→人間は複雑な思考はできず、7つしか概念を考えられない
→背景知識の活用
→類似性からパターン抽出
→簡潔化

・アーキテクチャ宇宙飛行士になる可能性 
*参考：[躍進を続けるアーキテクチャ宇宙飛行士たち - The Joel on Software Translation Project](http://local.joelonsoftware.com/wiki/%E8%BA%8D%E9%80%B2%E3%82%92%E7%B6%9A%E3%81%91%E3%82%8B%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E5%AE%87%E5%AE%99%E9%A3%9B%E8%A1%8C%E5%A3%AB%E3%81%9F%E3%81%A1)*
→いろんなケースを抽象化して考えるとどんどんと空に浮き上がってしまう
→over simplify(過度な簡素化)を招いてしまう恐れ
→抽象化はしばしば違いを無視してしまうから

## 3. 違い
### 例えば

1. 学校の勉強は満点があるが社会は存在しない<br>
*参考：[学生は100点を目指せ、社会人は100点を目指すな！- IT Media](http://www.itmedia.co.jp/bizid/articles/0903/02/news030.html)*

2. 苦手克服することよりも得意を伸ばし成果をあげること、それが周囲との差になる
→一つのスキルに特化して成果をあげられるのであればそれで差別化できる

3. 全てを記憶するのではなくインデックスとして活用し把握する能力が不可欠
→わからなければ調べればいい
→ググるの禁止な会社は辞めましょう

4. 試験のための勉強ではなく、明日や将来のために勉強する必要がある

5. 点数という一次元的評価ではなく、成果や本人の特質など多次元的に評価される

6. 働くことがメインで勉強することはそのサブセットである

7. 社会人の勉強は間接的でなく直接的に業務で繋がる可能性が大きい

8. 知識は安定しておらず、現在学んでいることが明日陳腐化する変化リスクがある

<strong>
  "こんだけ違うんだから一緒と考えるのは意味がない"</strong>

## 4. なぜ「勉強」するのか
### 例えば
・成功したい
・高収入が欲しい
・良好な人間関係が欲しい
・嫌なことはしたくない
・好きなことで生きていきたい

#### 達成する為の条件 
・高評価
・尊敬される
・尊重される
→これがあるとハッピー
→ついでに成功しやすくなる

<strong>
  "勉強の目的は「尊敬」「尊重」されたいから"</strong>

## 5. 5W1H
### How to what to study?
・内省(self-reflection)
→自分を見つめる
→座って考える

・走り出すのは楽
→走り続けるのが大変
→走る前に考えるのは大切

・好きなことは上達する
→苦手をなくすことは意味がない
→平均値、偏差値とかは関係ない

## 6. パターン認識の時間
・成功した人はパターン認識能力が高い
→過去の成功や失敗を活用するから

・尊敬する人のパターンを考える
→近親者を尊敬することができる→
=身近な人の良い面を見れる人

・人は知らない人を尊敬できない
→尊敬されるには知られないといけない
→尊重は人格無関係でないがしろにされないことなので尊敬とは違う

・人は本質的にミーハー
→出会うと謎の嬉しさ
→それは尊敬してなくても起こる感情

・知名度は価値と可換
→成功のためには有名にならなくてはならない
→「有名である」≒「価値がある」
→循環論法になってしまう

・キャズム理論
*参考：[IT用語辞典：キャズム-IT Media](http://www.itmedia.co.jp/im/articles/0706/01/news142.html)*
→マーケティングの理論
[少数派]
イノベーター
アーリーアダプター

ーキャズム（峡谷）ー

[多数派]
アーリーマジョリティ(実利主義者)
レートマジョリティ
ラガード

→新規サービスや製品、技術は少数派には受け入れられても、多数派のアーリーマジョリティとの間には大きな溝=キャズム(峡谷)がありこれを解決する必要があるということ

・方法はある
→ニッチに進出
→横展開を実行

・勉強の成果をアウトプット
→ユニークさを強調
→「埋没しない」ことが重要

## 7. Matz氏の自分語り
・プログラミングが好きで興味もあって、得意だったので大学ではコンピュータサイエンスを選択した。

・就職で絶対に譲れなかったこと
1. 東京に住まない
→地方出身、地方大学なので
<br>
2. 尊重してもらえる環境で働きたい

・就活結果として
→新入社員200人中6人のCS専攻
→経験者6人は尊重されるし埋没しない

・働いてから
→ツールではなく言語やフレームワークなどのより下のレイヤーに力を入れたくなった
→自分が構築するので高い裁量度
→業務の8割の時間をフレームワークに
→周囲の生産性も高める

・バブル崩壊
→チーム解散&閑職へ
→でも割とハッピーだった
→人間関係、嫌なことない

・でも仕事がない
→誰にも管理されない
→誰も見ていない

・そうだなんか作ろう！
→Rubyを開発
→インターネットで公開
→ユニークであった
→ニッチに進出
→局所的有名人になることに

・現在
→給与収入は7割、顧問2割、講演1割が現在の状況
→時間と収入は無関係だなと実感

<strong>
  "嫌なことはしたくない"</strong>

## 8. 「あなた」はどう勉強するか
1. パターン認識
2. 内省(self reflection)
3. インベントリ(棚卸し)
以上を軸として再度検討してみると

・ハンバーガー屋のアルバイトにて
→午後の売上見込みを予測し作り置きを作る(売れないと廃棄)
→どこまで妥協するかどこまで意地をはるか

・就活では妥協できなかった
→妥協できないけど、結果的に幸いだった
→運がよかったけど、運を良い方向に転がすようにする必要がある

・予想は外れるもの
→未来は外れるから決めたことも変えてもいい

・未来・将来
→考えてもわからないから無駄

<strong>
  "自分の傾向を考えるべき"</strong>

## 9. 具体的な話
### モチベーションの保ち方
・好きなことはほっといてもやるので管理しなくて良い

・漠然とした希望(役立つかも、金になるかも)に人間は弱いので、それよりも好きである、興味があるという方が強い

・暇、退屈であるということは注意報であり、良い状態ではない為、暇を撲滅する必要がある

### 時間管理
・どうやって時間を作るかは優先順位をつけること

・プライベートを犠牲にしない必要がある
→生産性を高める=忙しすぎない状態に追求する必要がある

・本質的には仕事の中で勉強するのが良い
→生産性を高めて残りの時間で勉強する
→生産性を高めるために勉強することを認めない会社は滅びる必要がある

### アウトプット
・勉強会に出席するだけでは差別化にならない

・高いハードル＝心理的障壁
→アウトプットする→繰り返し→楽になる
→アウトプットによって成長することができる

### 可塑性
・アウトプットによって人間の変化しやすさが形成される
→FacebookのMark Zuckerberg（元悪ガキ）とかSales ForceのMarc Benioff（元極小ベンチャー）とか

・人は置かれた環境に合わせて変化する
→プログラマから人間関係に興味が出てきた→マネジメントをやる＝変わったということ
→新しい可能性を発見した＝自分は固定的じゃない

・ゆっくりだが変化する
→予想もしない方向でという可能性もある

## 10. 最後のアドバイス
・変化しずらい基礎を身につける必要がある
→アルゴリズムの概念などのコンピュータサイエンスの知識

・必要なレベルで英語を身につける
→コミュニケーション、知識、タイムマシン経営ができる
→ガラパゴスを出る
→完璧を目指さない

・コンフォートゾーンを出ること
→成長がない
→普段ならやれないようなことをする
→変化を恐れない訓練

・誰かを見下さない

<strong>
  "自分にあった勉強法を身につけるべき"</strong>

## 11. 質疑応答

ルール：基本的にはTwitterで#プログラマー勉強法のハッシュタグ付きで質問すればそれに関して返すという形


・現状で得意な技術がない
→始めたばかりでは当たり前のことなので、インベントリをすることで繋がるかもしれないよ

・フルスタックは目指す必要はあるか
→全部均質にできる人はいない(いても少数)と思うので得意を伸ばそう

・内省をやめて走り出すタイミング
→自分で決めて、面白くなくなてきたら走りだそう。本気で考えたらおk

・人生を変えた本
→「7つの習慣」は役に立った。言語を作るきっかけは「バベルセブンティーン」。
参考：
[完訳 7つの習慣 人格主義の回復 | スティーブン・R・コヴィー, フランクリン・コヴィー・ジャパン | ビジネススキル | Kindleストア | Amazon](https://www.amazon.co.jp/dp/B00KFB5DJC/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)

[Amazon | Babel-17 (S.F. MASTERWORKS) (English Edition) [Kindle edition] by Samuel R. Delany | Science Fiction | Kindleストア](https://www.amazon.co.jp/dp/B004BDOJMC/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)

・日本のIT業界どうなってほしいかと盛んになってほしい分野
→ブラックが撲滅されるといい＝我慢はブラック延命になってしまうのでやめてください
→ドメスティックよりはITのインフラになるサービスが出てきてほしい。Google Firebaseはいい感じ。

・社内の勉強会の注意点
→こういう風にしなくちゃいけないというのはやらないかな
→ゆるくやることが大事

・ITの売り手市場はいつまで続く？
→当面は続くけど、日本全体がその前に沈むと思っている
→コンピュータの需要は続いていくでも日本企業がオワコンになる可能性

・具体的な勉強法・英語習得法
→実践あるのみ。一応基礎あった。パターン化されてわかってくるようになる。
→時間があるときは情報収集している

・情報収集はどこで？
→RSS Readerで流している
→主にはHacker Newsとredditを見ている
参考：
[Hacker News](https://news.ycombinator.com/)

[reddit: the front page of the internet](https://www.reddit.com/)

・地方でエンジニアをする恐怖
→当時はあったけど、結局最新情報は英語なので関係ない
→仕事をするかは結構重要。フルリモートか分社してもらうかを選択肢に考えたりとか。

・注目している技術
→ブロックチェーンは興味を引かれはしない
→結局プログラミング言語に興味がある

・海外で勉強したいけどどうすればいい？
→アメリカでビザ取るのは大変（トランプのせい）
→H1Bを企業に取ってもらえるように技術や主張をできるようにしなくてはならない
→最近はアメリカの大学に入って卒業した後の猶予期間を使って就職する方が確率は高いということも

・コンフォートゾーンを出るタイミング
→他人は無責任だからそのタイミングは自分が責任を持つ必要がある
→リスクとメリット、可能性は誰にも強制されてはいけない
→なのでそれは答えられない

・東南アジアが発展する中でその土壌でビジネスするには
→それぞれの国に可能性がある
→そのものがマーケットと捉える必要がある
→平均年齢が低いので可能性が多い
→技術セットは変わらない
→海外スタートアップは日本ではなくアメリカなどを見ているので日本人としてのバリューをどうやって出していくかは肝

・Matzが20代になったら
→またプログラミング言語を作っている

・未経験からプログラミングを勉強するには
→プログラミングに関して面白いと思えるかが大事

・ユーザー系のSEは変わっていくのか？
→自分たちで開発できるようになった方が良い
→試行錯誤の過程と開発のロスは勿体無い→ビジネス貢献度が下がる

・レイヤーによって有名になる難易度は？
→低レイヤー(プログラミング言語作ったりフレームワーク作ったり)の方が有名になる可能性がある
→アプリケーションは実際に使われるものでないと厳しい

## 12. 感想
まつもとひろゆき氏の人柄がわかるイベントであったという印象です。

参加者はほとんどが20代のエンジニアや学生、エンジニアに興味がある方々だったので、その方々の目線に合う形で話されていました。

特別なことではなく、氏の経験から冷静に「勉強する」という概念を普遍的・基礎的なプロセスに落とし込んでいた内容でした。なので言葉も非常に平易で理解しやすかったです。

逆にこれだけ普遍的な事をエンジニアとして有名で実績のある方があえて語ることができるという点で、氏の力量の底深さを感じ、畏怖を覚えました。（僕だけでしょうか？）

現状、エンジニアとしては２年目で、まだまだ出来ることの方が少ないですが、エンジニアという職業自体は「好きだな、楽しいな」と思えるので、一度インベントリを行なってさらに生産性を上げられるようにしてみようと思います。

今思いつくのはこんな言葉です

<strong>
  "謙虚に、しかし貪欲に"</strong>

それでは明日も楽しくコーディングしましょうかね。

（サイン本＆２ショットの抽選当たってしまって、すっとんきょんな声を上げたのは最後に書いておきますw）