Kaen — เรียนวิศวกรรมซอฟต์แวร์เป็นภาษาคน
เรียนเรื่องยากของซอฟต์แวร์ เป็นภาษาคน
คอร์สเชิงลึกภาษาไทย พร้อมไดอะแกรมโต้ตอบและแบบฝึกหัด เลือกเส้นทางที่ใช่ — DDD, .NET, AI Engineering หรือ Rust
เส้นทาง DDD — หลักการและกลยุทธ์
4 คอร์สออกแบบซอฟต์แวร์รอบ domain ธุรกิจ ตั้งแต่แนวคิดหลักจนถึงการค้น domain ทั้งทีม
- ระดับกลาง
Domain-Driven Design ฉบับภาษาคน
ออกแบบซอฟต์แวร์รอบ domain ธุรกิจจริง ไม่ใช่รอบฐานข้อมูล
6 บทเรียน
เริ่มเรียน → - ระดับกลาง
DDD Distilled — กลั่นจากตำรา
แปลพร้อมสรุปความเข้าใจจากหนังสือ Domain-Driven Design Distilled ของ Vaughn Vernon (2016)
7 บทเรียน
เริ่มเรียน → - ระดับสูง
Patterns, Principles & Practices of DDD
แปลไทยครบทั้งเล่มจากตำราของ Scott Millett & Nick Tune — ตั้งแต่หลักการ กลยุทธ์ ยุทธวิธี จนถึงสถาปัตยกรรม app (26 บท)
26 บทเรียน
เริ่มเรียน → - ระดับเริ่มต้น
Event Storming
ค้น domain ทั้งทีมด้วย Post-it สีส้มภายในไม่กี่ชั่วโมง
6 บทเรียน
เริ่มเรียน →
เส้นทาง .NET — สร้างและดูแล domain Order
9 คอร์สลงมือสร้าง platform ฟู้ดเดลิเวอรีจริงทีละชั้น ตั้งแต่ C# สมัยใหม่จนถึง observability
- ระดับเริ่มต้น
C# สมัยใหม่สำหรับ DDD — ปูพื้นก่อนลงมือ
เรียน C# สมัยใหม่ด้วยการสร้าง domain Order ตั้งแต่ศูนย์ — จุดเริ่มต้นที่แนะนำของสาย .NET/DDD ทั้งเส้น ตั้งแต่ record ที่กลายเป็น Value Object, pattern matching ที่ขับเคลื่อนสถานะ, nullable reference types ที่กลายเป็น guard clause, ไปจนถึง async/await ที่กลายเป็นรูปร่างของ port
8 บทเรียน
เริ่มเรียน → - ระดับกลาง
Clean Architecture ด้วย .NET
ลงมือสร้าง ASP.NET Core API จริงทีละ layer ตาม Dependency Rule — domain ฟู้ดเดลิเวอรีต่อจาก Event Storming พร้อม EF Core, CQRS/MediatR, DI และ test
8 บทเรียน
เริ่มเรียน → - ระดับสูง
แปลง DDD tactical patterns เป็น code จริง (C#)
ลงลึก domain Order เดิมจาก Clean Architecture .NET — Value Object, Entity, Aggregate, state machine, Domain Event, Specification และ Factory ที่รักษากฎธุรกิจไว้ใน code
8 บทเรียน
เริ่มเรียน → - ระดับกลาง
ทดสอบ app DDD/Clean Architecture ให้เป็น
พิสูจน์ว่า domain Order จาก Clean Architecture .NET + DDD in Code ทำงานถูกจริง — ยูนิต test domain แบบไม่ต้อง mock, test double, Testcontainers และ e2e ผ่าน API พร้อมพีระมิด test และสี่เสาหลัก
8 บทเรียน
เริ่มเรียน → - ระดับสูง
เก็บ Aggregate ลงฐานข้อมูลด้วย EF Core โดยไม่ทำลาย model
เก็บ domain Order เดิมทั้งก้อนลง SQL อย่างซื่อสัตย์ต่อ model — strongly-typed ID, owned type, migration, optimistic concurrency, transaction boundary และ query ให้ไม่ N+1 ต่อจาก Clean Architecture บท 4
8 บทเรียน
เริ่มเรียน → - ระดับสูง
ออกแบบระบบเงินและ Ledger ด้วย DDD
เงินไม่มีวันหาย — วางระบบ double-entry ledger ให้ platform ฟู้ดเดลิเวอรีเดิม รองรับ wallet, PromptPay, escrow ระหว่างส่งอาหาร, settlement, payout ให้ร้าน/ไรเดอร์, refund และ reconcile ยอดทุกบาททุกสตางค์
8 บทเรียน
เริ่มเรียน → - ระดับสูง
แยก Bounded Context แล้วเชื่อมกลับ — Modular Monolith สู่ Service
ขยาย domain Order เดิมเป็น 4 bounded context (Ordering, Kitchen, Delivery, Payment) เชื่อมกันด้วย integration event และ transactional outbox ที่เชื่อถือได้ ก่อนแตก1 context ออกเป็น service จริงด้วย Wolverine + RabbitMQ
8 บทเรียน
เริ่มเรียน → - ระดับกลาง
Observability platform Order — OpenTelemetry + ClickStack
ปิดเส้นทาง platform Order (#5–#10) ด้วยชั้น OPERATE ที่ขาดไป — instrument ระบบ 4 bounded context ด้วย OpenTelemetry ที่เป็นกลางต่อ vendor แล้วส่ง trace/metric/log เข้า ClickStack (ClickHouse + HyperDX) ไล่หนึ่งออเดอร์เป็น trace เดียวข้าม RabbitMQ ตั้ง SLO/error budget และขับเคลื่อน incident จริงจาก alert สู่ root cause ด้วย C#/.NET
8 บทเรียน
เริ่มเรียน → - ระดับสูง
เขียน C#/.NET ให้เร็ว: struct, zero allocation, Span<T>
ชั้น PERFORMANCE ของ domain Order — คอร์ส #8–#11 สร้าง domain ขึ้นมา #19 สอนให้มองเห็นมันตอนรัน คอร์สนี้ทำให้มันเร็วขึ้น โดยมีหลักฐาน hot path เดียวทั้งคอร์ส (parse บรรทัดออร์เดอร์ → รวมยอด → พิมพ์ใบเสร็จ) ไล่จากการวัดให้เป็น → struct/class → boxing → Span<T>/stackalloc → ArrayPool → งาน string → ValueTask จนถึง capstone ที่วัดได้ว่าลดจาก 12,272 byte ต่อ batch เหลือ 0 byte โดยผลลัพธ์ยังตรงกันทุก byte (982 byte ทั้ง 7 version) ทุกตัวเลขในคอร์สวัดจริงบนเครื่องเดียว .NET 10.0.10 / linux-x64 และคอร์สนี้ตัดสินด้วย column Allocated ไม่ใช่ column Mean
8 บทเรียน
เริ่มเรียน →
เส้นทาง AI Engineering
8 คอร์สสร้างระบบ AI agent ที่ใช้งานได้จริงบน domain Order ตั้งแต่ agent ตัวแรกจนถึงความปลอดภัย แล้วเปิดฝากระโปรง model ถึงระดับ neural net
- ระดับเริ่มต้น
agent ตัวแรกด้วย C#/.NET — สร้าง AI Agent ตัวแรก
ประตูสำหรับมือใหม่ของสาย AI-engineering — สร้าง AI agent ตัวแรกบน domain Order ฟู้ดเดลิเวอรีที่คุ้นเคย ไล่จากการเรียก Messages API แบบดิบ สู่ Microsoft.Extensions.AI แล้วเติม tool use ปิดท้ายด้วย the loop จนได้ agent Order support ตัวเล็ก ๆ ที่ทำงานได้จริง
8 บทเรียน
เริ่มเรียน → - ระดับกลาง
วิศวกรรมบริบท — Context Engineering
สร้าง context layer จริงคร่อม agent Order จากคอร์สที่ 15 — retrieval, long-term memory, งบประมาณ token, compaction และการจัดระเบียบผลของ tool แล้ววัดต้นทุน token ของมันด้วย C#/.NET
8 บทเรียน
เริ่มเรียน → - ระดับสูง
เครื่องยนต์ของ agent — Agent Harness & Loop
สร้าง runtime ของ agent คร่อม agent Order จากคอร์สที่ 15/16 ด้วย C#/.NET — the loop และ harness, workflow pattern ตามแนว BEA (chaining, routing, parallelization, orchestrator-workers, evaluator-optimizer), ความทนทาน (retry, timeout, idempotency) ปิดท้ายด้วย autonomous loop ที่มี compound stop policy จริง
8 บทเรียน
เริ่มเรียน → - ระดับสูง
Agent as Bounded Context — ออกแบบระบบ AI Agent ด้วย DDD
คอร์ส AI-engineering คอร์สแรกของแก่น — นำเครื่องมือเชิงกลยุทธ์ของ DDD (bounded context, ubiquitous language, context map, ACL) มาออกแบบระบบ AI agent ให้มีขอบเขตชัดเจน เป็นคำตอบทวนกระแส multi-agent hype ที่มักแตก agent เกินความจำเป็น
8 บทเรียน
เริ่มเรียน → - ระดับสูง
ประเมิน AI Agent ให้เป็น — Evals
คู่หูสาย AI-engineering ของ Testing in Practice — วัดผล ops-copilot ต่อจาก Agent as Bounded Context ให้เป็นวิทยาศาสตร์ ด้วย eval ที่ตัดสินจากผลลัพธ์ไม่ใช่ trajectory, LLM-as-judge ที่ผ่านการ calibrate, error analysis อย่างเป็นระบบ และ eval ทั้ง offline กับ online
8 บทเรียน
เริ่มเรียน → - ระดับสูง
ออกแบบ MCP Server ที่ดี
คอร์สที่สามในสาย AI-engineering ของแก่น ต่อจาก Agent as Bounded Context — ออกแบบ MCP server ที่ดีผ่านมุมมอง tool-as-ACL วาง Primitive ทั้งสาม (Tool, Resource, Prompt) ให้ชัดว่าใครเป็นผู้ควบคุม และปฏิบัติต่อความปลอดภัยเป็นส่วนหนึ่งของสถาปัตยกรรมตั้งแต่ต้น บนมาตรฐานเปิดที่วันนี้เป็นกลางทางค่ายแล้วภายใต้ Linux Foundation
8 บทเรียน
เริ่มเรียน → - ระดับกลาง
ความปลอดภัยของ AI Agent — Guardrails & Security
ป้องกัน agent Order จากคอร์สที่ 15–17 เมื่อมีศัตรูลงมือโจมตีจริง — prompt injection, jailbreak, input/output guardrail, least-privilege + human-approval gate และการรักษาข้อมูลไม่ให้รั่ว ประกอบเป็น defense-in-depth ชั้นเดียวด้วย C#/.NET
8 บทเรียน
เริ่มเรียน → - ระดับกลาง
Deep Learning จากศูนย์ — สร้าง neural net จนถึง transformer ด้วยมือ
เปิดฝากระโปรง model ที่ agent จากคอร์ส #15–#18 เรียกใช้ผ่าน API — สร้าง neural network เองตั้งแต่ neuron ตัวเดียว ไล่ backprop ด้วย micrograd → bigram LM → MLP+embedding → training internals → PyTorch → self-attention/transformer จนประกอบ nano-GPT ตัวจิ๋วที่รันบน CPU ได้ 8 บทเรียนลงมือจริงด้วย Python ตาม Karpathy Zero-to-Hero
8 บทเรียน
เริ่มเรียน →
เส้นทาง Rust / Systems
5 คอร์สเรียนภาษา systems ด้วยการสร้างของจริง จาก CLI จนถึง cluster แบบกระจาย
- ระดับกลาง
Rust จากศูนย์ — เรียนภาษา systems ด้วยการสร้าง CLI จริง
คอร์ส Rust แบบยืนเดี่ยว สำหรับวิศวกรที่มาจากสาย C#/.NET — เรียนภาษา systems ตั้งแต่ศูนย์ด้วยการสร้างเครื่องมือ command-line จริงหนึ่งตัว (taskcli ตัวจัดการงาน to-do ที่เก็บสถานะเป็น JSON) ไล่จาก cargo new จนถึง capstone แบบ multi-threaded ใช้แค่ภาษาแกน + std + library ที่นิ่งจริง จงใจไม่พึ่ง async ecosystem ทั้ง 8 บทลงมือจริง
8 บทเรียน
เริ่มเรียน → - ระดับสูง
Rust Systems II — สร้าง Key-Value Store ที่กู้คืนจากการล่มได้ (kaen-kvstore)
คอร์ส Rust แบบยืนเดี่ยว ต่อจาก #21 — สร้าง key-value store บนเครือข่ายที่กู้คืนจาก crash ได้จริง ด้วย Rust std ล้วน (ไม่มี async/tokio ไม่มี serde) ไล่จาก wire protocol ที่เขียนเอง → append-only log + hash index (model Bitcask) → durability ด้วย fsync → compaction → thread pool → ทดสอบ crash-consistency → benchmark ปูทางสู่ Distributed Systems (#23) ทั้ง 8 บทลงมือจริง
8 บทเรียน
เริ่มเรียน → - ระดับสูง
Distributed Systems บน kaen-kvstore — Rust Systems III
ต่อจาก #22 — เลื่อน kaen-kvstore จาก1 node เป็น cluster ที่ replicate + quorum-consistent + CRDT ลู่เข้าเอง ด้วย Rust std ล้วน (splitmix64 + std SipHash ไม่มี serde/tokio/proptest) สอนเฉพาะส่วนที่ property-test ได้จริง (vector clock, consistent hashing, quorum, CRDT, Merkle/gossip, harness ฉีด partition) ส่วน consensus/Raft เป็นไดอะแกรม ทุก snippet compile+รันได้จริงในแซนด์บ็อกซ์ เป็นคอร์สที่สามของเสา Systems (#21→#22→#23) ก่อนที่ #24 จะเปิด async ecosystem ต่อ ทั้ง 8 บทลงมือจริง
8 บทเรียน
เริ่มเรียน → - ระดับสูง
Async Rust ด้วย Tokio — Rust Systems IV
ต่อจากซีรีส์ Rust (#21–#23) ที่จงใจเลี่ยง async ecosystem — คราวนี้เปิด async จริง: future/await, Tokio runtime, task และ .await, non-blocking I/O และ networking เพื่อเขียน server ที่รองรับคอนเนกชันจำนวนมากพร้อมกันโดยไม่ต้องผูก1 thread ต่อหนึ่งคอนเนกชัน
8 บทเรียน
เริ่มเรียน → - ระดับสูง
สร้างภาษาโปรแกรมของคุณเอง — Rust Systems V
ปิดซีรีส์ Rust ด้วยการสร้าง interpreter ของภาษาเล็กๆ ตั้งแต่ศูนย์ด้วย Rust std ล้วน — scanner/tokenizer → AST → recursive-descent parser → tree-walking interpreter → environment/scope → function และ closure → class และ method จนถึง REPL ที่รัน script ได้จริง อิงโครง Crafting Interpreters แต่เขียนใหม่ให้เป็น Rust แท้ (enum + pattern matching + ownership) ไม่มี external crate
8 บทเรียน
เริ่มเรียน →
เส้นทางข้อมูลและประสิทธิภาพ
2 คอร์สเปิดฝากระโปรงชั้นเก็บข้อมูล ประกอบชิ้นส่วนของ query engine และ transaction manager ด้วยมือ จนอธิบายได้ว่า planner เลือกแผนด้วยตัวเลขอะไร และ isolation level แลกอะไรกับอะไร
- ระดับกลาง
สร้าง query engine เอง — ทำไม query ช้า และ planner ตัดสินใจด้วยอะไร
คอร์สแรกของเส้นทางข้อมูลและประสิทธิภาพ — ประกอบชิ้นส่วนของ query engine ด้วยมือทีละชั้นด้วย Python stdlib ล้วน: heap file บนหน้า 4096 byte → B+tree → สถิติกับ selectivity → cost model ที่ไม่มีหน่วยเวลา → access path กับ covering index → อัลกอริทึม join จนถึง capstone ที่เอา planner ของตัวเองไปเทียบกับ sqlite3 แล้วอธิบายทุกจุดที่ไม่ตรงให้ได้ คำถามที่คอร์สนี้ตอบคือ ทำไมการเพิ่ม index บางครั้งถึงไม่ช่วย และเอนจินตัดสินใจเรื่องนี้ด้วยตัวเลขอะไร หน่วยของคอร์สคือหน้าที่แตะ ครั้งที่เทียบคีย์ และแถวที่ต้องถือไว้พร้อมกัน ไม่ใช่วินาที ทุกตัวเลขวัดจริงจากสคริปต์ที่ commit ไว้ในรีโป 8 บทลงมือจริง
8 บทเรียน
เริ่มเรียน → - ระดับสูง
ทำไมต้องมี isolation level — สร้าง transaction manager เอง
คอร์สที่สองของเส้นทางข้อมูลและประสิทธิภาพ และเป็นชั้นที่คอร์ส query engine ประกาศว่าตัวเองไม่ทำ — สร้าง transaction manager ตั้งแต่ศูนย์ด้วย Rust std ล้วน ไม่มี external crate ตั้งแต่ transaction API → anomaly ที่ทำซ้ำได้ทุกครั้ง → two-phase locking กับ deadlock → MVCC และกฎการมองเห็น → snapshot isolation กับ write skew → SSI → ราคาของ transaction จนถึงการเทียบกับ SQLite และ PostgreSQL ของจริง ธีสิสของคอร์สคือ isolation level ที่สูงขึ้นไม่ได้แปลว่าคำตอบถูกขึ้น มันแปลว่าเอนจินยอมปฏิเสธงานบ่อยขึ้น serializable คืน abort ที่คุณต้อง retry เอง ไม่ได้คืนคำตอบที่ถูก หน่วยของคอร์สคือจำนวน abort จำนวน version ที่ค้าง และจำนวนหน้าที่เขียน ไม่ใช่วินาที 8 บทลงมือจริงด้วย Rust
8 บทเรียน
เริ่มเรียน →
บทความ
ดูบทความทั้งหมด (19) →- บทความ
Effective Context Engineering
ขยับจาก prompt engineering สู่การคัดบริบทที่ให้สัญญาณสูงสุดให้ AI agent
Anthropic
อ่าน → - บทความ
The Clean Architecture
วงกลมซ้อนภายใต้ Dependency Rule — dependency ของโค้ดชี้เข้าด้านในเสมอ
Robert C. Martin
อ่าน → - บทความ
Structured-Prompt-Driven Development
ปฏิบัติต่อ prompt เป็นชิ้นงานชั้นหนึ่งที่เก็บคู่กับโค้ดใน version control
Thoughtworks
อ่าน →
อ้างอิง
- Reference ใหม่
หลักการออกแบบซอฟต์แวร์ · DevIQ
208 หัวข้อจาก DevIQ แปลไทยครบ — หลักการ แนวปฏิบัติ ดีไซน์แพตเทิร์น แอนติแพตเทิร์น โค้ดกลิ่นแรง กฎ และ DDD โยงถึงกันทั้งเล่ม พร้อมตัวอย่างโค้ดและอภิธานศัพท์
208 หัวข้อ · 7 หมวด
เปิดอ่าน →