まぁ、つまらないものですが

エンジニニャーの気ままな技術ブログ、日々のログを残してゆきます。

【まつもとゆきひろ氏 特別講演】20代エンジニアのためのプログラマー勉強法に行ってきたよ

まつもとゆきひろ氏 特別講演】20代エンジニアのためのプログラマー勉強法

とりあえず公演中の走り書き リライトしたらQiitaに上ます。誤字脱字は許して

概要

Matz流 プログラマー勉強法を20代エンジニアのために特別公開!!
Rubyの父として知られるまつもとゆきひろ氏を講師として迎え、

20代のエンジニアたちに向けた特別講演を行って頂きます。

テーマは、「生涯エンジニア」を目指す20代エンジニアに贈る"技術"との向き合い方。

テクノロジーの進歩により、技術の陳腐化が早くなるこの世界で、

次世代を担うエンジニアは技術とどう向き合うべきか。

プログラミング言語を日本でただ一人生み出したまつもと氏だからこそ語れる

独自の視点で、"技術"との向き合い方、磨き方をお話いただきます。

20代でするべきプログラミングのインプット、アウトプットとは?

エンジニアとして生き残るために必要なこととは?

実際にまつもと氏はどんな勉強法を実践してきたのか?

当日はこのようなお話をして頂ける予定です。

すでにエンジニアとして働かれている方も、これからプログラミングをはじめる方も

全てのエンジニアに聞いて欲しい特別講義です。

自己紹介

Rubyアソシエーション理事長 heroku

まつもとゆきひろ アイコンはナンかのサービスで作ったんだけどどのサービスなのか忘れた 名前はありふれていてよく間違われやすい 英語圏matzで。

1990年に大学卒業とともに職業プログラマーに 自分の息子がこの間26歳だからちょうど父親世代です。

20代エンジニアのためのプログラマー勉強法

勉強とは?

タイトルとしては意図的にミスリーディングさせました。
学生のときに勉強したよね? 勉強とはメタファーである。
過去のモノの自分に当て生えていく。 抽象化する。 詳細にふれない。概念として扱える。ため理解しやすい。

人間はあまり複雑なモノを扱えない。
人工知能だったら問題ないだろうが、人間には複雑なものを理解しづらいので抽象化して理解していく。
背景知識の活用、学校卒業ごに勉強するときに簡潔にしたり類似性からパターン抽出していく

しかし抽象化は万能ではない

アーキテクチャ宇宙飛行士 抽象化して高いとこに行こうとすればそのうち支えなく飛んでいってしまう

抽象化のモレ 抽象化のために違いがモレていく

数学と英語の勉強法が同じでいいのか? 社会人と学生のための勉強がおなじでいいのんか? 実際違う 今回はこれがテーマ

違い(学生 vs 社会人)

満点 VS 満点が存在しない

苦手克服 vs 得意を伸ばす

満点が存在する学生は点数を伸ばすために苦手克服したほうが良いが、社会人はそもそお満点がないので得意なものを伸ばしたほうが点数が高くなる KW: 「好きこそものの上手なれ」

若手も年寄りもみんな学校教育に引きづられているから苦手を潰す戦略を取りがち。 だけどそれは合理的じゃない

記憶 vs 把握

学生は点数を取るために記憶することが重要だが社会人は必要になれば調べればいい
把握してインデックスを貼っていく 必要になったら取り出せるようにする 詳細がひつようならはggr えっ?グーグルの接続ができない職場?やめたほうがいいのでは? KW: 「グーグルはあなたの友です」

試験 vs 常在戦場

いつ使うのか? いつ役に立つのんかわからない

一次元 vs 多次元

評価される軸の数が違う
会社で通信簿とかないよね?パフォーマンスレビューはあると思うけど。
評価する次元が

メイン vs サブ

学生は勉強が本分
社会人はあくまでサブ活動として勉強しないといけない

間接的 vs 直接的

学生の勉強はいつ役に立つかわからないが社会人のは必要だったり使うから勉強する。

安定 vs 変化

教科書が急に変わることはないが、僕たちの業種は来年には変わってたりする。
JS周りは変化が早いし

なぜ勉強するのか?

こんなに違うのに同じ感じでしていいのか?

  • 成功したい
  • 高収入がほし
  • 良好な人間関係がほしい
  • 嫌なことはしたくない
  • 好きなことで生きていきたい

スキルセットが伸びればより良いことがあるはずと勉強するはず

確率を上げるにはどうしたらよいか?

  • 高評価
  • 尊敬される
  • 尊重される

5W1H

「人によって違う」

How to Whhat to study.

何を学ぶのかのヒントが与えていきたい

いちばん重要なのは「内省」座って考えること。 走り続けるのは大切。だけど、走る前にどこに向かって走るのかを考えるのが重要。

得意なこと苦手なことすぐに言えますか?

苦手なことを潰すのに意味はない。
満点は存在しないから平均値とか偏差値とか気にして意味ない

