Core Lessons
コアレッスン
前提を満たす順に、実践・説明・証明・転用・復習を繰り返します。
- システム思考とエンジニアリングのトレードオフ
境界、制約、代替案、反証条件を結び、変化に耐える意思決定を記録する。
- アルゴリズム選択を計算量と測定で検証する
漸近的な予測と再現可能な実測を分け、入力分布に合うアルゴリズムを選ぶ。
- CPU・メモリ経路とアクセス局所性
キャッシュ、TLB、主記憶までの経路を観測し、データ配置から性能を判断する。
- 要求を発見し、境界と例外をドメインモデルへ結ぶ
要求を文書の形式ではなく検証可能な合意として扱い、用語、境界、状態遷移、例外を追跡する。
- プロセス・スレッド・並行性の不変条件
隔離と共有の境界を選び、再現可能な競合を不変条件で修正する。
- API契約を失敗、再送、進化まで設計する
wire形式だけでなく意味、認可、失敗、冪等性を契約化し、オフライン利用者を壊さず進化させる。
- アクセスパターンと制約からストレージADRを再計算する
query shape、不変条件、更新競合、成長予測を証拠に、relational・document・key-valueモデルを同じ基準で比較する。
- 人間中心設計で静的サイトの利用可能性を監査する
キーボード、200%ズーム、読み上げ順、ユーザビリティを観測し、標準への適合と人が使えることを区別した監査記録を作る。
- 読者の判断を支える設計文書とADRを構成する
同じ技術判断を、経営読者向けの短い要約と実装者向けの検証可能な付録へ分け、代替案、リスク、決定証拠を失わずに伝える。
- ネットワーク遅延と部分失敗を層別に診断する
DNS、TCP、TLS、HTTPの時系列を分け、期限内に失敗を扱う予算を設計する。
- 変更理由でモジュール境界を設計しADRで更新する
同時に変わる知識を隠蔽し、依存方向と複数viewを検証可能なADRへ記録する。
- 分離異常を再現し、abortとretryまで設計する
決定的schedulerでnon-repeatable readとwrite skewを再現し、Serializableのabort後にトランザクション全体をretryして業務不変条件を回復する。
- 負荷曲線と実測profileから安全容量を判断する
simulated負荷と実際のlocal profileを混同せず、tail、queue、回復、headroomから安全な容量判断を組み立てる。
- 静的グラフィックスを同等の情報構造として設計する
roadmapとquantitative chartをsemantic HTMLとCSSで表し、色や形だけに依存せず、同じ関係と値をテキスト構造から検証できるようにする。
- 反証可能な仮説から停止判断までを事前に設計する
発見した問題を反証可能な仮説へ変換し、success metric、guardrail、stop conditionを事前固定して、simulated実験の証拠から継続または停止を判断する。
- TDDとリスク別テスト戦略で変更を証明する
RED-GREEN-REFACTORを実行履歴として残し、単体・統合・契約・性質・メタモルフィックテストを失敗リスクへ割り当てる。
- 重複・順序・分断を再現し復旧境界を設計する
決定的event simulatorでat-least-once配信、順序入替、network分断、回復を再現し、永続dedupeと冪等な状態遷移を検証する。
- 脅威モデルを設計・検証・残余リスクへ接続する
資産、actor、trust boundary、data flowから外部・内部者脅威を導き、controlと検証を追跡可能にする。
- 利用者journeyからSLI、SLO、alert、runbookを導く
内部resourceではなく利用者に見える結果をgood eventへ変換し、error budgetとburn rateから行動可能な運用契約を作る。
- 未知を残したままlegacy systemを安全に変更する
小さなlegacy fixtureから実行経路、変更理由、未知領域を地図化し、振る舞いを保存するcharacterization testを変更前の証拠として構築する。
- コードレビューを協働品質システムとして運営する
変更リスクからpriorityを導き、evidenceとactionableな提案でauthor fixを支援し、別reviewerの独立再評価までを一つの品質ループとして設計する。
- 倫理・privacy・社会的影響を設計制約へ変える
影響を受ける人とデータの生涯を可視化し、平均値に隠れる不均等な害、軽減策、残余risk、ownerを技術判断へ組み込む。
- 互換性を保つschema migrationを段階実行する
database changeをexpand、dual write、backfill、dual read、contractへ分け、各段階の観測、停止、rollback、互換性を実行可能な移行計画として設計する。
- incident responseを検証可能な学習へ変える
時系列の証拠から影響と意思決定を再構成し、個人を責めずsystem conditionを調べ、ownerと検証方法を持つ対策へ接続する。
- CI・段階配信・supply chainを結果証拠で閉じる
CIをfail-closedに保ち、artifact digestとprovenanceを検証し、段階配信の観測からadvanceまたはrollbackを決め、command成功ではなくsystem outcomeを証拠化する。
- チームインターフェースで社会技術アーキテクチャを設計する
ownership、dependency、cognitive load、SLOを明示したteam interfaceを作り、組織構造とsoftware境界が互いへ与える影響を観測可能にする。
- OSS governanceで貢献とリリースを持続可能にする
第三者の貢献経路、maintainerの意思決定境界、repository readiness、release evidenceを一つのjourneyとして検証し、公開リポジトリを安全にstewardする。
- engineering economicsで信頼性と容量へ投資する
直接費だけでなく機会費用、運用時間、信頼性損失、容量制約を同じ入力へ結び、unit economicsと感度分析から投資判断を再現する。
- 時差と言語を越える非同期RFCを設計する
timezone、language、contextの非対称性を明示し、dissentと応答期限を記録したRFCでmeetingなしにレビュー可能な意思決定を作る。
- 証拠と撤退条件で技術方針を率いる
delivery metrics、倫理、security、cost、uncertainty、dissentを同じstrategy optionsへ結び、可逆な第一歩とwithdrawal conditionsを持つ技術方針を作る。