Core Lessons

コアレッスン

前提を満たす順に、実践・説明・証明・転用・復習を繰り返します。

  1. システム思考とエンジニアリングのトレードオフ

    境界、制約、代替案、反証条件を結び、変化に耐える意思決定を記録する。

  2. アルゴリズム選択を計算量と測定で検証する

    漸近的な予測と再現可能な実測を分け、入力分布に合うアルゴリズムを選ぶ。

  3. CPU・メモリ経路とアクセス局所性

    キャッシュ、TLB、主記憶までの経路を観測し、データ配置から性能を判断する。

  4. 要求を発見し、境界と例外をドメインモデルへ結ぶ

    要求を文書の形式ではなく検証可能な合意として扱い、用語、境界、状態遷移、例外を追跡する。

  5. プロセス・スレッド・並行性の不変条件

    隔離と共有の境界を選び、再現可能な競合を不変条件で修正する。

  6. API契約を失敗、再送、進化まで設計する

    wire形式だけでなく意味、認可、失敗、冪等性を契約化し、オフライン利用者を壊さず進化させる。

  7. アクセスパターンと制約からストレージADRを再計算する

    query shape、不変条件、更新競合、成長予測を証拠に、relational・document・key-valueモデルを同じ基準で比較する。

  8. 人間中心設計で静的サイトの利用可能性を監査する

    キーボード、200%ズーム、読み上げ順、ユーザビリティを観測し、標準への適合と人が使えることを区別した監査記録を作る。

  9. 読者の判断を支える設計文書とADRを構成する

    同じ技術判断を、経営読者向けの短い要約と実装者向けの検証可能な付録へ分け、代替案、リスク、決定証拠を失わずに伝える。

  10. ネットワーク遅延と部分失敗を層別に診断する

    DNS、TCP、TLS、HTTPの時系列を分け、期限内に失敗を扱う予算を設計する。

  11. 変更理由でモジュール境界を設計しADRで更新する

    同時に変わる知識を隠蔽し、依存方向と複数viewを検証可能なADRへ記録する。

  12. 分離異常を再現し、abortとretryまで設計する

    決定的schedulerでnon-repeatable readとwrite skewを再現し、Serializableのabort後にトランザクション全体をretryして業務不変条件を回復する。

  13. 負荷曲線と実測profileから安全容量を判断する

    simulated負荷と実際のlocal profileを混同せず、tail、queue、回復、headroomから安全な容量判断を組み立てる。

  14. 静的グラフィックスを同等の情報構造として設計する

    roadmapとquantitative chartをsemantic HTMLとCSSで表し、色や形だけに依存せず、同じ関係と値をテキスト構造から検証できるようにする。

  15. 反証可能な仮説から停止判断までを事前に設計する

    発見した問題を反証可能な仮説へ変換し、success metric、guardrail、stop conditionを事前固定して、simulated実験の証拠から継続または停止を判断する。

  16. TDDとリスク別テスト戦略で変更を証明する

    RED-GREEN-REFACTORを実行履歴として残し、単体・統合・契約・性質・メタモルフィックテストを失敗リスクへ割り当てる。

  17. 重複・順序・分断を再現し復旧境界を設計する

    決定的event simulatorでat-least-once配信、順序入替、network分断、回復を再現し、永続dedupeと冪等な状態遷移を検証する。

  18. 脅威モデルを設計・検証・残余リスクへ接続する

    資産、actor、trust boundary、data flowから外部・内部者脅威を導き、controlと検証を追跡可能にする。

  19. 利用者journeyからSLI、SLO、alert、runbookを導く

    内部resourceではなく利用者に見える結果をgood eventへ変換し、error budgetとburn rateから行動可能な運用契約を作る。

  20. 未知を残したままlegacy systemを安全に変更する

    小さなlegacy fixtureから実行経路、変更理由、未知領域を地図化し、振る舞いを保存するcharacterization testを変更前の証拠として構築する。

  21. コードレビューを協働品質システムとして運営する

    変更リスクからpriorityを導き、evidenceとactionableな提案でauthor fixを支援し、別reviewerの独立再評価までを一つの品質ループとして設計する。

  22. 倫理・privacy・社会的影響を設計制約へ変える

    影響を受ける人とデータの生涯を可視化し、平均値に隠れる不均等な害、軽減策、残余risk、ownerを技術判断へ組み込む。

  23. 互換性を保つschema migrationを段階実行する

    database changeをexpand、dual write、backfill、dual read、contractへ分け、各段階の観測、停止、rollback、互換性を実行可能な移行計画として設計する。

  24. incident responseを検証可能な学習へ変える

    時系列の証拠から影響と意思決定を再構成し、個人を責めずsystem conditionを調べ、ownerと検証方法を持つ対策へ接続する。

  25. CI・段階配信・supply chainを結果証拠で閉じる

    CIをfail-closedに保ち、artifact digestとprovenanceを検証し、段階配信の観測からadvanceまたはrollbackを決め、command成功ではなくsystem outcomeを証拠化する。

  26. チームインターフェースで社会技術アーキテクチャを設計する

    ownership、dependency、cognitive load、SLOを明示したteam interfaceを作り、組織構造とsoftware境界が互いへ与える影響を観測可能にする。

  27. OSS governanceで貢献とリリースを持続可能にする

    第三者の貢献経路、maintainerの意思決定境界、repository readiness、release evidenceを一つのjourneyとして検証し、公開リポジトリを安全にstewardする。

  28. engineering economicsで信頼性と容量へ投資する

    直接費だけでなく機会費用、運用時間、信頼性損失、容量制約を同じ入力へ結び、unit economicsと感度分析から投資判断を再現する。

  29. 時差と言語を越える非同期RFCを設計する

    timezone、language、contextの非対称性を明示し、dissentと応答期限を記録したRFCでmeetingなしにレビュー可能な意思決定を作る。

  30. 証拠と撤退条件で技術方針を率いる

    delivery metrics、倫理、security、cost、uncertainty、dissentを同じstrategy optionsへ結び、可逆な第一歩とwithdrawal conditionsを持つ技術方針を作る。