บทที่ 20 · Part 5 — Decisions & Delivery

Communicating Design

แปลงเรื่องเดียวกันให้ CTO/squad/regulator/vendor เข้าใจ, diagram ที่รอดการรีวิว, RFC template และการรับ pushback

Design ที่ไม่มีใครเข้าใจจะไม่ถูกสร้าง Design ที่ถูกสร้างแต่ไม่มีใครอธิบายได้จะไม่ได้งบ ไม่ได้อนุมัติ และไม่ได้ถูกดูแล การสื่อสารไม่ใช่ส่วนที่ soft ของงานนี้ — สำหรับ solution architect มันคือตัวงาน งาน design ทั้งหมดใน 19 บทก่อนกลายเป็นเรื่องจริงได้ผ่านบทนี้เท่านั้น

จบบทนี้คุณจะ

  • อธิบายระบบเดียวกันให้ CTO, squad, risk officer และ vendor เข้าใจได้ โดยข้อเท็จจริงไม่เปลี่ยน
  • พูด executive pitch 60 วินาทีที่มีทุกช่องครบ
  • วาด diagram ที่รอดการรีวิว และรู้ว่าทำไม unlabelled arrow เป็นปัญหา
  • เขียน RFC ตาม template และระบุสถานะของทุกคำกล่าว (verified / assumption / needs decision)
  • รับ pushback 6 แบบได้ และรู้ว่าเมื่อไหร่ต้อง escalate

[!TIP] ทักษะแกน: ความจริงเดียว หลายระดับความสูง คุณจะอธิบายระบบเดียวกันให้ CTO, squad ของ engineer, risk officer และ vendor

ข้อเท็จจริงต้องเหมือนกันเป๊ะในทั้ง 4 บทสนทนา — การเปลี่ยนเรื่องเล่าตามผู้ฟังคือวิธีที่ architect เสียเครดิตอย่างถาวร

สิ่งที่เปลี่ยนคือ ระดับความสูง: รายละเอียดไหนที่ใส่ และคุณเทียบ design กับอะไร

แปลตามผู้ฟัง

ผู้ฟังเขาสนใจอะไรจริงๆเปิดด้วยห้ามทำ
CTO / CIOความเสี่ยง, ต้นทุน, เวลา, ความเข้ากับกลยุทธ์, สิ่งที่คุณต้องการจากเขาการตัดสินใจ, ต้นทุน, ความเสี่ยง, และเรื่องเดียวที่ต้องการให้ตัดสินวันนี้เปิดด้วย component diagram · ห้ามเสนอทางเลือกโดยไม่มีคำแนะนำ
Product ownerผู้ใช้เจออะไร, อะไรขึ้นเมื่อไหร่, อะไรอยู่นอก scopeพฤติกรรมที่ผู้ใช้เห็น รวมถึงพฤติกรรมตอน degrade และตอนล้มใช้คำอย่าง "idempotency" โดยไม่แปลเป็นผลลัพธ์ที่ผู้ใช้เจอ
Engineering squadcontract, data model, edge case, ใครเป็นเจ้าของอะไร, วันจันทร์ทำอะไรAPI และ data model แล้วต่อด้วย failure tableปัดผ่านส่วนที่ยาก — เขาจะเจอ และแล้วเขาจะไม่เชื่อส่วนที่เหลือ
Risk / Compliance / Auditcontrol, หลักฐาน, data flow, ใครทำอะไรได้, อะไรถูก logdata flow diagram, จุด control, audit trail, retentionเดาการตีความทางกฎระเบียบ — ให้พูดว่า "นี่คือความเข้าใจของเราจาก [แหล่ง] ขอให้ยืนยันด้วย"
Securitytrust boundary, authn/authz, secret, blast radius, data classificationtrust-boundary diagram และรายการ threatอ้างว่าอะไร "ปลอดภัย" — ให้อธิบายว่ามันป้องกันอะไรและไม่ป้องกันอะไร
Partner / vendorinterface, ปริมาณ, SLA, การจัดการ error, กระบวนการ supportcontract และตัวเลขเปิดเผยสถาปัตยกรรมภายใน, ขีดจำกัดภายใน หรือ roadmap ที่เป็นความลับ — แชร์ interface ไม่ใช่ internals
Operations / on-callจะรู้ได้อย่างไรว่ามันพัง และต้องทำอะไรalert, dashboard, runbook, kill switchส่งของโดยไม่มี runbook แล้วบอกว่าเสร็จแล้ว

