こんにちは、mabuiです。
最近は友人とサービス開発を行っていたりで、2ヶ月以上ブログの更新が空いてしまいました、、、!
そんな自分ですが、先日6月28日に行ってきた和田卓人さんの講演が良かったので、紹介していきます。
内容がとても詰まっていたので、箇条書きで書いていきます!
タイトル
エンジニアとしてこの先生き残るために
和田さん
日本でテスト駆動開発の第一人者。
学び方を学ぶ
1.技術書を3ヶ月に一冊読む
- 感覚記憶
0.5~2sec覚えてられる -
短期記憶
15~30sec覚えてられる -
長期記憶
死ぬまで?
どこまで増やせるかは分かっていない。 -
脳内インデックスを作る
ピッカーを育てる = 反復練習
何度も長期記憶から出し入れする。
荷物を他の荷物とくっつける。
連想記憶を育てる。
関連した本を読んで記憶を立体化させる。
本を時系列に並べてみる(原著の出版年)。 -
時系列の例
Rails(2004)がでできた背景
ORM、マイグレーションは以前の本の中で考え方としてあったけど、どう実装すれば良いの?
というのが共通課題だった。それをコードに落とし込んだ。
DDD本は2003年に出た。
そのため、その後に出た本の概念は取り入れていないことを加味して評価しないといけない。
2019年現代で読んだ時にどこを取り入れるべきかを考える。
2.手を動かして学ぶ
- やる → できる → 好きになる
やっていくうちにできるようになって、どんどん好きになっていく。
最初に習得したいスキルを選ぶときは、好きかどうかは関係がない。
最初はドライに先を見据えて選択したほうがいい。 -
デールの円錐
受け身な学習で2週間後に覚えているのは最大5割。
人に話すと7割、手を動かすと9割。 -
写経
写経は有効。サンプルコードの打ち込み等、和田さんは今もやっている。
3.毎年少なくとも一つの言語を学習する
達人プログラマーでおそらく一番有名な言葉。この影響でマルチパラダイムなプログラマーが増えた。
新人のうちは容易に出来る。
- 仕事で使う言語とやりたい言語が離れていった時には?
だんだんにじり寄る。静的関数型がやりたければ、静的を覚えてから関数型をやるとか。 -
言語のトレンドを見る
thoughtworks社が四半期に一回出している、technology radarを見るといい。
adopt → 殿堂入り
trial → 投資対効果あり、その後世に受け入れられなく消えるものもある。
assess → トレンド入り、様子見。
最新だとts,rust,kotlin熱い。 -
技術者と英語
読めるようになるべき。技術者としてのインプットは圧倒的に変わる。
技術者としての可能性もだいぶ変わる。
4.身の回りをプログラミング対象にする
生活、ちょっとしたイライラ。
自分しか使わないwebサービスとか作ってもいい。
5.アウトプットを行う
学びはアウトプットを行うことで定着し、インプットも増える。
相手に教えることで自分の理解を整理し、再構築することになる。
- 量は質に転化する
アウトプットを増やすことで、フィードバックループがたくさん回る。
有名な実験で、ひたすら壺を作らせたグループが、質を考えて作らせたグループよりクオリティも高くなった。
ブログ、qiita等書きまくった方がいい。
"情報発信、ブログ、発表、公開などは、数学の(未解決問題の)証明ではなく、料理のようなもの"
jenkins作者の言葉。
技術の情報発信には、データ鮮度の問題がある。
また技術には変数が多すぎるので、その時のタイムスライスのみでしか動作しない。
なので、検索に引っかかる情報量は多い方がありがたい。 -
コードを公開する
公開していると、時々利用者がぐわっと増えたりする。 -
講演する
ライトニングトーク(LT)とか、仲間内でもやってった方がいい。
若手エンジニアのLT会とかおすすめ、初心者多いのでハードル低い。 -
ライブコーディング
講演時のアンケート満足度が一番高いのはライブコーディング。リスキーだけど観客の評価が一番高い。
失敗を許容できる5分間のライブコーディングとかおすすめ。
現役プログラマでいるために
-
毎日コードを書く
jQuery作者は週末に自分のプロダクト開発を頑張ろうとしたが、失敗。
先週書いたことを忘れているので進捗よくない。
ルールとして意味のあるコードを書くこと、フォーマットの修正とかはカウントしない。
毎日コードを書いた結果、以前あった進んでいるかどうかの不安が進んでいるという実感に変わった。
これは実際の進捗と同じくらい大事なこと。
週末は他の平日と同じく重要でなくなり、リアルライフを充実できるようになった。
コードを生活のバックグラウンドで考えられるようになった。
和田さんも子育てしながらも5年くらい頑張っている。 -
住む場所を工夫する
始発駅の近くに住む。座る可能性をコントロールできる。そうするとコードを書く時間ができる(!!)。 -
意図的にオフライン時間を作る
周りに他人がいない時間。
電車、飛行機、喫茶店、、、
コードに集中できる。
意図的に通勤時間を作ることでコードを書く時間を確保する。 -
年下から学ぶ
"一生プログラマーでいれるかどうかは、年下から学べるかどうか"
小飼弾さんの言葉。
若者と同じ土俵で競うこと。
githubは名が売れてもただ1人のプログラマーでいれる。
使う道具を定期的に変える。
典型的なのはエディター。
20年使い続けたemacsを捨て、VSCodeを使う。
ペアプログラミングはベテランにはアンラーニングのチャンス。 -
過去から未来をみる
技術は「らせん」。
10年前になかった差分を取り入れて技術は進んでいく。
何がそれを可能にしたかという差分を理解する。
「T字型」ではなく複数の柱を。
10年くらいかけて、違うスキルセットを育てていく。
そうすることで安定したスキルの運用が可能になっていく。 -
人の作る渦を見る
組織の時代から個人の時代へ。
githubの登場で、全ての個人がオープンソース開発をするようになった。
個多く集まると何かが起こる。
ロードマップ指向からエコシステム指向へ。
現在の典型的なロードマップはios開発。アップルが強力にロードマップをひいている。AWSも。
フロントエンドはエコシステムの世界。技術がポコポコ発生しては消えていく。
ロードマップの世界は安定していて、エコシステムの世界は当たればでかい。
両方の柱を持つことをイメージした方がいい。 -
大事なことに集中する
エッセンシャル思考。
まとめ
技術を学ぶのではなく、技術の学び方を学ぶ。
その他メモ
達人プログラマーが20周年で再執筆中。すごく良い本。