- กำลังรู้สึกถึงความเปลี่ยนแปลงในยุคใหม่ของการพัฒนาซอฟต์แวร์: มีส่วนร่วมกับงานที่ทำอยู่น้อยลง
- เมื่อมอบหมายงานเขียนฟังก์ชันและแก้ข้อผิดพลาดผ่าน LLM ก็ทำให้ ความรู้สึกจดจ่อดื่มด่ำลดลง
- เปลี่ยนจากการลงมือทำเองไปสู่สถานะ auto-pilot และ วนซ้ำกับกระบวนการตรวจทานและยอมรับงานของ LLM
- เมื่อใครสักคนทุ่มเทอย่างลึกซึ้งกับทักษะของตน ก็จะเข้าสู่ สภาวะลื่นไหล (Flow) ซึ่งเปรียบได้กับการ เป็นช่างฝีมือ
- หมายถึง ภาวะที่เส้นแบ่งระหว่างผู้กระทำกับสิ่งที่กระทำเลือนหายไป และจมลึกกับการแก้ปัญหาที่ซับซ้อน
- หลายคนโต้แย้งว่าการใช้ LLM ใน workflow การเขียนโปรแกรมที่เพิ่มขึ้นในช่วงหลัง เป็นเพียงการ นำงานเชิงนามธรรมในระดับที่สูงขึ้นเข้ามา
- เส้นทางวิวัฒนาการจาก Binary → Assembly → C → ภาษาระดับสูง มอบอำนาจให้มากขึ้นเรื่อย ๆ
- แต่การนำ LLM มาใช้นั้นไม่ใช่แค่การเปลี่ยนระดับ abstraction อีกขั้นหนึ่งเท่านั้น
- การเปลี่ยนจากไบนารีไปเป็นแอสเซมบลี และจากแอสเซมบลีไปเป็น C ในข้างต้นนั้น ช่วยลดภาระทางความคิดและทำให้โฟกัสกับตรรกะได้
- LLM ทำให้เราโฟกัสที่โครงสร้างโดยรวมมากกว่าตรรกะของโปรแกรม → จึงต่างจากการเปลี่ยนแปลงก่อนหน้า
- โปรแกรมถูกสร้างขึ้นจากชิ้นส่วนต่าง ๆ ที่ประกอบกัน
- เราเข้าใจโปรแกรมของเราได้ด้วยการเข้าใจทุกชิ้นส่วนที่ใช้ประกอบมันขึ้นมา
- แต่ตอนนี้เรา มอบหมายการสร้างชิ้นส่วน เท่ากับ มอบหมายงานแบบช่างฝีมือ และ หันไปจัดการการสร้างแทน
- เรามีส่วนร่วมกับการสร้างน้อยลง และความเป็นเจ้าของต่อโค้ดที่ LLM สร้างให้เราก็ลดลง
- กล่าวคือ เราได้ เปลี่ยนงานเชิงช่างฝีมือ (craftsmanship) ให้กลายเป็นงานบริหารจัดการ (management)
- เราเริ่มสนใจผลลัพธ์ของงานมากกว่าชิ้นส่วนที่เราสร้างอย่างแม่นยำ
- การเขียนโปรแกรมกลายเป็นเครื่องมือ ไม่ใช่เป้าหมายอีกต่อไป
- โชคดีหรือโชคร้ายก็ตาม ปัญหายังคงเกิดขึ้นในโค้ด และเรายังต้องเข้าใจบริบทของโค้ดแล้วลงมือแก้ไข
- นั่นหมายความว่าในกระบวนการเขียนโปรแกรมยังคงต้องมีการแทรกแซงจากมนุษย์
- เราสามารถใช้ LLM agent เพื่อดื่มด่ำกับการเขียนโปรแกรมได้มากขึ้น
- เราโฟกัสกับ abstraction ระดับสูง ส่วน LLM agent ก็ลงมือปรับเปลี่ยนอย่างขยันขันแข็ง
- แต่ตอนนี้ยังไม่มีเครื่องมือที่เหมาะสม
- ภาระทางความคิดจากการเปลี่ยนแปลงต่อเนื่องจำนวนมากนั้นสูงมาก และจำเป็นต้องมีวิธีรับมือกับมัน
- เนื่องจากความทรงจำของมนุษย์มีขีดจำกัด (สำหรับความจำระยะสั้น จำได้เพียง 7±2 รายการ) จึง จำเป็นต้องมีเครื่องมือที่ออกแบบมาอย่างดีเพื่อแสดงข้อมูลในหลายระดับของ abstraction
- เพื่อให้เราทั้งมองเห็นรายละเอียดและซูมออกไปเห็นภาพรวมที่ใหญ่ขึ้นได้
2 ความคิดเห็น
เราจำเป็นต้องยึดถือ craftsmanship แค่ในโค้ดเท่านั้นหรือ? เราจะมี craftsmanship กับซอฟต์แวร์และตัวผลิตภัณฑ์เองไม่ได้หรือ?
เดิมทีการเขียนโปรแกรมก็ไม่ใช่เป้าหมาย แต่เป็นเพียงวิธีการ
ความก้าวหน้าของเครื่องมือเหล่านี้พัฒนามาเพื่อให้มนุษย์สามารถทุ่มเวลาไปกับความคิดและการออกแบบที่ยิ่งใหญ่กว่า แทนที่จะเสียเวลาไปกับเรื่องที่ไม่จำเป็น
คอมไพเลอร์, ระบบปฏิบัติการ, ภาษา scripting ฯลฯ..