パターン認識は成功の秘訣

パターン認識によって成功パターンだったり、失敗を避けたりする。

尊敬するのは誰ですか?

両親

良い面が見れる人
最近娘が反抗期で辛い…

僕たちは知らない人を尊敬できない

尊敬と尊重

尊敬は人格お 尊重は人格を含まない

人は有名人に弱い
本質的にミーハー

一緒に写真とかサインとかほしいよね。尊敬しなくても実物に合うと何故か感動する

☓ 成功すると有名人になる? ○ 成功のためには有名人ならないといけない

「有名である」≒ 「勝ちがある」

けど有名人になるには成功しないといけない。 成功するには有名人にならないといけない?

マーケティングでよくある現象。 キャズム理論

顧客はいかに分類できる * イノベーター * アーリーアダプター * アーリーマジョリティ * レートマジョリティ * ラガード 上ほど新しいプロダクトに触れてもらいやすく下程さしずらい

アーリーマジョリティまでが遠い。
アーリーアダプターとアーリーマジョリティの間が「キャズム」と呼ぶ

最初にニッチに進出する

まずはニッチなところで成功する

横展開する

その成功を他の領域でも押し広げる

結局自分をマーケティングしないといけない 「埋没しない」が重要

高収入が目的ではないけど少ないと凹む…

得意なことを棚卸しする。

システムプログラミング、Unix プログラミング言語 コンピュータサイエンスが得意なことだった。

大学卒業のとき決めたこと 「東京にすまない」 「尊重してもらえる環境」 2k人ぐらいのとこに就職。採用の200人中6人がCS専攻だった。
→結果「埋没しなかった」

部署が社内向けツールのとこに。 「より下レイヤー」にすることにした。
アプリを作るとき作業時間を概ねフレームワークに費やした。それを横展開して生産性がアップ。

その後バブル崩壊
部署が解散、保守(閑職)に。 人間関係はよかった。嫌な仕事は受けなかった。そもそも仕事自体なかったしね。マネージャーは他のPJで管理されなかった。その暇な時間で作ったのがRubyの最初だった。ネットに公開。

した結果ユニークだった。結果としてニッチに新出した。ネットにいる人にとって「Rubyを作った人」になった。

横展開して ソフトウェアを作った経験、解決した問題やコミュニティで起きる問題とかは時を越えて共有している。 なぜならそれが「人間の性質」だから。

ブログTwitterで公開。それが仕事になっていく。

時間と収入はあんまり比例しない

ある程度超えたら割がいいかより満足するかで動くようになる。

内省

自分を理解できるのは自分だけ。
自分がときなことをしっかり棚卸し(インベントリ)して足を止めてどこに向かって歩くべきかを考える。

自分の在庫を真剣に考える。

  • 何になりたいのか
  • どこまで妥協するのか

「住む場所」「職業」
妥協できるかと思ったけどできなかった。結果的に良かったけど。

結果的に幸いだったけど運が良かっただけ。けど運に任せるのは嫌だよね。
だから確率を上げていこう。だけど予想は外れる。偉い人とか調査会社が書いてることとか著名なOSS開発者の予想も外れたりする。
決めたことは変えてもいい。未来は外れるからあまり考えなくていい。

考えるべきは自分の傾向、自分がどこを向いていてどこに行きたいのかをしっかり考える。

「抽象的な話の連続で僕たちがアーキテクチャ宇宙飛行士になりそうですねw?」

漠然とした希望

具体的な希望 やることがない、暇っていうのは自分にたいする注意報。 モチベーション管理ができてない。 暇を撲滅指定校。 時間の使い方は概ねその人の優先順位の高さになる。

「プライベートを犠牲にしない。」

仕事の時間を勉強に使いたいよね。生産性を高めて仕事の間に勉強する。
自分の改善のために時間を投資することをゆるさないところは多分あなたのことを尊重していない。 そんな会社は滅びたほうがいいよね。

短い時間で成果を上げていく。差し込みタスクとかするとモチベーション落ちて戻すのに時間かかる。時間を作るためにお余裕を持つためにお予想の3時間ぐらいかかると周りに言っとくとちょうどいいと思うよ。

アウトプットする

  • 面倒くささ
  • 羞恥心

「あんなの誰でもできる」
半分本当 youtuberとかもやろうとしたら誰だってできるが、みんなはやらない。 アウトプットするには心理的障壁を乗り越えないといけない。

アウトプットによってインプットが定着していく。
アウトプットを繰り返ていくと心理的障壁も減っていく。

人は変われる

人には可塑性がある。 マーク・ザッカーバーグもいたずらっ子だったが今じゃFacebookの代表だし。

プログラマーがある時マネージャーをやりたくなったりもする。

ゆっくりだが変わることができる。環境によって変化もする。それ予想親愛方向だったりする。

