masayuki5160's diary

ソフトウェアエンジニアの雑多ブログ

あの時言語化できなかった辛みが認知科学の観点から言語化されてた

TL;DR

プログラマー脳 ~優れたプログラマーになるための認知科学に基づくアプローチを読んだんだけど、初見のコードベースと向き合っている時の辛みが言語化されていて、昔働いていた職場での辛みが何だったのか言語化されてた。

シニアなエンジニアであっても、ジュニアなエンジニアならなおのことではあるが、しんどい時はしんどい。プログラマー脳 ~優れたプログラマーになるための認知科学に基づくアプローチではそのしんどさとの付き合い方が具体的に示されている。この本は今後多くのエンジニアを救うだろうなと思った。

あの時言えなかった辛みが言語化されてた

 

少し前から話題になってたので読んだ。

こういった研究の存在は知ってたけど、ちゃんとまとまった内容として読んだことはなかった。この本が初。

認知負荷の問題は例えばはじめてみるコードベースと向き合う時大きくなる。書籍内でもオンボーディングにおける認知負荷の軽減の話がある。

僕もEMという仕事柄、このオンボーディングにおける負荷は意識してる。簡単にいうと、しんどいのがわかってるので、余裕を持った時間配分やメンターのアサイン、そして相談しやすい雰囲気作りを心掛けている。

こういった話は心理的安全性のコンテキストにおいてはよく話題になる。だから気をつけているチームも多いだろう。

ただ、実際に慣れてないコードベースと向き合う時に具体的にどんなことが負荷となるのか、ということは僕も言語化したことはなかった。理解するのに時間かかるよね、程度の言語化はしてたけどそこ止まり。

本書ではこのあたりを認知科学という切り口で言語化されていた。辛さが言語化されている、というのは何が辛いか明確になっているという意味で対処もできるしすごく助かる。

結果的にはこれまでEMとして新メンバーのオンボーディングの時に気を遣っていたことが正しいアプローチであったとわかったけど、それがなぜ正しかったのかをこの認知科学の視点で明らかにされたのは大きい。

 

僕は一度認知負荷が大きすぎて、それに耐えきれず仕事を休んだことがある。休職だ。

その時僕が向き合ってたのはエスカレーターを動かすコードベースだった。もちろん当時の僕はソフトウェアエンジニアとしても、組み込みソフトウェアエンジニアとしての経験も非常に浅い。

毎日コードと向き合ってはいたが、誰の助けもないからどこからどう読み進めればよいかわからずだった。全体も見通せず、細部ばかり読んでいたが、やっぱりこれではいくら時間があっても足らない。ジュニアなエンジニアの行動として同じ話は書籍内に記載されてた。このときの僕はまさにこれだったな、と読みながら思った。

その職場は40代前後の方が中心だった。入社してからずっとその会社で勤めてきた方ばかり。新しく入った人がその職場でどういうことに困るか、すなわち認知負荷がかかるのか想像出来る人がいなかったんだと思う。

僕が休職まで追い込まれたのは、その認知負荷に耐えきれず、自分の能力不足だと自分自身を追い込んでしまったことによるんだと思う。認知負荷がどの程度か周囲が理解をしてくれていないと、誰でも簡単に同じ状況にはなるだろう(その職場の心理的安全性はどうだったからというと、まあそこも微妙だなと今となっては思う)。

今となっては良い経験だったけど、当時は辛かった。おそらくそこの職場の方からすると、僕に問題があった、という風に解釈をしてまた新しい人を雇っているんだと思う。

 

認知負荷の問題を軽視してはいけない。

ジュニアなエンジニアはもちろんだが、シニアなエンジニアであっても軽視すべきではない。新しいチームのメンバーがなるべく早く活躍できるように、チームのメンバーみんなが活躍できるように、この認知負荷の問題はEMとして常に意識しないとな、と改めて思った。

まとめ

初見のコードベース、特に巨大なコードベースと向き合うときの認知負荷は無視できない。ジュニアなエンジニアなら尚更、そしてシニアなエンジニアであってもそれは軽視できない。

認知負荷の問題を軽視していると、その認知負荷に耐えきれず、知らないうちに身近な人を苦しめていることもあるかと思う。僕が昔経験した辛さはそういうところにあった気がする。

プログラマー脳 ~優れたプログラマーになるための認知科学に基づくアプローチではエンジニアが向き合うしんどさや難しさ(その一部かな)が言語化されている点は素晴らしいと思った。これによって、対処法が明確になっており、今後多くのエンジニアを救うだろうと思う。とても参考になった。終わり。