1.0 パート1の紹介: 人々
ソフトウェアは人によって作られ、人は文化、構造、プロセスによって組織されます。そのため、コードやアーキテクチャやツールの話をする前に、このパートではそれらすべてを生み出す人間のシステムを見ていきます。チームが拠って立つ共有された価値観、チームの分け方、キャリアの育て方、日々の調整の仕方、そして意思決定をどう行い、どう記憶するかです。本書の他のすべては、これらの土台の上に成り立っています。恐れに満ちた、分断された、あるいは忘れっぽい組織が築いた見事なアーキテクチャは、現実と向き合ったときに生き残れません。
大規模なチームでは、これらの土台は直感的なものではなくなり、構造的なものになります。一つの部屋にいる8人なら自然に広がる実践も、世界中に散らばる800人の間では崩れてしまいます。だからこそ、文化を明文化し、チームの境界を意図して設計し、成長への期待を文書にし、調整を廊下での立ち話から永続的な文書へ移し、判断の理由が下した人々より長く残るように意思決定を記録する必要があります。
大企業と政府機関は、これらの圧力をそれぞれ最大の強さで受けます。大規模に、監査と監督のもとで、長い時間軸で、正社員、契約者、ベンダーが混在する体制で仕事をするからです。今日あなたが作るシステムは10年動き続け、あなたに会ったことのない人々が保守するかもしれません。こうした環境では、このパートの土台は、ソフトスキルでも、あれば望ましいものでもありません。それは組織的記憶、説明責任、リスクマネジメントのための仕組みそのものです。
このパートの章
1.1 ソフトウェアエンジニアリングの価値観: ソフトウェアがどのように作られるかを実際に左右する、共有された信念と日々の行動。心理的安全性、非難なき学習、明確なオーナーシップ、書く文化、持続可能なペースを中心に扱います。
1.2 チームトポロジーと組織設計: 人をチームに分けることが、作れるソフトウェアをどう形づくるか(コンウェイの法則: 組織は自らのコミュニケーション構造を写したシステムを生み出す)。ストリームアラインドチーム、プラットフォームチーム、イネイブリングチーム、複雑なサブシステムのチームを用いて、認知負荷を最小化し、チーム間の依存を減らします。
1.3 役割、キャリアラダー、成長: 個人貢献者の道とマネジメントの道が並行する、明示的でキャリブレーションされたキャリアフレームワークを構築し、等級付け、昇進、採用、報酬が大規模でも公正で一貫性があり、説明可能であるようにします。
1.4 働き方: チームが日々どう調整し、計画し、届けるか。儀式より原則を重んじ、タイムゾーンや多様な雇用形態にまたがってスケールする、非同期でドキュメントを先に置き、成果に焦点を当てた実践を既定とします。
1.5 意思決定とガバナンス: 整備された道(ペイブドロード)、適切な規模のレビュー、可逆と不可逆の区別、技術的負債のポートフォリオ管理を通じて、チームの自律と組織の整合のバランスを取ります。
1.6 意思決定記録: 意思決定記録、最も一般的にはアーキテクチャ決定記録(ADR)の書き方、保管、継続の仕方。選択の理由が人の入れ替わりを越えて残り、監査にも応えられるようにし、意思決定を発見可能に、さらにはテスト可能にする方法も扱います。
1.7 エンジニアリング標準と例外: 組織がエンジニアリング標準をどう策定し、公開し、徹底し、進化させるか。また、統制され文書化された例外(ウェイバー)プロセスで逸脱をどう扱い、標準が硬直せずに信頼を保つようにするか。
1.8 採用、面接、オンボーディング: 包摂的な候補者探し、バイアスを減らす構造化されキャリブレーションされた面接、そして放り出して泳がせるのではなく、新しいエンジニアが速やかに力を発揮し所属感を持てる本物のオンボーディング計画によって、意図してチームを築きます。
1.9 分散勤務とリモートワーク: 非同期で、文書化され、ドキュメントを先に置く協働を既定とし、意図的な重なり時間と引き継ぎを設計し、勤務時間や見える度合いではなく成果で人を評価することで、複数の拠点とタイムゾーンにまたがって運営します。
1.10 エンジニアリングの有効性と開発者の生産性: 操作されやすい単一の数値ではなく、多次元のフレームワーク(SPACEと開発者体験)を用いて、エンジニアが最良の仕事をできる度合いを測定し改善し、チームを遅くする摩擦と雑務を取り除きます。
1.11 エンジニアリングマネジメント: キャリアラダーそのものではなく、エンジニアをマネジメントする技芸。1on1、フィードバック、コーチングのループ、権限委譲、人道的なパフォーマンスマネジメント、そして自分の成果ではなくチームの乗数として測られること。
1.12 多様性、公平性、インクルージョン、所属意識: 違いが存在し、公正に扱われ、積極的に包摂され、自分の居場所だと感じられるチームを築きます。包摂的なチームはより良いソフトウェアを作るからであり、それが正しいことだからでもあります。誠実な測定を行い、形だけの起用はしません。
1.13 メンタリング、コーチング、知識共有: メンタリング、コーチング、スポンサーシップ、実践コミュニティ、社内トーク、ペアリング、教えるものとしてのドキュメントを通じて、人を育て専門性を意図的に広げ、知識が個人より長く残り、バスファクターのリスクが低く保たれるようにします。
これらの章の相互関係
これらの章は一本の筋でつながっています。価値観は、組織が何を大切にするかを定めます。構造と役割は、誰が仕事をし、どう成長するかを決めます。働き方は、人々がどう調整するかを統べます。ガバナンスと意思決定記録は、選択の背後にある理由を保存します。依存関係はこの順で進みます。1.1章の書く文化と心理的安全性は、1.3章の誠実なキャリブレーション、1.4章のドキュメントを先に置く協働、1.6章の永続的な意思決定記録の前提条件です。1.2章で設計するチームの境界は、1.4章で調整をスケールさせるための主要なてこであり、1.4章は、重いフレームワークを足すより調整の必要そのものを減らすことをはっきり好みます。1.5章と1.6章は意図的に対になっています。前者はガバナンスの哲学を定め、後者はそれを持続する実践に変えます。
このパートの射程は本書全体に及びます。1.2章のチームトポロジーは、8.4章のプラットフォームエンジニアリングと9.1章の信頼性のオーナーシップを形づくります。ここで紹介する意思決定記録は、3.1章のアーキテクチャの基礎から10.3章の自作・購入と調達まで、重要な選択が行われるあらゆる場面で繰り返し現れ、そのフィットネス関数による保証は8.1章のデリバリーパイプラインにつながります。1.1章の非難なき学習は9.3章のインシデント管理を支え、このパート全体で確立される説明可能で文書化された意思決定は、10.2章のリスク、監査、保証の仕事がまさに拠って立つものです。土台を正しく築けば、本書の残りははるかに適用しやすくなります。