雑な感想とメモ【まつもとゆきひろ氏特別公演】若手エンジニアの生存戦略 @DRECOM #colab_matz 20170520

若手エンジニア()なのでMatzさんの若手エンジニアの生存戦略というサポーターズさんの講演に行ってきた。

※あくまで自分の備忘のためかつ、発表を聞きながらとったメモなので注意。


感想 ミーハーなのでMatzさんを見ただけでテンションが上がった。

ロールモデルを持て、みたいなことをよく言われるけど、確かに人と同じようにキャリアを歩むことは不可能だなという感じ。
で、そうするとパターンが重要ということで、今回はMatzさんのこれまでのキャリアの話を聞くことができたが、もっといろんなパターンを聞きたいなと思った。そういう本とかあるのかな?

言語を作りたい、と言うと怪訝な顔をされるとおっしゃっていたが、エンジニアについて興味を持ってから、Matzさんをずっと知っているし、 職場のもっとも近しい先輩が〇〇言語、と自分の名前を冠した言語を作ったことがあると行ったような話をしてくれていることもあり、意外と僕も力があればして見たいなと思うことだけどな、と思った。

我慢は価値ではない。
という話をしきりにされていたが、残業しているからといってその人が評価されるといったような文化は本当に良くないと思う。
ただ、そういう文化はどんどんなくなってきているんじゃないかなと感じていて(特にIT系の企業やスタートアップについては)、残業という文脈でいうと生活残業であったり、家に帰りたくないから残業する、といったような人がいるのはまた別の問題としてあると思っている。ちゃんとした価値が評価できる環境を作るのはどうしたらよいか、というのが、これからの(これまでも十分議論されているかもしれないが、)主な問題だなと思った。

怠惰が重要という話があったが、意識的にしないといつも忘れるなと思った。
自分がやっている作業をコマンドにしておくとかについてはコードを書くのが楽しくてやる気持ちが強いけれど、他の人に説明するのが面倒でドキュメントを書く、というのは、本当に意識をしないと忘れてしまう。
web系はもっとドキュメントをかけ、みたいなことをt_wadaさんがつい最近言っていたというのをどこかで読んだが、肝に命じなければならない。

僕は転職を進めるようなpodcast(楽しくて仕方がないラジオ)をしている(Matzさんが推奨しているアウトプットだ!)ので、そこでも似たようなことを話しているのだが、理不尽な環境に置かれたら転職を考えるというのは普通にもっと選択肢として上がっていいと思う。
クライアント(時には上司になる)と開発者(自分)は対等でないとダメだし、Win-Winの関係でないと、やる価値がない(No Deal)。この指標は非常にいいな、と思った。(前職の富士通ではwin-win-winとか言っていたな)

問題を解決するということがエンジニアの仕事だ、と言われることがあるが、人生にも当てはまるから、それだけでエンジニアは人生の勝ち組になるという意味で強いというようなことを言っていたが、そういうふうに思ってとりあえずやっていこうと思えた講演だった。

過去のMatz氏関連の主な記事

まつもとゆきひろ氏がSpeeeで語った、勉強会・英語・プログラミングの話 まつもとゆきひろ氏が「生涯プログラマー」でやっていきたい若手に贈る3つの言葉


以下メモ

こんな目的をもってやろう

  • Matzのご尊顔を拝む
  • エンジニアとしての行き方を学ぶ
  • 何かを始めるきっかけにする

協賛企業

  • Speee (Matzさんが顧問)
  • DRECOM

本編

自己紹介

まつもとゆきひろ(Matz)

  • 松本は鳥取で5番目に多い苗字なので差別化を図ってひらがなにした
  • こちらも差別化を図ったのだが、ドイツとかスェーデンにはMatzという苗字の人がいた
  • 日本人で一番有名なエンジニア
  • 政府IT総合戦略本部委員(プログラマ代表、意見が通るわけではない)
  • 松江市名誉市民

生き残るには

  • 死ななければ良い(本気)
  • デス・トラップ、たやすく絡みつく死の鎖

人によって違う

自分の生存戦略を見出すための戦略を話す(メタ戦略)

スタートアップ業界において成功する人が共通に持っているものは何か?という調査で明らかになったこと

IQが高い? → 実際には相関はそんなにはなかった
パターン認識能力を意識的に鍛えることによって成功できる!!?