Executive version 60 วินาที — จำรูปนี้ไว้

"เรากำลังสร้าง X เพื่อให้ [ผลลัพธ์ทางธุรกิจ] วิธีการคือ [1 ประโยค] ต้นทุนประมาณ [ตัวเลข] และใช้เวลา [ระยะเวลา] ความเสี่ยงหลักคือ [ความเสี่ยง] และเราจัดการด้วย [การบรรเทา] trade-off ที่เรายอมรับคือ [สิ่งที่ยอมเสีย] เพราะ [เหตุผลที่รับได้] จากคุณผมต้องการ [การตัดสินใจ 1 ข้อที่เฉพาะเจาะจง]"

[!TIP] 6 ประโยค ฝึกพูดออกเสียงจนเป็นอัตโนมัติ ถ้าเติมช่องใดช่องหนึ่งไม่ได้ คุณยังไม่พร้อมนำเสนอ — และช่องที่ว่างนั้นบอกคุณตรงๆ ว่าต้องไปทำอะไรมาก่อน

Diagram ที่รอดการรีวิว

ใช้ C4 model — 4 ระดับ และวาดเฉพาะระดับที่ผู้ฟังต้องการ

ระดับแสดงอะไรผู้ฟังจำกัดไว้ที่
1 · Contextระบบของคุณเป็นกล่องเดียว บวกผู้ใช้และระบบภายนอกผู้บริหาร, partner, compliance~10 กล่อง — เป็น diagram ที่คุณจะใช้บ่อยที่สุดและเป็นอันที่ขาดบ่อยที่สุด
2 · Containerapp, service, ฐานข้อมูล, queue — และ protocol ระหว่างกันengineer, ops, security~15 กล่อง · นี่คือ "architecture diagram" ที่คนหมายถึง
3 · Componentข้างใน 1 containerทีมที่สร้างมันเฉพาะอันที่ซับซ้อน ปกติไม่คุ้มที่จะวาด
4 · Codeclassปกติไม่มีใครgenerate ถ้าต้องใช้ · ห้าม maintain ด้วยมือ

กฎ 7 ข้อของ diagram ที่ไม่ถูกรื้อในห้องรีวิว

  1. ทุกกล่องมีชื่อและมีจุดประสงค์ — "Service" ไม่ใช่ชื่อ · "Transfer Service — รับและบันทึกการเคลื่อนย้ายเงิน" คือชื่อ
  2. ทุกลูกศรกำกับว่าอะไรไหลและไหลอย่างไร — HTTPS/JSON, sync, Kafka, async, at-least-once · ลูกศรที่ไม่มีป้ายซ่อนการตัดสินใจที่สำคัญที่สุดในหน้านั้น
  3. ทิศทางหมายถึง dependency และต้องสม่ำเสมอ — การผสม "เรียก" กับ "ส่งข้อมูลไป" ใน diagram เดียวกันรับประกันว่า reviewer จะสับสน
  4. แสดง trust boundary เป็น container เส้นประ — internet / DMZ / internal / ขอบเขตข้อมูลบัตร / partner · security และ audit อ่านอันนี้ก่อน และถ้าไม่มีเขาจะถาม
  5. 1 diagram 1 คำถาม — diagram ที่ตอบ "การจ่ายเงินไหลอย่างไร" ไม่ใช่ diagram เดียวกับ "อะไร deploy อยู่ที่ไหน" · วาด 2 อัน
  6. ใส่ legend และวันที่ และเก็บ source ไว้ข้างโค้ดเพื่อให้อัปเดตได้ — diagram ที่ไม่มีวันที่ใน wiki คือข้อมูลผิดภายใน 6 เดือน
  7. Diagram as code (Mermaid, PlantUML, Structurizr) ถูกรีวิวใน pull request และคงความทันสมัย — ภาพวาดใน slide deck ไม่

