stefafafan の fa は3つです

"すてにゃん" こと id:stefafafan のブログです

認知負荷とキャッチアップ

以前会社で「Team Topologies読書会」に参加した際に、認知負荷には3つの種類があることを知りました。それ以降新しいメンバーのキャッチアップについて考える際に毎回この3つの種類について思いを馳せるようになっています。

心理学者ジョン・スウェラーが提示する三つの種類とは「課題内在性負荷」「課題外在性負荷」「学習関連負荷」です。Team Topologiesにも書いてあったようなことを元に軽く紹介します。

  • 課題内在性負荷とはタスクに直接関連する負荷であり、プログラミング言語そのものの知識などを含むそうです。
  • 課題外在性負荷とはそのタスクというよりは周りの環境に関連する負荷であり、覚えにくいコマンドの羅列だったりするそうです。
  • 学習関連負荷とは学習するには特別な注意が必要な負荷であり、ドメイン知識なども含むそうです。

ソフトウェアエンジニアとして新しいチームに参加したり転職して新しい会社に入ったときはなるべく素早く「キャッチアップ」したいです。受け入れチームとしても同じ気持ちで素早くキャッチアップしてほしいと思っているはずです。その際に認知負荷が高いとどうしても時間がかかってしまいます。その中で私は上記の認知負荷の種類を意識するといいんじゃないかと思っています。

特に受け入れチームとしては「課題外在性負荷」がなるべく少ない状態を目指すべきなんじゃないかと思っています。というのも、本質的な課題に我々ソフトウェアエンジニアは意識を集中させるべきなのに、デプロイのたびにこの10個のコマンドを打ってくださいとか、手元環境立ち上げのためにはこの順番で作業しないといけませんとか、機能追加のためにこの順序で作業しないといけませんなど関係ないところで脳のリソースがとられるのが勿体無いためです。この負荷が限りなく少なければ新しいメンバーもよりすんなりキャッチアップできるはずですし、既存のメンバーもストレスなく開発が進められます。

「課題内在性負荷」つまりプログラミング言語フレームワークに関する知識については受け入れチームがどうこうできることはあまりないと思います。強いて言うならば、同じ会社の中である程度チーム間の技術スタックを共通にすることにより、異動してもすぐさまキャッチアップできるようにするなどはあるかもしれません。いちソフトウェアエンジニアとしては日々学んで自分のスキルとして持てるようになれば何度転職しても毎回同じパフォーマンスを発揮できるはずなので、興味のある技術スタックについては学んでおいて損はないです。

「学習関連負荷」について、特にプロダクトのドメイン知識は結局チームによるのでこれはどうしようもないと思っています。受け入れチームとしてはオンボーディングの際にどういう市場でどういう意義のあるサービスを運用しているのかを紹介し繰り返し参照できるドキュメントとして残せておけるといいのかなと思います。

このようにチームメンバーにスキルや知識を伝授する際は「プログラミング言語の知識」や「日々の仕事の進め方」や「ドメイン知識」はどれも違った認知負荷として認識した上で実施するといいのかなと思います。ジュニアなメンバーであればどれも認知負荷としてありそうですし、熟練なエンジニアであれば「日々の仕事の進め方」と「ドメイン知識」さえわかればあとはうまくやってくれるでしょう。キャッチアップする側としてはどのチームどの会社でもすぐに活躍できるように一般的な知識は蓄積させていきつつも、いざ入社した際は会社やチーム特有の知識から聞いていくといいでしょう。

この記事は すてにゃん Advent Calendar 2023 - Adventar 6日目の記事です。