ตอนแก้บั๊กแล้วเจอบั๊กใหม่เยอะขึ้น หรือโค้ดทำงานแปลกๆ จนสงสัยว่าตัวเองเข้าใจจริงหรือเปล่า นั่นคือเวลาที่ต้อง Deep Dive (ศึกษาลึก) แตการรู้ว่า "ต้องศึกษาลึก" เป็นแค่ขั้นตอนแรก จริงๆ แล้วต้องเรียนรู้จนเข้าใจพื้นฐานอย่างไร?
เริ่มต้นที่ไหน?
แหล่งเรียนรู้เยอะมาก แต่ ตอนต้องเรียนรู้มากในเวลาน้อย หนังสือเป็นที่เริ่มต้นโปรดของผม เช่น Deep Dive Git → หนังสือ Pro Git น่าจะตรงจุด
หนังสือดีที่เป็น Comprehensive: หัวข้อขนาดกลางครอบคลุมใน 200-400 หน้า จบเล่มแล้วเข้าใจพื้นฐานดี พร้อมต่อยอดไป Source Code หรือ Specs
ถ้าไม่มีหนังสือ/ไม่อยากซื้อ
Official Documentation เป็นทางเลือกดี โดยเฉพาะ Framework (Rails) หรือ Web Tech (OAuth) - หา The X Guides เช่น Rails Guides, Elixir Guides
แต่ Guides ไม่ได้ครอบคลุมหมด ใช้ Guide เป็นจุดกระโดดไป Reference Docs (RDoc) Reference Docs เหมือนกองรายละเอียดไม่มีโครงสร้าง อ่านยากถ้าไม่มี Context จาก Guide/Book
เช่น ActiveModel: API Docs สอนได้ดีที่สุด แต่ ActiveModel Guide ช่วยให้เข้าใจภาพรวม
แต่ยังมีอีกอย่างที่ครอบคลุมกว่า Docs: อ่าน Source Code แต่อ่าน Source Code ไม่เหมือนอ่านหนังสือ ต้องมีประสบการณ์ ฝึกฝน และมีผู้นำทาง ไม่ใช่จุดเริ่มต้น
หลังอ่านแล้วมีคำถาม → ถาม!
ผู้เขียน Library มักมี Mental Model ดีกว่าทุกคน และอาจช่วยเดินทางผ่านกระบวนการคิดได้ หลายคนพร้อมตอบบน Slack/IRC (ดูบน Project Page)
ถ้าเข้าถึงไม่ได้ → ถามเพื่อนร่วมงาน/ผู้มีประสบการณ์ ผมประหลาดใจว่าคำถามเดียวที่ยังไม่ได้คำตอบ ทำให้ทุกอย่าง "คลิก" เข้ากันได้
ลำดับ Deep Dive ที่ผมทำ
- หนังสือ หรือ Official Guide
- Official Reference Documentation (RDoc) หรือ Spec/RFC
- Source Code
และเติมช่องว่างด้วยการถามคำถาม ไว้กว่าวิธีอื่นแต่อาจช้ากว่า แต่ให้ Breadth + Depth ที่ดีที่สุด
คุณทำ Deep Dive บ่อยไหม? แชร์แหล่งข้อมูลที่ช่วยได้มากที่สุดใน Comments นะครับ!