ロールモデルを持つ、ということ

スティーブ・ジョブズなどと同じことをしても、上手くいかない
人と全く同じことはできない

バタフライ・エフェクト 誰かと全く同じことをしても、いろんな違いの影響によって結果は予測がつかない
そもそも自伝などを読んでも成功のために何をしたかは本人も覚えていない

だから、パターン認識

Matzの場合

12d歳でボードマイコン遭遇(L-kit16)

Lチカしてた

15歳でポケコン遭遇(ポケコンBASIC)

400ステップのメモリ ユーザー定義関数なし 変数が1文字しか使えない ローカル変数はなく、グローバル変数の26個しか作れない

Pascal入門」(工学社)に遭遇

紙にプログラムを書いて勉強

プログラミング言語に興味

Lisp, Logo, Smalltalk 言語自体に興味、言語を作りたいなと思った

大学進学

コンピュータサイエンス
筑波は都会
プログラミング言語を作りたいというと、怪訝な顔をされる
当時はプログラミングしている人の3割くらいは言語を作ることに興味があるとおもっていた → そんなことはなかった
とはいえ、地元に比べると、大学のあった筑波は「ここは天国か」という感じだった

プログラミング言語研究室

卒業研究で自作プログラミング言語を作ったら、教授と反発して、卒業発表で一番辛い質問をされた

就職が苦痛

浜松の会社に就職、寮から徒歩五分
同期200人でコンピュータサイエンスの専攻6人しかおらず大切にしてもらえた → 社内システムの開発
当時他の人の働き方はやばかった(残業160時間?)

クライアントのものを開発するわけではなかったので
開発しているシステムが「どうあるべきか」を決めることができた

スーツが嫌
「みんながやっている」は我慢の理由にならない
「我慢」の価値
我慢することが価値を出しているような社会になってしまっている
「俺も我慢してるんだからお前も我慢しろ」
価値を出さなかったらビジネス的に全く意味はない

理由のある我慢
  • 納得できない理由を押し付けられるのは理不尽
プログラミング三大美徳 by Larry Wall

1.怠慢(Laziness)
全体の労力を減らすために手間を惜しまない気質。
この気質の持ち主は、役立つプログラムを書いてみんなの苦労を減らしたり、
同じ質問に何度も答えなくてもいいように文書を書いたりする。
よって、プログラマーの第一の美徳である。

2.短気(Impatience)
コンピューターが怠慢な時に感じる怒り。
この怒りの持ち主は、今ある問題に対応するプログラムにとどまらず、
今後起こりうる問題を想定したプログラムを書く。
少なくともそうしようとする。
よって、プログラマーの第二の美徳である。 

3.傲慢(Hubris)
神罰が下るほどの過剰な自尊心。
または人様に対して恥ずかしくないプログラムを書き、
また保守しようとする気質。
よって、プログラマーの第三の美徳である。

反対は?
  • 勤勉: 苦労を我慢する。他人が勤勉であることに価値を求める
  • 寛容
  • 謙遜

「我慢」の価値
無意識の価値構造

労働することは我慢することではない
報酬 <> 苦痛の対価
報酬 == 価値の対価

上から下まで総勘違い

会社が自分を養っているという誤解
会社に反抗するのはまちがっているのは本当にダメなことだろうか?

  • 「結果よりも過程」
  • 「生産性よりも忍耐」

理不尽は拒否しないといけない
理不尽を断れなくなること = 「死の鎖」

我慢による苦痛への耐性→鈍感になる
致死量は変わらない

怖い話をしたが、ポジティブ思考に考えると

みんながやらない、やっても良いこと = 裏ワザ
楽をして少しの労力で結果を得る
そのためには…

  • 空気を読まない
  • 目的を明確化する(本質ではない目的には目を向けない)

Dont work hard, Work smart.

どうやって理不尽を拒否するか

価値観にアプローチ
話が通じない人に通じるようにすることはなかなかつらい
社会的圧力を自覚する
理不尽に対して声を上げる
リスペクトできる関係を構築する

開発者とクライアント(上司の場合がおおい)が対立構造となることが多い
仕事の価値でいうとその対立構造は無駄にしかならない

Win-Win 7つの習慣
WinとLose

  • Win-Win
  • Win-Lose
  • Lose-Win
  • Lose-Lose

