Webアプリチームの西川です。面談でよく話題に挙がることをうまくまとめたいと思っていたところ、「認知負荷」というキーワードである程度まとめられそうだったのでまとめてみました。
認知負荷とは
「ワーキングメモリで利用される心理的労力の総量」として提唱されたものであり「課題内在性負荷」、「課題外在性負荷」、「学習関連負荷」に分類されます。
- 課題内在性負荷:課題を解決するにあたり必要となる基礎的な知識(例:プログラミング言語、フレームワークなど)
- 課題外在性負荷:タスクが実施される環境の知識(例:デプロイ、リリース手順など)
- 学習関連負荷:特別な注意が必要な知識(例:SEO、業務知識など)
(参考:チームトポロジー 価値あるソフトウェアをすばやく届ける適応型組織設計)
認知負荷を低減するために実践していること
1. ペアプログラミング
低減する負荷:課題内在性負荷
当社ではリモートワークが主体のため、リアルタイムなコミュニケーションの敷居を下げることにも役立っています。 入社直後のメンバーにとっては質問する敷居が高いと思いますので特に重要だと考えています。
2. リファクタリング
低減する負荷:課題内在性負荷
当社では巨大なモノリスが出来上がっておりソースコードを理解するのに骨が折れます。 リファクタリングを行うことによりソースコードの理解が進み、かつ、綺麗なソースコードが増えることにより他のメンバーが理解しやすくなります。
3. スクラム開発
低減する負荷:課題内在性負荷
当社ではアジャイル開発を実現するためにスクラムを導入しています。 アジャイルソフトウェア開発宣言に記載の通り コミュニケーションを重視して共通認識を作りあげることにより認知負荷を低減できています。
4. 自動化
低減する負荷:課題外在性負荷
当社では、EP活動という改善活動を行っておりその中でさまざまな自動化を行っています。 リリース自動化、自動テストもその中の一つです。
5. ドメイン駆動設計(DDD)
低減する負荷:課題内在性負荷
当社ではドメイン駆動設計を導入しています。戦術的設計の軽量DDDだけの実施になっていますが、パターン化、及び、レイヤーを意識した設計を実践しているためソースコードの意図を把握しやすくなりました。
現在、戦略的設計を行うためイベントストーミングにチャレンジしております。
戦略的設計を行うことで 学習関連負荷
も低減できるのではないかと期待しています。
6. 勉強会・輪読会
低減する負荷:課題内在性負荷
当社では毎週勉強会を行っておりメンバー同士で知見の共有を行なっています。 また、不定期に有志で集まって輪読会を行い、その時興味がある本について議論を交わしています。
7. ロゼッタストーンドキュメントの作成
低減する負荷:課題外在性負荷
当社ではWikiに情報を書き溜めているのですが情報量が多く、また、検索性もいまいちなため知りたい情報を得るのに苦戦します。 特に入社した直後は何がわからないかわからない状態になってしまうためロゼッタストーンドキュメントを作成しシステムの全体像を理解する助けとなるようにしています。
まとめ
認知負荷を下げることによりパフォーマンスが上がりストレスも軽減されるといういいことづくしのため今後も認知負荷を下げる努力を続けていきます。
最後に
今回は認知負荷というキーワードでまとめてみましたが他にもさまざまな改善活動を行っています。 ご興味ある方は一緒に働いてみませんか? vorkers.jp