ตัวอย่างข้างบนคือ Level-2 ที่มี trust boundary

สังเกตว่า ทุกลูกศรบอก protocol และ sync/async และ ขอบเขตข้อมูลบัตรแยกออกมาเป็น boundary ของตัวเอง — 2 อย่างนี้คือสิ่งที่ security กับ audit จะถามหาก่อนอย่างอื่น

วินัยบนกระดาน (ทั้งในสัมภาษณ์และในประชุมจริง)

LAYOUT — ใช้ layout เดิมทุกครั้ง เพื่อให้มือของคุณว่างพอที่จะคิดเรื่องโจทย์
แทนที่จะคิดเรื่องรูป

 ┌──────────────┬───────────────────────────────┬──────────────┐
 │ REQUIREMENTS │   ARCHITECTURE (อันใหญ่)      │  ESTIMATES   │
 │  functional  │                               │   QPS        │
 │  quality     │                               │   storage    │
 │  non-goals   │                               │   peak       │
 ├──────────────┤                               ├──────────────┤
 │ API/CONTRACT │                               │  DEEP DIVE / │
 │ DATA MODEL   │                               │  FAILURES    │
 └──────────────┴───────────────────────────────┴──────────────┘

6 ข้อที่ต้องทำระหว่างนั้น:

  • เขียน requirement และ NON-GOAL ก่อน ไว้ที่มุมกระดาน และปล่อยให้มองเห็นตลอด — คุณจะชี้ไปที่มันทั้ง session
  • บรรยายไปพร้อมกับที่วาด — "ผมวาง cache ที่นี่เพราะ pattern 1 คือ 300 read/s และทนความเก่าได้ 5 วินาที"
  • เว้นที่ว่างไว้ — คุณจะต้องเพิ่มของ
  • เวลาสมมติอะไร ให้พูดคำว่า "สมมติว่า" แล้วเขียนมันลงไป
  • เวลาไม่รู้ ให้พูดว่า "ผมไม่รู้ นี่คือวิธีที่ผมจะหาคำตอบ" — ในประชุมจริงมันสร้างความเชื่อถือ ในการสัมภาษณ์ได้คะแนนสูงกว่าคำตอบผิดที่พูดอย่างมั่นใจ
  • คุม session เอง — "เหลืออีก 15 นาที ผมอยากใช้มันกับ ledger กับเส้นทาง reconciliation อันนั้นมีประโยชน์ที่สุดไหม" · ทั้งผู้สัมภาษณ์และ stakeholder ตอบสนองดีกับ architect ที่บริหารเวลาอย่างชัดเจน

RFC template

1 เอกสารต่อ 1 design ที่มีนัยสำคัญ เก็บใน version control ข้างโค้ด เป้าหมาย 3–6 หน้า — ถ้ายาวกว่านั้นไม่มีใครอ่าน และความยาวมักซ่อนการตัดสินใจที่ยังไม่ได้ตัดสิน

# RFC-021: Wallet-to-wallet transfers

Author · Reviewers · Status (Draft|In review|Approved|Superseded) · Date
Approval required from: <ตำแหน่งที่ระบุชื่อ สำหรับอะไรที่กระทบ production>

## 1. Summary (ไม่เกิน 5 ประโยค)
เรากำลังสร้างอะไร เพื่อใคร และวิธีการ 1 บรรทัด

## 2. Problem & context
ทำไมตอนนี้ · วันนี้มีอะไรอยู่ · อะไรพังหรือขาด · ลิงก์ไป business case
ใส่ตัวเลขที่ให้เหตุผลว่างานนี้ควรทำ

## 3. Goals / Non-goals
ชัดเจนและทดสอบได้
Non-goal เป็นหัวข้อที่มีค่าที่สุดในเอกสาร — มันคือสิ่งที่หยุด scope creep
ในอีก 6 สัปดาห์

