はじめに
今回の記事は最近読んだ本の読書メモです
エンジニア歴2年目が感じた、面白かった内容や勉強になった内容を書いています
世界一流エンジニアの思考法
頭が先、手は後。一流の仕事のカギは順序にある。
――楠木建(経営学者)
知的生産へのリスペクトがイノベーションの源泉だ。
――落合陽一(メディアアーティスト)
「怠惰であれ!」「早く失敗せよ」――
米マイクロソフトの現役ソフトウェアエンジニアの著者が、超巨大クラウドの開発の最前線で学んだ思考法とは?
“三流プログラマ”でもできた〈生産性爆上がり〉の技術!
・試行錯誤は「悪」。“基礎の理解”に時間をかける
・より少ない時間で価値を最大化する考え方とは?
・「準備」と「持ち帰り」をやめて、その場で解決する
・マルチタスクは生産性が最低なのでやらない
・“脳の負荷を減らす”コミュニケーションの極意
・コントリビュート文化で「感謝」の好循環を生む……etc.
仕事と人生を「自分の手でコントロールする」最高のスキルがここに!
引用:amazon.co.jp
試行錯誤は「悪」である
単なる思いつきでいろいろなパターンを試して正解を探しているだけなので、とても時間がかかる上、新しい知識を何も学んでいない。
事実(データ)を一つ見つける -> いくつかの仮説を立てる -> その仮説を証明するための行動を取る
プログラミングは「頭脳労働」であるとより理解でき、できるプログラマとできないプログラマとの差は、このような考え方から生まれているのだと理解。普段の勉強、仕事でも手当たり次第に試すのではなく、データを探して仮説を立てて動くように意識していく。
「理解に時間をかける」を実践する
「何かを早くできるように急ぐ努力」が返って本質的な理解を遠ざけてしまうのだ。
「理解には時間がかかるもの」として、急がず、徹底的に理解する習慣をつける
- 定時後や週末に、プログラミングの基礎を学ぶ
- C# の言語使用を勉強する
- LeetCode を一番簡単なレベルから毎日やる
何事も基礎的な内容を深く理解することが大切で、小手先の技術より大元の原理原則を理解するように勉強していこうと思った。
世界トップレベルのエンジニアでも内容の程度はあれ、理解に時間をかけているため焦らず一歩ずつ進めていく。
Be Lazy(怠惰であれ)
「最初の1個をピックアップしてやったら他はやらない。その一つにフォーカスしよう」という感覚だ。
「減らすこと」自体に価値がある
成功しまいが、まずややってみて、早くフィードバックを得て、早く間違いを修正していく ----- Fail Fast の精神
検討ばかりして、さっさと「やらない」ことの方が最大のリスク
考えすぎて動かないことこそが、リスクであること。さっさと動いた方が早く間違いを発見でき、修正でき結果早く終わること。物事のコアとなる1つのことに集中して他はしない。
選択と集中が大切。何でもかんでもはできないため、することを絞って絞った内容に集中する。
いかに脳みその負荷を減らすか
レベル1:何もググらずに即座に実践できるもの
レベル2:問題をどう解決するかはすぐ思いつくが、具体的な方法は忘れているので、ググる必要があるもの
レベル3:自分は解法を知らないが、スパイクソリューション(課題把握のための大まかなプログラム)をしたらできそうなもの
レベル4:自分だけでは解決が難しい、もしくはものすごく時間がかかるもの。生産性とはいかに「レベル1」を増やすか
頭の中のみで整理する
レベル1の即座に実践できる内容を増やしていくように意識する。会議では頭の中で整理できるように練習し、瞬間で最適な決定を出せるような脳みそへ変えていく。
レベル1の内容を増やすことも、当たり前だが時間がかかるため焦りすぎないでする。毎日の積み重ねがすべて。
クイックコールのすすめ
音声のほうが100倍以上の情報量があってインタラクティブ性があり、フィードバックも速い
時間がかかる内容ではない限り、さっさと音声をつないで質問した方が無駄に時間を浪費しない。
自分からクイックコールをかけるようにすると、相手からも気軽にかけても良い雰囲気になるため気に留めすぎずにコールする。
最後に
(当たり前だが)すべてを実生活に落とし込むことは無理なので、少しずつ意識して一流エンジニアの思考を取り入れるようにしていきたい。