เก่งโปรแกรมมิ่งด้วยการสร้างเทคโนโลยีขึ้นมาใหม่ด้วยตัวเอง
คุณใช้ framework และ library อยู่ทุกวัน คุณรู้วิธีใช้งาน API ของพวกมัน แต่คุณกลับไม่รู้ว่าข้างในพวกมันทำงานอย่างไร
ปรัชญา "Build Your Own X" จะเปลี่ยนสิ่งนี้ คุณจะสร้างเครื่องมือพื้นฐานขึ้นมาใหม่ตั้งแต่ศูนย์เพื่อทำความเข้าใจการพัฒนาซอฟต์แวร์
เครื่องมือสมัยใหม่มักซ่อนความซับซ้อนเอาไว้ แต่แนวทางนี้จะช่วยลอกเลเยอร์เหล่านั้นออก เพื่อให้คุณได้เผชิญกับปัญหาจริงๆ ที่วิศวกรต้องแก้ในทุกๆ วัน
ทำไมคุณถึงควรทำแบบนี้:
• ความเข้าใจอย่างลึกซึ้ง: คุณจะได้เรียนรู้ว่าทำไมเครื่องมือเหล่านี้ถึงถูกสร้างขึ้นมา และข้อดีข้อเสีย (trade-offs) ที่ต้องแลกมาคืออะไร • การแก้ปัญหา: คุณจะได้เผชิญกับความท้าทายด้านการออกแบบ ซึ่งจะช่วยสร้างกระบวนการคิดเชิงสถาปัตยกรรม (architectural thinking) • การ Debug ที่ดีขึ้น: คุณจะรู้ว่าควรไปดูตรงไหนเมื่อโค้ดทำงานผิดพลาด เพราะคุณเข้าใจการทำงานภายในของมัน • การเติบโตในสายอาชีพ: ผู้สัมภาษณ์ให้ความสำคัญกับผู้สมัครที่สามารถอธิบาย "อย่างไร" และ "ทำไม" เบื้องหลังการทำงานของเครื่องมือได้
เริ่มจากจุดเล็กๆ เลือกสิ่งที่คุณใช้งานบ่อยๆ
ไอเดียสำหรับโปรเจกต์แรกของคุณ:
- Web server ง่ายๆ สำหรับจัดการ HTTP requests
- URL shortener เพื่อเปลี่ยนลิงก์ยาวๆ ให้เป็นโค้ดสั้นๆ
- Key-value store สำหรับเก็บข้อมูลในหน่วยความจำ (memory)
- Command-line argument parser
- MVC framework ขนาดเล็กสำหรับจัดการ routing และ views
อย่าเพิ่งพยายามสร้างเครื่องมือสำหรับใช้งานจริง (production tool) อย่าเพิ่งกังวลเรื่องความปลอดภัยหรือความเร็ว ให้โฟกัสไปที่ตรรกะหลัก (core logic) ก่อน
ทำตามขั้นตอนเหล่านี้:
- ค้นคว้าเกี่ยวกับเครื่องมือที่มีอยู่จริง อ่านเอกสารการออกแบบ (design docs) และดูโค้ดที่เป็น open-source
- ระบุส่วนประกอบหลัก เช่น Web server จำเป็นต้องมี sockets, parser และวิธีการส่ง response กลับไป
- กำหนดชุดฟีเจอร์ขั้นต่ำ (minimum feature set) หากคุณสร้าง URL shortener ให้โฟกัสที่การทำ mapping และการ redirect ส่วนเรื่องระบบบัญชีผู้ใช้หรือการวิเคราะห์ข้อมูล (analytics) ให้ข้ามไปก่อน
เลือกภาษาที่คุณรู้จักหรืออยากเรียนรู้ เป้าหมายคือการเข้าใจตรรกะ ไม่ใช่แค่ไวยากรณ์ (syntax)