## 4. Requirements
รายการ functional · quality attribute พร้อมตัวเลข (latency, availability,
consistency, durability, retention) · constraint
สำหรับทุก requirement ด้าน compliance หรือนโยบาย:
*แหล่งที่มา และใครยืนยัน พร้อมวันที่*

## 5. Proposed design
Context diagram แล้วต่อด้วย container diagram · API contract ·
data model พร้อม access pattern table ·
request trace ของ happy path และ failure path อย่างน้อย 2 เส้น

## 6. Alternatives considered
2-3 ทางเลือก พร้อมเหตุผลที่แพ้ · ต้องมี "ไม่ทำอะไร / ขยายระบบเดิม" ด้วย
เอกสารที่ไม่มีทางเลือกที่ถูกปฏิเสธอ่านเหมือนการตัดสินใจที่ไม่เคยเกิดขึ้นจริง

## 7. Trade-offs accepted
เรายอมเสียอะไร และทำไมมันรับได้ในบริบทนี้

## 8. Failure modes & operations
Failure table · SLO และ error budget · alert · ลิงก์ runbook ·
พฤติกรรมตอน degrade รวมถึง *ใครเป็นเจ้าของการตัดสิน fail-open/fail-closed* ·
kill switch

## 9. Security & privacy
Trust boundary · data classification · โมเดล authn/authz ·
การจัดการ secret · อะไรถูก log และอะไรถูก mask ·
retention และการลบ · threat ที่พิจารณาและที่อยู่นอก scope

## 10. Rollout & migration
กลยุทธ์ flag · ขั้นการ ramp พร้อม metric ที่เป็น gate ของแต่ละขั้น ·
เงื่อนไขและขั้นตอน rollback · แผน migrate ข้อมูล (expand-migrate-contract) ·
และวิธียืนยันความถูกต้องในแต่ละขั้น

## 11. Cost
ค่า infra รายเดือนโดยประมาณ และ cost per business event ถ้าทำได้

## 12. Open questions & decisions needed
ใครต้องตัดสินอะไร ภายในเมื่อไหร่ เพื่อให้โปรเจกต์เดินต่อได้
ให้เฉพาะเจาะจง — "Compliance ยืนยันระยะเวลา retention ภายใน 15 ส.ค."

## Appendix: ADR ที่เกิดจาก RFC นี้

วินัยทางภาษาในเอกสาร design

ระบุสถานะของทุกคำกล่าวให้แม่น เพราะ reviewer และ auditor ปรับระดับความเชื่อถือของคุณจากข้อนี้

สถานะรูปประโยค
Verified"วัดใน load test วันที่ 2026-08-05: 1,240 tps ที่ p99 620 ms" (ลิงก์หลักฐาน)
From a source"rail ระบุ timeout 30 s ในเอกสาร [ลิงก์ไปหัวข้อของ spec]"
Assumption"เราสมมติ peak factor 10× ต้องยืนยันกับ telemetry ของ production"
Estimate"ประมาณ 300 tps เอาแค่ order of magnitude"
Needs a decision"ระยะเวลา retention: รอการยืนยันจาก Compliance"

ห้ามเขียนคำว่า "tested", "approved", "compliant" หรือ "production-ready" เว้นแต่มันเป็นความจริงและคุณชี้หลักฐานได้

คำกล่าวที่เกินจริงเพียงข้อเดียวที่ถูกจับได้ในห้องรีวิว ทำให้ reviewer กลับไปตรวจเอกสารทั้งฉบับใหม่ — และเขาทำถูก

Design review ที่ผลิตการตัดสินใจออกมาได้

