ข้าม​ไป​ยัง​เนื้อหา

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 บทเรียน

    เริ่ม​เรียน →
  • บทความ

    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 หมวด

    เปิด​อ่าน →