9 คะแนน โดย davespark 2026-01-29 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

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 ความคิดเห็น

 
dopeflamingo 2026-01-29

สมกับเป็นอาจารย์ Hejlsberg จริงๆ..💜