ก่อนระหว่างหลัง
ส่งเอกสารล่วงหน้า 48 ชม. · ระบุการตัดสินใจที่คุณต้องการอย่างเฉพาะเจาะจง · เชิญคนที่ตัดสินใจได้ บวกคนขี้สงสัย 1 คน และคนที่จะต้องดูแลมัน 1 คน5 นาที context, 10 นาที design, 30 นาทีคุย · จดบนหน้าจอที่แชร์ให้คนเห็นว่าข้อกังวลของเขาถูกบันทึก · จับเวลา rabbit hole: "เอาไปคุยต่อข้างนอก ผมจดเป็น open question ข้อ 4"ภายใน 24 ชม.: เผยแพร่การตัดสินใจ, เจ้าของ, วันที่ และ open question · เขียน ADR · อัปเดตเอกสาร · ความเงียบหลังรีวิวคือวิธีที่ design ตายอย่างเงียบๆ

การ facilitate ที่ได้ผล:

  • ถามว่า "อะไรจะต้องเป็นจริง เพื่อให้ design นี้เป็น design ที่ผิด"
  • ถามคนที่ senior และเงียบที่สุดโดยตรง
  • แยก "ผมไม่เห็นด้วย" ออกจาก "ผมไม่เข้าใจ" ให้เร็ว
  • เมื่อ 2 คนกำลังเถียงกัน เรียกชื่อเกณฑ์ที่เขาไม่เห็นด้วยกันจริงๆ — "คุณกำลัง optimize เพื่อความเร็วในการส่งของ เขากำลัง optimize เพื่อ operability ที่นี่อันไหนสำคัญกว่า และใครเป็นคนตัดสิน"

รับ pushback

คุณได้ยินสิ่งที่มักอยู่เบื้องหลังตอบด้วย
"อันนี้ over-engineered"เขาไม่เห็นว่า requirement ข้อไหนขับความซับซ้อนนี้ — และบางครั้งเขาถูกไล่ทุก component กลับไปหา requirement ที่ระบุไว้ · ถ้าอันไหนไล่กลับไม่ได้ ให้ลบ และขอบคุณเขา
"ทำไมไม่ใช้ X เฉยๆ"ความสงสัยจริง หรือการเชียร์เครื่องมือที่คุ้นเคย"เป็นทางเลือกที่ดี มันอยู่ใน matrix แล้ว มันแพ้ที่ [เกณฑ์] เพราะ [เหตุผล] ถ้า [เกณฑ์] เปลี่ยน X จะเป็นคำตอบที่ถูก"
"เราไม่มีเวลาทำอย่างนั้น"เป็น constraint จริง และเป็นการขอให้คุณช่วยเขาเลือกเสนอแผนแบ่งขั้น: อะไรขึ้นตอนนี้, อะไรเลื่อน, และความเสี่ยงที่ชัดเจนของการเลื่อน · ให้คนที่รับผิดชอบเลือกโดยเห็นความเสี่ยง — ห้ามรับการตัดสินใจนั้นมาไว้กับตัวเองอย่างเงียบๆ
"vendor บอกว่าเขาจัดการเรื่องนั้นได้"คำกล่าวที่ไม่มีหลักฐาน"ขอเป็นลายลักษณ์อักษรและทดสอบใน pilot ตัวเลขไหนที่เราต้องให้เขายืนยัน"
"ทำแบบระบบเดิมก็พอ"ความกลัวความเสี่ยงที่ไม่คุ้นเคย · มักมีความรู้เชิงสถาบันที่จริงถามว่าระบบเดิมทำอะไรถูก — มักมีเหตุผลที่ได้มาด้วยความเจ็บปวด · แล้วระบุเฉพาะเจาะจงว่าคุณกำลังเปลี่ยนอะไรและทำไม
คนที่ senior กว่าล้มการตัดสินใจของคุณในเรื่องความเสี่ยงจริงระดับการยอมรับความเสี่ยงต่างกัน หรือเขามีข้อมูลที่คุณไม่มีระบุความเสี่ยง 1 ครั้ง เป็นลายลักษณ์อักษร ด้วยภาษาที่เป็นกลาง พร้อมการบรรเทาที่คุณแนะนำ แล้วทำตามการตัดสินใจของเขาอย่างมืออาชีพ · escalate เฉพาะเมื่อมันข้ามเส้นด้านความปลอดภัย กฎหมาย หรือกฎระเบียบ — และตอนนั้นให้ escalate ผ่านช่องทางที่ถูกต้อง เป็นลายลักษณ์อักษร โดยไม่มีดราม่า