4種類もない!
ビジネスの現場では2種類しかない
- 2人ともWin (Deal) - どちらかもしくは両方がLose (No Deal)

(死なないために)逃げてもいいんだ!(場合によっては)

あなたの場合

平気平気フレンズにとっていんな得意なことが違うんだから

メタ戦略
  • 得意を見極める
  • 我慢に価値を置かない

プログラミング言語を作りたいってどういうこと?って言われる
違い自体がメリット

  • 継続することが一番重要 Rubyひとすじ25年
  • 勘が働く「こっちにいけば幸せになれそう」(センスが必要?)
  • (社会的圧力に対する)鈍感さ

cf. イミテーションゲーム アランチューリング 暗黙のプロトコルがわからない

あなたの得意は?
  • インベントリ(棚卸し)
    • 何が得意で何が得意でないか
    • 得意なものを組み合わせ価値を出す(複数なジャンルを組み合わせることによって価値を出せる)
思い込みを自覚する
  • 身の回りには思い込みが沢山ある
  • キャッシュ
  • 時代や状況の変化によって思い込みは変わる
  • Phil Karlton cache
  • 思い込み = インバリデーションのないキャッシュ
  • バグ原因の95%は思い込み

There are only two hard things in Computer Science: cache invalidation and naming things. – Phil Karlton

問題解決をする

プログラマが日々行っていることは人生にも適用できる プログラマは人生の勝ち組!

インプットとアウトプットのバランス

勉強する
Qiita
はてブ

インプットは必要
でも、インプットするだけでは差別化要因にならない

鍵になるのは、 アウトプット

  • OSS
  • ブログ

高いハードル、心理的障壁

  • まさかり
  • 面倒・億劫・羞恥心

高収入芸能人やユーチューバーを見て「あんなの誰にもできる」は半分本当
しかしながら、思い込みと同じ心理的障壁によって多くの人にできない

みんなと一体になっている方が良いというのは過去のキャッシュ
クオリティは棚上げ

人間の可塑性に、かける
OSSのかなりの割合は自分でもできる、ということが多い

ずっと機械に向かっているわけではない

ソフトウェアを作るのは人間
ソフトウェアの対象は人間

心理的な問題は重要
心理的側面に興味を持つ

若手エンジニアの生存戦略

  • 理不尽を拒否
  • 鈍感になる
  • プログラミングを極める
  • 人間心理に興味を持つ

プログラマは人生の勝ち組

勝ち組になろう

質問コーナー

勤勉に価値を置く上司を潰すには?

価値観を覆す
その上司がどのくらい邪魔か、による

  • 成果によって黙らせることができることもある
  • 成果なんかどうでも良いという人もいる

上司に上司の話をする

やめることによる上司の教育

Matzの失敗談(恥ずかしさ)

首相官邸でのミーティングでジャケットパンツでも大丈夫なのであんまり失敗はない

1日中Rubyのことを考えているのか?

正月にコミット 結構考えている 3大バグ見つけるタイミング

  • 散歩
  • 風呂
  • 寝る前

Matzが読む本オススメ

  • ソフト・スキルズ
  • エラスティック・リーダーシップ
  • 言語のしくみ

大学に行く価値

Rubyは便利なメソッドがありすぎるので、裏側を知る必要のある初心者には向かない論について

  • 裏を知らないといけないというのは老害
  • 全員が裏側を知らないといけないわけではないんじゃないか?

今20代なら勉強したいこと

  • 勉強に年齢は関係がない
  • 新し目のトレンドについて、それがなぜ出てきて、なんで流行っているのかを知る、使うかどうかは重要
  • 例えばkotolinがなぜ出てきたかは知りたい

楽をして価値を出す

  • やるべきことをリストアップする
  • 小さなことを積み重ねて生産性を上げる
  • 小さなことを続けて信頼関係を気づけたら、自分のできる範囲を広げて行く

SIer業界や大手、そして海外は?

  • SIの全てがダメというわけではない
    • 構造上対立構造を生み出しやすい(クライアントと開発)いいものを
    • 対立構造を生み出さない仕組みを作り出すことが重要
  • 海外の柔軟な雇用
    • 対立構造を産みにくい
    • しかし日本的な仕事をする会社もある

我慢の根源

  • 戦前、戦時中、武道の中で我慢を求めることがある