どこにでもいるSEの備忘録

たぶん動くと思うからリリースしようぜ

【講演会メモ:和田卓人氏特別講演】若手エンジニアに送る、"心構え"と"キャリア観"

f:id:nogawanogawa:20181110123357p:plain

たまにすごい人の講演を聞いているんですが、こちらの公演の話を聞いてきたので、そのメモです。
※あくまで個人的に感じたものなので、不正確な箇所があることは多めに見ていただければと思います。

supporterzcolab.com

ベースになっている参考書籍

こちら二冊が良いらしいです。

新装版 達人プログラマー 職人から名匠への道

新装版 達人プログラマー 職人から名匠への道

<きのこ本>

プログラマが知るべき97のこと

プログラマが知るべき97のこと

学び方を学ぶ

エンジニアでいると、次から次へと新しいテクノロジーは出てきます。 そんな流れに追いついていくにはこんなことがポイントになるそうです。

  • 4半期ごとに技術書を読む
  • 手を動かして学ぶ
  • 毎年一つ言語を習得する
  • 身の回りをプログラミングの対象にする
  • アウトプットを行う

これらに触れながら、大事だと思ったところをメモしていきます。

記憶の種類

まず、人間の記憶には大きく分けて3種類あるそうです。

記憶の種類 持続期間
感覚記憶 ~2秒
短期記憶 2~30秒
長期記憶 死ぬまで?

この長期記憶がなかなかの曲者のようで、覚えてはいるんだけど、なかなか脳内検索できないようになってしまうんだそうです。 ポイントは反復練習によって脳内にインデックスをつけることだそうです。 インデックスを張る例としては、テクノロジーや知識を時系列順に整理することだと言います。 これによって、テクノロジーが出現した時代背景や強み弱み、時代のコンテキストが把握でき、記憶に残りやすくなるそうです。

デールの円錐

長期記憶に残すために有効なのは能動的な学びをすることだとの紹介されていました。 取り上げられていたのはデールの円錐です。

f:id:nogawanogawa:20181110171006j:plain

要するに、受動的な学習は2週間で半分も覚えていないらしいです。 なので、いかにして能動的な学習にしていくかがポイントになります。

それこそ技術書に書いてあることをそのままなぞるだけでも能動的な学習になりますし、書いてあるレールから外れられればなお良いとのこと。 手を動かすことが大事です。

毎年一つ言語を習得する

やはりいろいろな言語ができる様になるとわかることはあるようで、(もし可能なら)毎年言語を習得することが良いそうです。

学ぶ順番としては、

  1. 業務で使う言語
  2. 業務で使う言語とちょっと違う言語
    1. or 2.の言語からまた少し違う言語

例として、業務でRubyを使っていれば、まずはRubyでしょう。 次に動的型付け言語のオブジェクト指向言語ですので、静的型付けのJavaに行けばいいですし、その次に関数型言語のGroovyといった具合ですね。

要はちょっとずつ違うパラダイムの言語を学ぶことで、挫折せずに学習していけるのだそうです。

あとは、なるべく世間で受け入れられているもので、新しいもののほうが、いろいろ改善されている部分が大きいので、新しいモノのほうがおすすめです。

勉強するときはなるべくなら英語のドキュメントを使います。 これは単純に質も量も英語のほうが充実しているからです。

題材は身の回りから

だんだん業務で使わない知識を勉強するようになると、Hello world止まりになりがちです。 そういうときは、身の回りの不便なものを改善する完全プライベートサービスを作るのがおすすめだそうです。

アウトプットをする

そういえばこんな記事が話題になってましたね。

anond.hatelabo.jp

基本的に、記事の質はあるのは仕方ありません。 ですが、レベルが低いからアウトプットをしないと、いつまで経ってもアウトプットできません。

なので、レベルが低くてもアウトプットしたほうがいいと個人的には思います。 批判する人は一定数いますが、そういうもんだと割り切るしかありません。 やらないよりマシです。

あと検索エンジンが汚れるとかいうのは、個人的には検索サービス側の課題だと思いますので、気にすることないかなと思います。 ガンガンやりましょうということだと思ってます。

その他、面白いなと思ったのは、技術同人誌を書くこともアウトプットの形だと言う点です。 ブログよりもハードルは上がりますが、一般書籍を書くよりチャレンジする敷居がぐっと下がっているのも事実です。 あとは、エンジニアには名刺みたいなもんなので、githubにコードを公開すれば良いとのこと。

現役プログラマでいるために

基本的にプログラマは新しい知識をどれだけ早く吸収して使っていけるかが一つ分かれ目なので、若い人が強くなります。 その中で現役のプログラマとして生き残るための秘訣が紹介されてました。

  • 毎日コードを書く
  • 年下から学ぶ
  • 過去から未来を見る
  • 人の作る渦を見る
  • 大事なことに集中する

毎日コードを書く

平日は仕事があるので、これがめちゃくちゃ大変なんですよね。 それでも休日に自分の開発をやろうとしても

  • 平日と同じ馬力で週末にはかけない
  • 1週間は長く、前の内容を忘れる

など阻害要因が多いのは事実です。

なので、毎日コツコツコードを書くことが良いとのことです。

紹介されていたルールは

  • 毎日コードを書く
  • 意味のあるコードを書く
  • 深夜24時前に終わらせること
  • 書いたコードをgithub公開

でした。これをそのままやる必要はないとのことでしたが、毎日やるのが一番のポイントです。 これのメリットとしてはこんな感じです。

  • プログラミングの習慣化
  • 必要最小限のコードへの集中
  • 不安の軽減
    • 進んでいる実感が進捗より大事
  • 週末の過ごし方が変わる
    • 平日と週末のスイッチがなくなる
  • バックグラウンド処理が変わった
  • コンテクストスイッチのコスト削減
    • 思い出すプロセスの短縮
  • ワークライフバランス
  • 周りから理解される
    • 週末部屋にこもるのはできなくても、1日30分だけこもるのなら理解される
  • どれだけコードを書いたかわかる充実感

なので、少しでも毎日コードを書くことが大事です。

年下から学ぶ

新しいツール・知識に関しては、残念ながら若い人のほうがよく知っていたりする。 そこから謙虚に学べないとどんどん置いていかれる。

過去から未来を見る

逆にベテランの唯一の強みは、過去の歴史を知っていることです。 「技術は螺旋」でトレンドは形を変えながら繰り返すものです。

過去のトレンドといまのトレンドを比較して、周囲の環境の変化を理解して「何がすごいのか」「どう使えばベストか」を過去の知識から判断できることをは大きな強みです。

人の作る渦を見る

今やgithubによって個人個人が主役になっているのが今のIT業界です。 なので、世の中でゲームチェンジャーになりうるテクノロジーは個人があつまるところから出現するようになってきています。

それを見逃さず追いついていくことが求められています。

大事なことに集中する

年をとるに連れてライフステージも変わるでしょうし、使える時間も限られています。 なので、本当に重要なところに時間と労力を投下しましょう。

有限なリソースを適切に投下できれば、年をとっても十分に戦えるはずです。

その他

体にガタがくるのにはどうしたら良いか

自分の使う商売道具にはとことんこだわる

資料(若干古いですがだいたい同じ内容)

recruit-tech.co.jp

テクノロジー見極めの際の材料

www.thoughtworks.com