# 最後に ## 基礎を抑える コンピュータサイエンスもここ数年落ち着いてきている。 しっかりとコンピュータアーキテクチャを抑える。

## 英語 英語があれば18億人と会話ができる。
新しい情報にふれることができる。
タイムマシン経営ができる。 ガラパゴスをでる。

読むのが最低限 雑談ができるともっといいね。 登壇できるとサイコー。
語学は場数。才能とかあまり関係ない。
完璧を目指さない。

コンフォートゾーンを出る

幸せな空間(コンフォートゾーン)にいると成長しない。
普段やらないようなことをするために一歩踏み出す。
変化を恐れない訓練をしよう。

誰かを見下さない

誰かを見下すと会話ができない。
プログラミングは結局人と仕事するだからね。

もちろん、自分も含めて。

Q&A

Q.得意がわからないときはどうしたらいい?

A.わからないのは当たり前棚卸しして見つけよう。好きなことをやってみたりとかして見つけに行こう。

Q.フルスタックエンジニアを目指すのんは良くない?

  1. 多分そうだと思うよ。 というかそういう人はあんまりいない。 全部できるけど得意なのはこれって感じになると思う。

Q. 内省をやめて走り出すタイミングってどこ?

A.自分で決めて。
内省は楽しくはないし長々やるものじゃない。本気で考えたことが重要。

Q. 役に立った本とか人生を変えた本は?

7つの習慣」「バベルセブンティーン」

Q. 今後日本のITはどうなると思う?

悪い会社はやめよう。 そういうところに続けて働くとそこが延命される。
次もそうだったらそこもやめような。

Q. 日本で生まれてほしいサービスとかは?

あまりドメスティックな考えんないけど インフラよりのとか出てほしいなぁ

気になったのは最近はPaasっていうサービスが有ったけど潰れちゃった ファイヤーベースとかいいよね

Q.社内勉強会やりはじめるのですが、こつは?

こうあるべきとか決めるのは好きじゃない。参加する人とかみて決めてくといいのでは

Q.今の売り手市場はいつまでつづく?

5年とかぐらいはしばらくは続くと思うが、売り手市場が終わる前に日本が沈む可能性のほうがありえそう。 ソフトが書けるなら仕事には困らないのでは。

Q.英語の勉強法は?

実践あるのみ。

Q.普段どこのサイトみてる?

RSSフィールドで見てる よく見るRedditとHackers Newsのは

Q. 地方で働くことによって情報格差の怖さは?

そもそも一次ソースは英語だし日本にいる以上はね。
どっちかっていうと仕事の方が大変

Q.最近注目している技術は?

ブロックチェーンとかみたけどあんまり… どっちかっていうと言語とかの新しい情報を追うことが多い

Q.海外働きたいけどどうしたら?

アメリカはいま大変… Visaで取りやすいのはH1Bただこれはアメリカ国内の会社からの手引きが必要。 しかも海外の人を取るはかなりリスキーなのでそのリスクを上回る自己紹介ができるかいなか。 採用自体の国の違いはあんまりない。
最近は大学院nとかを経由することが多い。

Q.今の職場けっこいいけどコンフォートゾーン出たほうがいい?

「他人は無責任」 リスクとメリットを比較して自分だけで考えたっほうがいい。

Q. 日本が今後下がっていくとして、東南アジアとかでビジネスするのはどう考えているのか?

インドネシアとか今結構ホットだと思う。 下請けと考えずマーケットとして考えたほうが正解だと思う。
技術は変わらないので飛び込むのはありだと思う。
日本人というメリットをどう活かすのかという判断は難しいと思う

Q.もし20代に戻れるなら?

プログラミング言語作ってると思うよ。自分の本質だと思う。
言語に関しては世界的にも上から数えたほうが早いと思うしね

Q. 今営業でこれからエンジニアになりたいけどどうしたらいいか?

プログラミングが楽しいと感じれるか?

仕事でやっている人と楽しくやっている人だったら楽しくやっている人のほうが伸びるのでは?

Q.今SEであんまりコードを書かないのだけどどう変わる?

未来はわからんない。 だけど自分で作ったっほうがいいと思う。
試行錯誤するものだし、誰もユーザーの要望を芯に捉えてる人はいない。外注すると時間がかかると周りとの競争力が下がっていく。
ただ、変わるかはわからない。日本と一緒に心中するかもだし。淘汰されるかも。ただ競争力は下がっていく。

Q. レイヤーにのって有名人になりやすさって違う?

違うと思う。OSS開発に関してはレイヤーが低いほうがいい。どこでも使ってもらえるしね。
結局はどういう道を通るのかによるが。

最後に

自分の人生を良くすることに貪欲人になっていいと思う。 自分はあまりそうじゃなかったけど運がよかっただけ。ただ運にはそこまで期待できない。

相互リンク

  • 技術ブログ:ヤモト.tvp
  • 友人氏の技術ブログ 数学ガチ勢がエンジニアになっていく奮闘記