คุณเลิกอ่าน Docs แล้วตอนนี้คุณก็ไม่เข้าใจระบบอีกต่อไป

ผมไม่ได้เรียนวิทยาการคอมพิวเตอร์ในมหาวิทยาลัย ผมเรียนธรณีฟิสิกส์

ผมเรียนรู้ซอฟต์แวร์จากการอ่าน ผมอ่านเอกสารประกอบ (documentation), ซอร์สโค้ด (source code) และ GitHub issues ผมอ่านบล็อกเก่าๆ และกระทู้ RFC ผมไม่ได้เข้า bootcamp แต่ผมใช้เบราว์เซอร์และข้อมูลดิบ

ตอนที่ผมเรียนรู้ Cloudflare Workers ผมไม่มีคอร์สเรียน ผมมีแค่เอกสารประกอบและ changelog ผมอ่านการตั้งค่า binding ถึงสามรอบเพื่อแก้ไขการ deployment ที่พังตอนตีหนึ่ง ผมหาคำตอบได้จากกระทู้ใน GitHub เมื่อหลายปีก่อน

ผมเรียนรู้โดยการนั่งอยู่กับเนื้อหาจนกว่าจะเข้าใจอย่างถ่องแท้

ตอนนี้ผมเห็นรูปแบบใหม่ ผู้คนไม่ถามว่าทำไมส่วนนี้ถึงน่าสับสน แต่พวกเขาขอโค้ดสำหรับ X พวกเขาไม่ไล่ดูซอร์สโค้ดเพื่อหาพฤติกรรมของมัน แต่พวกเขาถามว่าฟังก์ชันนี้ทำอะไร

เป้าหมายเคยเป็นการทำความเข้าใจ แต่ตอนนี้เป้าหมายคือผลลัพธ์ (output) ผู้คนเรียกสิ่งนี้ว่าประสิทธิภาพ แต่มันคือหนี้สิน (debt) จริงๆ

คุณสามารถสร้าง circuit breaker ได้โดยไม่ต้องรู้ว่าสถานะ half-open คืออะไร มันทำงานได้ในการทดสอบของคุณ แต่มันจะล้มเหลวใน production ในอีกหกสัปดาห์ต่อมาเมื่อมีโหลดหนักๆ คุณล้มเหลวเพราะคุณไม่มี mental model คุณได้แค่ "อะไร" (what) แต่ไม่ได้ "ทำไม" (why)

"ทำไม" คือส่วนเดียวที่สำคัญ

การอ่านเอกสารประกอบช่วยสร้าง mental model คุณจะได้เห็นข้อดีข้อเสีย (tradeoffs) และกรณีขอบเขต (edge cases) ในเชิงอรรถ ความติดขัดที่คุณรู้สึกขณะอ่านนั่นแหละคือจุดที่การเรียนรู้เกิดขึ้น

ตอนที่ผมสร้าง Bookmark Brain ผมต้องทำความเข้าใจ Cloudflare Vectorize ผมไม่ได้แค่ใช้ API แต่ผมศึกษาเรื่อง embedding dimensions, พฤติกรรมของ index และ query distance metrics ผมอ่านงานวิจัย HNSW ผมนั่งอยู่กับความสับสนจนกระทั่งมันกลายเป็นความรู้

ความรู้นั้นช่วยให้ระบบของผมทำงานได้ใน production หากมีบางอย่างพังตอนตีสอง ผมมี mental model ที่คอยนำทางผม หากผมใช้เพียงแค่ prompt ผมอาจจะได้แค่ตัวเดโม แต่ไม่ใช่ระบบที่ผมสามารถใช้เหตุผลอธิบายได้

สิ่งนี้สร้างความแตกต่างในงานวิศวกรรม

  • ในการรีวิวโค้ด (code reviews): นักพัฒนาคนหนึ่งเห็นปัญหา N+1 ได้ทันทีเพราะเขาอ่านเอกสารของ ORM ส่วนนักพัฒนาอีกคนพลาดมันไปเพราะเขาแค่สร้างโค้ดขึ้นมาเท่านั้น
  • ในด้านสถาปัตยกรรม (architecture): นักพัฒนาคนหนึ่งเข้าใจ Kafka partitions และ offsets ส่วนอีกคนรู้แค่คำศัพท์แต่ขาดความเข้าใจในโครงสร้าง
  • ในการแก้บั๊ก (debugging): การ debug เป็นฟังก์ชันของ mental model ของคุณ หากไม่มีมัน คุณก็แค่เปลี่ยนสิ่งต่างๆ ไปเรื่อยๆ แล้วหวังว่ามันจะดีขึ้น

AI ไม่สามารถถือครองสถาปัตยกรรมทั้งหมดได้ มันไม่เห็นภาพรวมของ codebase ทั้งหมด ผมเคยเห็น caching layers ที่สร้างโดย AI ผ่านทุกการทดสอบ แต่กลับทำให้ระบบ production พัง เพราะไม่มีมนุษย์คนไหนเข้าใจเรื่อง race conditions เลย

ความแตกต่างไม่ได้อยู่ที่การใช้ AI แต่อยู่ที่ว่าคุณใช้มันอย่างไร

คุณใช้มันเพื่อทำความเข้าใจข้อดีข้อเสีย หรือคุณใช้มันเพื่อหลีกเลี่ยงการทำความเข้าใจ?

นักพัฒนาที่เก่งที่สุดไม่ได้แค่ทำงานเร็วเท่านั้น แต่พวกเขายังคงอ่าน changelogs และซอร์สโค้ด พวกเขากำลังสร้าง mental model ที่การเขียน prompt ไม่สามารถเลียนแบบได้

การอ่านเอกสารประกอบคือการฝึกฝน มันไม่ใช่ภาษีที่มาลดทอนประสิทธิภาพการทำงานของคุณ แต่มันคือสิ่งที่ทำให้คุณกลายเป็นคนที่ไม่มีใครแทนที่ได้เมื่อระบบพัง

หากคุณข้ามการอ่าน คุณก็ข้ามการคิด คุณจะไม่รู้ตัวเลยจนกว่าคุณจะอยู่ในสถานการณ์ production โดยไม่มีอะไรให้ยึดเหนี่ยวเลย

Source: https://dev.to/dannwaneri/you-stopped-reading-the-docs-now-you-dont-understand-the-systems-go1

Optional learning community: https://t.me/GyaanSetuAi