Matz氏講演会「学生エンジニアの生存戦略」

# イントロダクション
サポーターズの学生向けクローズドな[まつもとゆきひろ](https://twitter.com/yukihiro_matz)さんの講演会行ってきました。以下備忘録的まとめ。私のバイアスがかかっているので、以下の文章はパターン化して読んでください。

## Matzさんの名前がひらがなな理由
=> 他の「まつもとゆきひろ」との差別化？？
グローバルで「Matz」な理由…ファーストネームで呼ばれるのが嫌だ

` 「差別化」って難しいよね`

# 生き残るために必要なのは「死なないこと」
- デストラップに引っかからない
- 就職活動でどう生き残るか

## エントリーシート…最悪の発明！！
### **人の生活を良くするためのもの**が本当の発明のはず
- その人が企業に興味があるのかないのか？？わからない
- 企業は**何万**ものエントリーシートをさばく
	- 本当にその会社に興味のある人を取りこぼすという。皆同じに見える。誰が本当に興味がああるのかわからない

### 就活に対する無力感
- 生き残ることが大切(当たり前なようで実は難しい)

## 人によって違うバックグラウンド
### 成功できるかどうかのメソッドは人によって違う
- 年を取るとドラマティックな体験が強調される。誇張される。自書伝などは誇張されて書かれていることが多いので、パターン化に止めるのが大事

## メタ戦略
…　つまり、**一段高い抽象化**が必要

## パターン認識
考え方、戦略の立て方のパターンを**自分に当てはめる**
### 成功者の得意なことはパターン認識能力
- 成功パターンを認識して自分に当てはめること。同じことはできないけれど型をつけること
- バタフライエフェクト
	- 小さな差分が気づかぬ間に大きなものになっていく

# Matzさんの人生
ひたすら本屋にいく=> 本屋の息子だと思われる

## 15歳でポケコンでBASICプログラミングpc-1210
### ポケコンベーシック
- 400ステップしか入力できない
- ユーザー定義関数なし
- 変数名が1文字だけ
- すぐに辛くなる
- 配列が精一杯

### Pascal入門に出会う
- Cと同じくらい人気の言語だった
- 紙で書いて頭でコンパイル
- *こんな素晴らしい言語が…!*

## 様々な言語が様々な目的を持って作ったもの

Lisp,Logo,Smalltalk…高校に入って、世の中にはいろんな言語があることを知る
- *こんなにあるなら自分が言語作ってもいいのではないか…？*

### 本「やさしいコンパイラの作り方」
- やさしく解説している本かと思いきや**シンプル(優しい)な言語**のコンパイラを作りましょうだった
- **「紙とペンがあればプログラミングができる…!」**

## 大学へ進学
- ***「ここは天国か」***
- プログラミング言語の研究室に配属
- 研究室では既存言語のコンパイラを作る(最適化する)
- トランスレータを作った
	- 誰もやらない中、特別に卒論でプログラミング言語を作る

## 就職活動
- 通勤の苦痛
- 浜松の会社に就職
- 同期200人、うちCS専攻6人
    - *「すごいよかった」*
    - => CS選考出身が少なかったため自分の裁量権が大きかったから

## 社内システム開発
- 周りに優秀な人たちがいる

### 「どうあるべきか」を自分で考えることができた
- クライアントは自分たちの会社
- 全行程のプログラミング開発
- 自分の決める権限がない下流工程のIT企業社員は確かに不遇
- 自分でコントロールできるのはラッキーだった

## スーツ
### 「みんながやっている」は我慢の理由にならない
- 日本的「我慢の価値」＝>悪
- hang in there- 耐える…あんまりいい意味じゃないよね

### 目的のある我慢
- 社会的圧力での我慢　<　目的のための我慢
- 納得できない理由には拒否すべき
- 目的ある我慢(勉強)をすべき

 
# プログラマ三代美徳
## 怠惰
	楽になるためには苦労を厭わない
	自分の仕事をコンピュータに押し付ける
## 短気
	コンピューターが怠慢に対する怒り
	改善がトータルの生産性を上げる
## 傲慢
	自尊心
## その逆
### 勤勉
	 苦労や我慢が付きまとう
	 無意識の怖さ
#### 我慢することの価値を無自覚にしている
	 労働は我慢ではない
	 報酬は価値の対価
	 上から下まで勘違い社会
	 理不尽の拒否しなければいけない
	 
# みんながやっないやってもいいこと
## 我慢しない
- 裏技みたいなことがあると喜んで使うべき
- 目的に到達するための努力はどうするべきか

## 空気を読まない
- 求人数が多いからこれをしよう？=>それは違うし差別化にならない
    - みんなやってるから

### 目的を明確化する
- どんなことでも**意図的にやる**
- ex 東京で働くのが嫌だ。QOLを優先しよう
- 成果をあげる
- 価値観にアプローチ

## 理不尽に声を上げる
- 上下関係に敏感で、上のものには絶対に従うという価値観はどうなのか？
- 上司は自分を管理しているのでアサインするけれども、組織化したいから指示を出しているだけであって、上司が「偉い」わけではない
- 理不尽に従わなくても良い
- リスペクトできる関係を構築する

### WinとLoseの関係
- WinWinかNoDealかの二択である
    - LoseLose、WinLoseはない
- 損するなら取引しない
	- 「逃げてもいいんだ」と思うこと

# あなたの場合に置き換えて言えること
## 我慢に価値を置かないこと
- 身を結ぶから我慢するという目的があるか

## 自分を知る
- 人間にも棚卸しが必要である
    - 何ができて何が学べるか、何に興味があるか、何が得意か
        - 自分は自分のことを意外と知らない

## プログラミング言語
- 作りたいってどういうこと？
    - プログラミング言語を作りたい人が少ない中で作ったので、高く評価された
        - 競争相手が少ない

## 継続すること
### Matzさんの場合「Rubyひとすじ25年」
- こっちにいけば幸せになりそう
- (社会的圧力に対する)鈍感さ
	- やんなくていいじゃんという

## 思い込みに鈍感になる
- 思い込み(キャッシュ(RAM))
	- キャッシュの無効化がコンピュータで大事
- インバリデーションのないキャッシュ
	- 昔は理由があったかもしれないもの(行為)もだんだんと理由がなくなってくる 
	- 意識的キャッシュインバリデーションが必要
	- バグ原因の95%は思い込み
- プログラマの仕事は問題解決
	- 問題把握
	- 問題分析ソリューション提案
	- ソリューション実装
	- テスト
	- 改善
- よくやる失敗は何か
- 同じ原則を人生に適用
	- (原理上は)プログラマーは人生の勝ち組になれる！

## インプットとアウトプット
### 勉強する(インプット)
- Qiita??
- はてブ？

#### ただ、差別化要因にならない

### アウトプット
- 適切な場所でアウトプットする
- 人間の可塑性にかける
- 高収入芸能人、ユーチューバー 笑

#### 「Youtuberなんてあんなの誰でもできる」
- 半分本当
- 違いは「心理的障壁」を乗り越えているかどうか
- 恥ずかしいから、億劫だからやらない人が多い中でアウトプットしたことが差別化になった
- アウトプットは案外「思い込み」と同じ心理障壁がある！
- クオリティはとりあえず棚上げ

#### 心理の怖さ
- 心理的側面に興味を持つ
プログラミングは機械に向かっているように見えて、プログラム自体は人が使うものであるので、人を見ている

# 質疑応答
- 自分の裁量を大切にする
- 失敗というより状況が変化していく中で、それに適応していく

### Ruby-スクリプト言語いらない？ => 良すぎる？
- それでも不安や恐れを乗り越えて公開しよう
- 一歩踏み出してみると実は大したことなかったなって思うことが多い
- おかしいなと思ったことをアウトプットする

- プログラミング言語を実装することはコンピューターサイエンスの遭遇芸術

# Rubyのパパ、Matzさんは「Ruby」を息子だと思っているのか？娘だと思っているのか？
- MatzさんはRubyを「娘」だと思っている(「Ruby」が女の子に付く名前だから)

ps.生Matz始めて見て興奮しました
=> [このことに関するブログ](http://koya.hatenadiary.com/entry/2017/09/19/213033)