Influence without authority

Solution architect ส่วนใหญ่ไม่มีอำนาจสั่งการทีมที่จะสร้าง design สิ่งที่ได้ผล เรียงตามประสิทธิผล:

  1. เป็นประโยชน์อย่างพิสูจน์ได้ — ทำ estimation ที่ไม่มีใครทำ, เขียน failure table ที่ไม่มีใครเขียน
  2. ให้ชื่อของคนอื่นอยู่บนไอเดียที่ดี
  3. สร้างมัน 1 ครั้งเป็น reference implementation แทนที่จะเขียนเอกสารมาตรฐาน
  4. ทำให้ทางที่ถูกเป็นทางที่ง่าย (template, library, paved road)
  5. อย่าชนะการเถียงที่ไม่จำเป็นต้องเถียง

อำนาจตามหลังประวัติของการถูกต้องในทางที่คนอื่นตรวจสอบได้

Lab 20 และ Capstone

Lab 20 (90 นาที)

หยิบ design ที่ดีที่สุดของคุณจากLab 18 แล้วผลิต:

ผลงานเกณฑ์
(ก) C4 Level-1 และ Level-2 เป็นโค้ดทุกลูกศรมีป้าย, มี trust boundary, มีวันที่
(ข) Executive pitch 60 วินาทีนำเสนอต่อกลุ่มและจับเวลา — จะถูกตัดที่ 60 วินาที
(ค) design เดียวกันอธิบายให้ "compliance officer" ที่ถามแต่เรื่อง data flow, control และ retention—
(ง) 2 หน้าของ RFC ครอบคลุม failure mode และ rollout—

Peer scoring 2 ข้อ: สถานะของทุกคำกล่าวชัดไหม (verified / assumption / needs decision)? และ คำอธิบาย 2 แบบมีข้อเท็จจริงชุดเดียวกันไหม?

Capstone (1 วันเต็ม หรือ 1 สัปดาห์แบบ part-time)

เลือกระบบจริงในองค์กรของคุณ — ในอุดมคติคืออันที่คุณไม่พอใจ แล้วผลิต RFC ที่ครบ:

  • การประเมินสถานะปัจจุบัน พร้อมตัวเลขที่วัดได้
  • Target design
  • แผน migration ด้วย expand-migrate-contract หรือ strangler fig
  • Failure table
  • SLO
  • Cost model พร้อม cost-per-transaction
  • ADR 3 ฉบับ
  • รายการการตัดสินใจที่คุณต้องการ จากคนที่ระบุชื่อ

นำเสนอใน 20 นาทีต่อคณะที่เล่นบท CTO, product owner และ risk officer

เกณฑ์ผ่าน

  • ทุก component ไล่กลับไปหา requirement ได้
  • ทุกตัวเลขถูกกำกับว่า verified / estimated / assumed
  • failure table มีสัญญาณตรวจจับทุกแถว
  • แผน migration ย้อนกลับได้ทุกขั้น
  • คุณขอการตัดสินใจที่ถูกต้อง จากคนที่ถูกต้อง

ถ้าทำสิ่งนี้ได้ คุณกำลังทำงานนี้อยู่จริง

[!NOTE] สรุปบทนี้ ความจริงเดียว หลายระดับความสูง — ข้อเท็จจริงห้ามเปลี่ยนตามผู้ฟัง · executive version 6 ประโยค และช่องที่เติมไม่ได้บอกคุณว่าต้องไปทำอะไร · ลูกศรที่ไม่มีป้ายซ่อนการตัดสินใจที่สำคัญที่สุด · diagram as code รอด diagram ใน slide ไม่รอด · ระบุสถานะของทุกคำกล่าวใน RFC และห้ามเคลมคำว่า tested/approved/compliant โดยไม่มีหลักฐาน · และความเงียบหลัง design review คือวิธีที่ design ตายอย่างเงียบๆ