poteto-principles
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesepoteto-principles
poteto-principles
経験を積んだエンジニアが何度も効いた判断の観点を言葉にした、原則集である。
这是一套原则集合,将经验丰富的工程师反复运用且行之有效的判断视角表达出来。
この skill が必要な理由と達成したい状態
为什么需要这个 skill,以及希望达成的状态
この skill が必要な理由は、作業者がその場で思いつく観点でしか判断を問えないことにある。知らない観点は問いとして浮かばないので、抜けていても気づけず、同じ種類の誤りを繰り返す。経験を積んだエンジニアが、何度も効いた判断の観点を言葉にしたものを借りれば、その抜けを自分の経験を待たずに埋められる。
この skill で達成したい状態は、どの判断も、経験を積んだエンジニアが当てる観点を通っていることである。
之所以需要这个 skill,是因为作业者往往只能就当场想到的视角征求判断意见。未知的视角不会作为问题浮现出来,因此即使有所遗漏也不会察觉,进而反复犯下同类错误。借用经验丰富的工程师反复运用且行之有效的判断视角,就不必等待自己积累经验,也能补上这些遗漏。
希望达成的状态是:无论作出何种判断,都已经过经验丰富的工程师会采用的视角审视。
原則
原则
references/- 。同じ前提を共有する修正が 2 つ以上同じ検査で落ちたら、修正ではなく前提を疑う
attack-the-premise - 。検証とエラー処理は境界に集め、内部は型を信じ、ロジックは純粋関数に置く
boundary-discipline - 。手作業でやらず、同じ作業を再実行できる道具を作る
build-the-lever - 。同じ指示を 2 回書いたら、文ではなく lint、メタデータ、検査、スクリプトにする
encode-lessons-in-structure - 。前例のない設計は、競合する試作を 2 つか 3 つ作って比べてから決める
exhaust-the-design-space - 。実装の都合より使う人の体験を選び、少なく磨いて出す
experience-first - 。計った数字を信じる前に、何がそれを制限しているかを言う
explain-the-number - 。症状ではなく根本原因を直す。再現し、なぜを繰り返し、ガードで黙らせない
fix-root-causes - 。ロジックより先にデータ構造を決め、土台になるものを先に作る
foundational-thinking - 。大きな出力はサブエージェントに回し、主スレッドには要約だけ残す
guard-the-context-window - 。削除に寄せ、問題を解く最小の変更にする
laziness-protocol - 。何度実行しても、途中で落ちても、同じ終状態に収束させる
make-operations-idempotent - 。新しい API を入れたら、呼び出し元を移して旧 API を同じ波で消す
migrate-callers-then-delete-legacy-apis - 。読み手が辿る層と頭に持つ状態を数え、どちらも減らす
minimize-reader-load - 。分岐を散らさず、ドメインをデータ構造に表す
model-the-domain - 。元に戻せる作業は尋ねずに進め、結果を見せる
never-block-on-the-human - 。計画した移行では、途中の安定より最終状態の整合を優先する
outcome-oriented-execution - 。完了と言う前に、代理ではなく実物で確かめる
prove-it-works - 。新しい要件を継ぎ足さず、最初からあったものとして設計し直す
redesign-from-first-principles - 。共有される可変状態は、まず共有をなくし、本当に要るときだけ構造で直列化する
separate-before-serializing-shared-state - 。作業を検証できる小さな単位に切り、1 つずつ確かめて進める
sequence-verifiable-units - 。足す前に消す。不要なコード、検証、スタブを先に取り除く
subtract-before-you-add - 。利用者と同じ呼び方でコードを呼び、利用者が見る結果そのものを検証する
test-behavior-not-implementation - 。不正な状態を型で表せなくし、境界で解析し、コンパイラに嘘をつかない
type-system-discipline
references/- 。如果两个以上基于同一前提的修复都未通过同一项检查,就应质疑前提,而不是继续修复。
attack-the-premise - 。将验证和错误处理集中在边界处;内部相信类型;将逻辑放在纯函数中。
boundary-discipline - 。不要手工完成,应制作能够重复执行同一作业的工具。
build-the-lever - 。如果同一指示写了两遍,就不要写成文字,而应转化为 lint、元数据、检查或脚本。
encode-lessons-in-structure - 。对于没有先例的设计,先构建 2 个或 3 个相互竞争的原型,比较后再决定。
exhaust-the-design-space - 。选择使用者的体验,而非实现上的便利;减少打磨并交付。
experience-first - 。在相信测量结果之前,说明是什么限制了它。
explain-the-number - 。修复根本原因而非症状。复现问题,反复追问为什么,不要只用 guard 加以掩盖。
fix-root-causes - 。先于逻辑决定数据结构,优先构建基础部分。
foundational-thinking - 。将大块输出交给子 Agent 处理,主线程只保留摘要。
guard-the-context-window - 。偏向删除,以解决问题所需的最小改动为准。
laziness-protocol - 。无论执行多少次,或中途失败,都应收敛到相同的最终状态。
make-operations-idempotent - 。引入新 API 后,迁移调用方,并在同一轮变更中删除旧 API。
migrate-callers-then-delete-legacy-apis - 。统计读者需要贯穿的层次以及需要在脑中记住的状态,并同时减少两者。
minimize-reader-load - 。不要让分支散落各处,应使用数据结构表达领域。
model-the-domain - 。可回退的工作无需询问即可推进,并展示结果。
never-block-on-the-human - 。在有计划的迁移中,相比中间过程的稳定,更应优先保证最终状态的一致性。
outcome-oriented-execution - 。在宣布完成之前,使用实际成果而非替代物进行验证。
prove-it-works - 。不要拼凑新需求,而是将其视为一开始就存在的需求并重新设计。
redesign-from-first-principles - 。共享的可变状态应先消除共享;仅在确有必要时,再通过结构进行串行化。
separate-before-serializing-shared-state - 。将工作切分为可验证的小单元,逐一验证并逐步推进。
sequence-verifiable-units - 。添加之前先删除。移除不必要的代码、检查和 stub。
subtract-before-you-add - 。像使用者一样调用代码,并验证使用者实际看到的结果。
test-behavior-not-implementation - 。让非法状态无法由类型表示,在边界处进行解析,不向编译器说谎。
type-system-discipline