かつて私が所属していたのは、給与計算や社会保険、税金といった極めて専門性の高い人事システムパッケージを開発する企業でした。そこでは、入社以来10年以上も特定の社会保険プログラムを書き続けるエンジニアが珍しくありませんでした。一見すると専門性が高く頼もしい存在ですが、組織の視点で見ると、そこには「静かな危機」が潜んでいます。
ソフトウェアの現場では、仕様書には記載されない「なぜそうなっているのか」という背景知識や、長年の運用で蓄積された複雑な例外処理といった、言語化されていない暗黙知が必ず存在します。もしその担当者が突然不在になった場合、問い合わせ対応は即座に混乱するでしょう。
かつて私たちは、この課題を「マニュアル作成」や「ドキュメント整備」で解決しようと試みました。しかし、業務は常に進化し続けるため、ドキュメントは作成したそばから陳腐化し、日々の業務に追われるエンジニアにとって、マニュアル更新の優先順位は常に最下位でした。近年では「業務知識を体系化してAIに学ばせれば良い」という意見も耳にしますが、これも同様の壁に突き当たります。自分の持つ独自の専門知識を言語化してAIに譲渡することは、サラリーマンであるエンジニアにとって自らの価値を損なうリスクと映り、本質的な動機づけにはなりにくいからです。ITの歴史においても、知識体系化(オントロジーなど)の試みは、現場の納得感を得られず失敗を繰り返してきた経緯があります。私自身、この難しさを現場で何度も思い知らされてきました。
私たちが本当に目を向けるべきは、個人の努力やツールへの過度な依存ではなく、「組織設計」そのもののあり方です。
知識の「分散投資」という戦略
属人化というリスクを回避する唯一の解は、金融における分散投資と同じように、業務知識を「組織全体に分散させる」ことです。
そのための最も効率的な手法が、新入社員を「知識の運び屋」として活用するローテーション戦略です。まず、特定の属人化しているモジュールや問い合わせ対応の窓口に新入社員をアサインします。彼らは先入観なく知識を吸収します。そして3ヶ月という短期間で次のチームへと異動させます。これを1年ほど繰り返すことで、チーム全体に知識が浸透し、属人化が終わった状態を作り出します。
知識レベルが均質化されると、誰か一人が欠けてもチームは回ります。「自分が休んだら現場が止まる」という心理的負担からメンバーが解放されることは、チームの精神的な安定と生産性の向上に直結します。さらに、知識レベルが近いメンバー同士での相談が活発化し、より高次元な問題解決や技術的なアイデア出しが可能になります。
統一された技術スタックと「体験」の共有
もちろん、こうしたローテーションを組織として実行するためには、大前提が必要です。チームごとに使用言語やデータベースといった技術スタックがバラバラであれば、物理的にローテーションは不可能です。もし現状が分断されているのであれば、時間はかかっても技術スタックの統一へと舵を切るべきだと考えています。組織設計とは、交換可能な部品としてチームを構成することから始まります。
また、Slack等のツール発達により情報のテキスト化は容易になりましたが、本当に重要な「言語化できない知識(暗黙知)」を共有するためには、実際にトラブルを乗り越え、新しい実装に挑むという「共通の体験」が欠かせません。複数のチームを渡り歩き、異なる環境で多様な体験を積むプロセスそのものが、組織全体のナレッジを強固なものにしていきます。
まとめ:属人化の解消がもたらすもの
属人化を解消するための組織設計をまとめると、以下のようになります。
- テキスト・AI依存からの脱却: ドキュメントやAIは補助輪に過ぎないと認識し、組織構造で解決する。
- ローテーションの仕組み化: 新人を「知識の運び屋」として使い、知識を組織全体に分散させる。
- 技術スタックの統一: ローテーション可能な組織を作るため、言語やデータベースを初期段階から標準化する。
- 「体験」による知識共有: テキスト共有を超え、チーム間のローテーションを通じて「言語化できない知識」を共有する。
- レジリエンスの向上: 知識をチーム全体でシェアし、特定のメンバーの不在に左右されない、強靭な組織を作る。
属人化の解消は、単なる効率化ではありません。それは、個人の不安を取り除き、誰か一人が欠けても揺らがない「レジリエンス(回復力)」の高いチームを作り上げることです。これこそが、エンジニアリングリーダーに求められる、真のマネジメントではないでしょうか。