7 บทเรียนที่ได้จาก Anders Hejlsberg ผู้ออกแบบ C# และ TypeScript
รูปแบบที่เกิดซ้ำตลอดเส้นทางอาชีพ 40 ปีของ Hejlsberg:
ฟีดแบ็กที่รวดเร็ว > ความสง่างาม, ความเข้ากันได้·การใช้งานจริง > ความบริสุทธิ์เชิงทฤษฎี, การเปิดเผย trade-off อย่างโปร่งใส > การตัดสินใจที่คลุมเครือ
1. ฟีดแบ็กที่รวดเร็วสำคัญกว่าบางสิ่งแทบทั้งหมด
- ตั้งแต่ยุคข้อจำกัด 64KB ในช่วงแรก การรันเร็วและการตรวจสอบข้อผิดพลาดอย่างรวดเร็วคือหัวใจสำคัญ
- ทั้ง Turbo Pascal และ TypeScript ต่างเน้นการตรวจสอบแบบ incremental และฟีดแบ็กทันที
- ฟีดแบ็กที่ช้า → งานอ้อมเพิ่มขึ้น ความเชื่อมั่นของนักพัฒนาลดลง
→ ช่วยส่งเสริมการทดลองและการรีแฟกเตอร์ พร้อมเพิ่มผลิตภาพสูงสุด
2. การสเกลซอฟต์แวร์ = การวางความชอบส่วนตัวลง
- ตระหนักได้เมื่อเปลี่ยนจากโปรเจกต์ส่วนตัวไปสู่ทีมและโปรเจกต์ขนาดใหญ่
- ปัจจัยความสำเร็จของ C#: ความเป็นมิตรแบบ VB + พลังแบบ C++ + การใช้งานจริงบน Windows อยู่ร่วมกันได้
- ให้ความสำคัญกับโค้ดที่คนจำนวนมากเข้าใจและบำรุงรักษาได้ มากกว่าความบริสุทธิ์เชิงทฤษฎี
→ การยอมรับความหลากหลายคือกุญแจสู่ความสำเร็จระยะยาว
3. เหตุผลที่ TypeScript ไม่ได้แทนที่ JavaScript แต่ขยายมันออกไป
- ไม่สามารถทิ้ง ecosystem, เครื่องมือ และความเคยชินเดิมของ JS ได้
- จึงเลือกการปรับปรุงแบบค่อยเป็นค่อยไป (เพิ่ม type) แทนการเปลี่ยนทั้งหมด
- ทำให้สามารถทำ static analysis และรีแฟกเตอร์ที่จำเป็นต่อแอปพลิเคชันขนาดใหญ่ได้
→ การประนีประนอมอย่างสมจริงนำความก้าวหน้าที่ยิ่งใหญ่กว่านวัตกรรมแบบหักดิบ
4. หัวใจของความสำเร็จในโอเพนซอร์สคือการมองเห็นได้ (visibility)
- หลังย้าย TypeScript ไปยัง GitHub ในปี 2014 ก็เปิดให้เห็น PR, issue และการสนทนาอย่างสาธารณะ
- เปิดเผยกระบวนการตัดสินใจ, trade-off และลำดับความสำคัญอย่างโปร่งใส
→ ความเชื่อมั่นของผู้ใช้ ↑, การมีส่วนร่วมบนฐานความเข้าใจ ↑
→ สิ่งสำคัญไม่ใช่แค่โค้ด แต่คือการแบ่งปันด้วยว่า “ทำไมถึงทำแบบนั้น”
5. เหตุผลที่เลิกยึดการคงคอมไพเลอร์ไว้บน JavaScript
- คอมไพเลอร์แบบ self-hosted ที่อิง JS → ติดข้อจำกัดด้านประสิทธิภาพ (single-thread, ช้าเมื่อเป็นโปรเจกต์ใหญ่)
- พอร์ตไปยัง Go: รักษา semantics และ quirks เดิมไว้ พร้อมได้ประสิทธิภาพแบบ native และการทำงานขนาน
- ให้ความสำคัญสูงสุดกับความสม่ำเสมอของพฤติกรรมและความเข้ากันได้ มากกว่าการเลือกภาษาใหม่อย่าง Rust
→ เลือกวิวัฒนาการที่มั่นคงแทนการเปลี่ยนแปลงแบบทำลายเดิม
6. สิ่งที่สำคัญที่สุดในสภาพแวดล้อมการพัฒนาที่ขับเคลื่อนด้วย AI คือ grounding
- สำหรับ AI ความถูกต้องและข้อจำกัดสำคัญกว่าการสร้างสรรค์
- ตัวตรวจสอบ type และเครื่องมือรีแฟกเตอร์ทำหน้าที่เป็น guardrail สำหรับการตรวจสอบโค้ดจาก AI
- ระบบ type ที่แข็งแรง = ป้องกันข้อผิดพลาดที่ดูเหมือนสมเหตุสมผลจากผลลัพธ์ของ AI
→ โค้ดที่มีโครงสร้างคือหัวใจของการรีวิวอย่างมีประสิทธิภาพในยุค AI
7. เหตุผลที่การร่วมมือกันแบบเปิดมีความสำคัญ
- ประวัติการสนทนาและการตัดสินใจที่เปิดเผย = การเก็บรักษาความทรงจำขององค์กร
- บริบทที่ค้นหาได้ → ช่วยให้สมาชิกใหม่ onboard ได้ง่าย และทำให้วิวัฒนาการระยะยาวเป็นไปได้
- แตกต่างจากระบบปิดตรงที่สามารถสะสมและถ่ายทอดองค์ความรู้ที่แบ่งปันร่วมกันได้
→ เสริมความยั่งยืนและความสามารถในการปรับตัวของระบบ
1 ความคิดเห็น
สมกับเป็นอาจารย์ Hejlsberg จริงๆ..💜