
【読書メモ】世界一流エンジニアの思考法
Amazon:https://amzn.asia/d/3pA0kwS
世界一流エンジニアは何が違うのだろう?
トップエンジニアの衝撃的な解決法
- いきなり手を動かさない。まずは、事実(データ)を一つ見つける→いくつかの仮説を立てる→その仮説を証明するための行動をとる。この手順が、手当たり次第に可能性を試すことによる時間のロスを排除し、圧倒的な効率を生む
頭がよくても「理解」には時間がかかる
- 頭のいい人が理解が早いように見えるのは時間をかけて基礎を積み上げているから
理解に時間をかけるを実践する
理解しているというのは以下のようなこと
- その構造をつかんで、人に説明できること。
- いつでもどこでも即座に取り出して使えること。
- 知見を踏まえて応用がきくこと。
- 実際にコードに触れないとわからないよね?といった手を先に動かす悪習慣を捨てて基礎をやり直す
- 初歩の学習を「簡単だ」と馬鹿にせず、一からやり直す。ふわっとわかっているけど、ちゃんと理解していなかったり「即座にコーディングできない」ことがたくさん見つかる。
- 業務内でも理解できない箇所があれば、時間をかけて理解してから進むように心がける。
- 理解は時間がかかるものとして、急がず、徹底的に理解する習慣をつけていく。結果、圧倒的に試行錯誤が減って問題を一直線に解決できるようになる
小さなドキュメントをコードの前に書く
- ドキュメントはコードの前に書く 以下2つの利点がある
- ドキュメントを書くことで自分の頭が整理される。抜け落ちていた視点などに気づくことができる
- 考えているときに書けば、自動的にドキュメントになるので、それをシェアするだけですむ。後でまとめて退屈なドキュメントを書かなくていい
頭の中に「メンタルモデル」をつくる
- ドメインエキスパートに質問するのを恐れない。エンジニアがより賢くなるのはチームの幸せに繋がる
- 一つのことで2時間以上ブロックされたら、質問や相談をして寝かせておいて他の仕事をやっておいた方が効率がいい
- 既存システムがある場合は、考えて調べる前にエキスパートに頼ることはベストプラクティス
偉大な習慣を身につけたプログラマになる
- 時間をかけて理解する習慣を身につける
- ケントベックは「私は偉大なプログラマではなく、偉大な習慣を身につけたプログラマ」だといった
アメリカで見つけたマインドセット
Be Lazyというマインドセット
Be Lazy(怠慢であれ)とは、より少ない時間で価値を最大化するという考え方 以下はそれを達成するための習慣
- 望んでいる結果を達成するために、最低限の努力をする
- 不必要なものや付加価値のない仕事(過剰準備含む)をなくす
- 優先順位をつける 最初の一個をピックアップしたら他をやらない。それだけにフォーカスする。 まずは一番重要な一つだけをピックアップする癖をつける
- 時間や費やした努力より、アウトプットと生産性に重点をおく
- 長時間労働しないように推奨する
- 会議は会議の時間内で効率的かつ生産的に価値を提供する
いかにやることを減らすか?
- いかにやることをへらすかに頭を使うようにする
- 減らすこと自体に価値があるとマインドをリセットする
一つだけピックアップする
- 一番重要な一つだけをピックアプする癖をつける。そうすることで、時間がなくてもポイントを外さない仕事を高速で回せるようになる。やらないといけないと思っていたことが問題にならないことに気づく
時間を固定してできることを最大化する
- あれもこれもすべきというマインドだと時間をダラダラと延長してしまう
- 時間は固定して、その中で価値を最大化する
- まだ完璧ではないと最初は怖くなるかもしれないけど、大抵抜けていくことは大事なことではない
準備、持ち帰りをやめてその場で解決する
- 会議に出たら会議の時間内だけで完結するようにする
- 会議の準備は無駄。会議の時間を価値の高いものにする
- 会議の時間内だけでできない場合は余計なことを頑張りすぎている可能性がある
物理的にやることを減らす
- 物理的にできないものは頑張ってもできないので、自分の仕事の中で何をやらないかをどんどん決めていく
リスクや間違いを受け入れる
- 間違いを厳しく批判したり懲罰したりしない