ogatasoが何か書きます

SWE(1年目)が勉強したことを書くヨ

脳に余裕をもたらす方法について 世界一流エンジニアの思考法 3章より

はじめに

世界一流エンジニアの思考法を読んでいるが、学びが非常に多い。3章の「脳に余裕を生む情報整理・記憶術」は特に自分に刺さりまくったのと、「学びをブログに書け!」というアドバイスが含まれていたので、早速3章の学びについて軽くまとめてみた。

3章概要

3章は主に脳の負担を軽減する方法について書かれている。具体的には、コードを素早く読む方法や記憶力を高める方法などである。私は頭の回転も記憶力もそれほど良くない方だと自己評価していることもあることから、全部の章の中でも3章はかなり有益だと感じた。

コードを早く読むには

私はコードリーディングには結構時間がかかる上、結局よくわからないままそれっぽい関数を見つけて雰囲気で作業しているが、筆者も同様の課題を抱えていたようである。結論としては、実装詳細についてはそれを書いたエンジニアを信用してコードは極力読まず、クラスの役割やインターフェイスなどに集中するのが良いそう。また、不明な点は人に聞くのが早い。(これができるのは多分きちんとしたアーキテクチャでソフトウェアが構築されていることが前提ではある。筆者はマイクロソフトで働いているので、かなりコードは綺麗なんだろうなぁ。)

タスクの選び方

タスクにはそれぞれ難易度があり、1. 調べずに解決できる, 2. ググりながら解決できる, 3. 解法を知らないがスパイクソリューションで解決できそう, 4. 自分一人では無理もしくはかなり時間がかかる の4つに大別できる。スパイクソリューションという単語は聞いたことがなかったが、情報収集を目的としてお試しでプログラムを作ってみるという手法らしい。1 筆者は「このレベル4の仕事ができるようにならねば」と焦っていたが、現在では生産性を上げるには2を1にしていくのを目指すのが良いと考えをあらためている。また、そうしていると3が2になることもあり得る。その他、作業をやっていてしんどくなるのはそれが自分のできるレベルを超えている可能性があり、自分のできるレベルを見積もることが大切であるとも記述されている。

アウトカム至上主義をやめる

自分もそうだが、1日の終わりに何かを成し遂げていないと「自分今日何もやってないじゃん!」と辛くなってしまう。ただ、実際には1つの作業は丁寧にやって、しっかりと理解することが長期的に見て生産性を向上させる。

マルチタスクをやめる

まずマルチタスクはやめた方がよく、4時間は自分の作業に集中する時間を取るべきとのこと。自分の時間を取るにはteamsやスラックを閉じれば良い。

記憶力を高める

記憶力の低さの原因は理解の浅さにある。理解を深める方法として以下のようなものが紹介されている。

  • 学んだことはブログに書く

  • コーネルメソッドで学びを整理し、しっかり復習する

  • 頭の中で整理し、言語化できるようにする。この時、実際にはやらないとしても後で人に説明することを意識しておくと効果が上がる。

  • ビジュアルイメージを構築する

物事をできるようになるためには理解、記憶、反復が必須である。理解していないとコントロールできないし、記憶していないと思い出すために時間を費やすことになってしまう。また、記憶、理解したことをいつでも取り出せるように反復できるようにしておくことも大切。これらが脳の負荷を軽減し、生産性を高めると言える。