พาดหัวข่าวต่าง ๆ เอาแต่บอกเราว่า AI จะทำให้เหล่านักพัฒนาซอฟต์แวร์หมดความสำคัญลง แต่ผมไม่เชื่อแบบนั้น ความเสี่ยงที่แท้จริงไม่ใช่การที่เครื่องจักรจะเข้ามาแทนที่งานวิศวกรรม แต่ความเสี่ยงคือการที่วิศวกรจะหยุดทำงานหนักที่สำคัญที่สุด นั่นคือการใช้ความคิด
ซอฟต์แวร์ไม่เคยเป็นเรื่องของการพิมพ์ syntax เพียงอย่างเดียว แต่มันคือการทำความเข้าใจความซับซ้อนในหัว การเข้าใจ failure modes และการตัดสินใจเลือก trade-offs ในสภาวะที่ไม่มีทางเลือกใดสมบูรณ์แบบ AI ได้เปลี่ยนความเร็วในการผลิตโค้ดของเรา แต่ไม่ได้เปลี่ยนเหตุผลที่เรายังต้องมีมนุษย์คอยควบคุม (human in the loop) หากจะพูดให้ถูก มันกลับทำให้การคิดอย่างชัดเจนมีค่ามากขึ้นและหาได้ยากยิ่งขึ้น
ร่างแรกไม่ใช่การทำวิศวกรรม
ผมเห็นนักพัฒนาจบใหม่จำนวนมากขึ้นเรื่อย ๆ ที่ปฏิบัติกับ ChatGPT หรือ Claude ราวกับว่าเป็นวิศวกรระดับอาวุโสที่นั่งอยู่เก้าอี้ข้าง ๆ พวกเขาคัดลอกรายละเอียดของ ticket วางลงไป ก๊อปปี้คำตอบออกมา รันการทดสอบ แล้วก็ commit ถ้าโค้ดคอมไพล์ผ่าน งานก็ถือว่าจบ วงจรนี้มันรวดเร็ว ไร้แรงต้าน แต่ก็น่ากลัวเช่นกัน
การใช้ AI ไม่ใช่ปัญหา ผมเองก็ใช้ และวิศวกรที่มีประสิทธิภาพส่วนใหญ่ที่ผมรู้จักก็ใช้กัน ปัญหามันเริ่มขึ้นเมื่อ AI กลายเป็นวิศวกรเพียงคนเดียวในห้อง การยอมรับคำตอบแรกเพียงเพราะมันใช้งานได้นั้นไม่ใช่การทำวิศวกรรม แต่มันคือการส่งต่อการตัดสินใจ (outsourcing of judgment) ไปให้โมเดลที่ไม่เข้าใจผู้ใช้ของคุณ ไม่เข้าใจข้อจำกัดทางธุรกิจของคุณ หรือไม่รู้เลยว่าครั้งล่าสุดที่ stack ของคุณพังตอนตี 2 นั้นเกิดจากอะไร
Large language models มักจะให้คำตอบด้วยความมั่นใจอย่างน่าตกใจ แม้ว่าคำตอบนั้นจะผิดพลาดอย่างสิ้นเชิงก็ตาม มีวิศวกรคนหนึ่งขอให้ AI ออกแบบ scalable architecture โมเดลได้เสนอแผนงานที่ดูละเอียดและน่าเชื่อถือ แต่ทั้งหมดนั้นกลับสร้างขึ้นบนฟีเจอร์ที่ไม่มีอยู่จริงในผลิตภัณฑ์เสียด้วยซ้ำ มันดูเหมือนจะถูกต้อง มันมีความสอดคล้องกันภายใน แต่มันกลับไร้ประโยชน์ ความอันตรายไม่ใช่แค่เรื่องที่ AI hallucinate แต่ความอันตรายคือการที่ผู้คนจำนวนมากเริ่มเชื่อคำ hallucination เหล่านั้น เพราะพวกเขาไม่มีบริบทเพียงพอที่จะมองออกว่ามันคือเรื่องโกหก
คุณเรียนรู้จากแรงต้าน
เมื่อผมย้อนนึกถึงสิ่งที่เปลี่ยนผมจากนักพัฒนาจบใหม่ให้กลายเป็นคนที่สามารถดูแลระบบได้ ผมไม่ได้จำ syntax ที่ผมเคยท่องจำได้ แต่ผมจำช่วงเวลาที่เกิด outages ผมจำ query ที่ทำงานช้าจนต้องไล่ตรวจสอบด้วยมือ จำ race conditions ที่จะปรากฏขึ้นเฉพาะตอนที่มีโหลดงานจริงใน production และจำการ deploy ที่พังพินาศเพราะ local environment ของผมไม่เหมือนกับโลกความเป็นจริงเลย
การ debugging คือจุดที่การเรียนรู้เกิดขึ้น เมื่อคุณไล่โค้ดด้วยตัวเองทีละขั้นตอน คุณจะเห็นว่าทำไมระบบถึงล้มเหลว คุณจะค้นพบว่าคอขวด (bottlenecks) อยู่ตรงไหน คุณจะได้เรียนรู้ว่าสถาปัตยกรรมจะมีพฤติกรรมอย่างไรเมื่อคุณเปลี่ยนจากการทำ demo ที่มีผู้ใช้ 10 คน ไปเป็นระบบ production ที่ต้องรองรับ concurrent requests ถึงหนึ่งหมื่นครั้ง คุณจะซึมซับเข้าไปถึงแก่นว่าการทำงานบน production นั้นแตกต่างจากการทำ demo ที่เขียนสคริปต์มาอย่างสวยหรูอย่างไร
ความรู้เหล่านั้นไม่ได้มาจากการยอมรับคำตอบที่ถูกสร้างขึ้นมา แต่มันมาจากการต่อสู้กับปัญหา หาก AI กำจัดความยากลำบากออกไปจนหมดสิ้น หากมันเขียนโค้ด แก้บั๊ก และอธิบายความล้มเหลวให้เราฟังทุกอย่าง แล้วนักพัฒนารุ่นต่อไปจะสะสมประสบการณ์จนก้าวขึ้นสู่ระดับอาวุโสได้อย่างไร? ประสบการณ์ไม่ใช่ใบประกาศนียบัตรที่คุณดาวน์โหลดมาได้ แต่มันคือรอยแผลเป็นที่คุณสร้างขึ้นจากการเผชิญกับเหตุการณ์ใน production และการ deploy ที่ผิดพลาด หากคุณตัดแรงต้านออกไป คุณก็กำลังตัดโอกาสในการเติบโตออกไปด้วย
การตัดสินใจสำคัญกว่าการสร้าง (Generation)
อยู่พักหนึ่งที่อุตสาหกรรมนี้มองว่า prompt engineering เป็นทักษะใหม่ที่ต้องมีไว้ในเรซูเม่ แต่นั่นเป็นการมองข้ามประเด็นสำคัญไปอย่างสิ้นเชิง ความสามารถที่มีค่าที่สุดในสภาพแวดล้อมที่เต็มไปด้วย AI ไม่ใช่การสร้างทางเลือก (generating options) แต่คือการรู้ว่าควรจะปฏิเสธคำแนะนำไหน
วิศวกรที่เก่งที่สุดที่ผมเคยทำงานด้วย ไม่ใช่คนที่เขียน prompt ได้เยอะที่สุด แต่
AI สามารถเร่งความเร็วในเกือบทุกส่วนของวงจรการพัฒนาได้ แต่ยังมีแนวทางปฏิบัติหลักบางอย่างที่ควรยังคงเป็นหน้าที่ของมนุษย์อย่างเคร่งครัด การออกแบบระบบจำเป็นต้องรักษาสมดุลระหว่างข้อจำกัดที่ขัดแย้งกัน ได้แก่ ต้นทุน, ความหน่วง, ความน่าเชื่อถือ และความสามารถในการบำรุงรักษาในอนาคต การรีวิวสถาปัตยกรรมขึ้นอยู่กับความจำขององค์กรและความสามารถในการคาดการณ์ผลกระทบในลำดับที่สอง การเป็นพี่เลี้ยงต้องใช้คนที่เคยเผชิญกับรูปแบบความล้มเหลวที่พวกเขากำลังเตือนคุณจริงๆ ความเข้าใจผลิตภัณฑ์อย่างลึกซึ้งเกิดจากการพูดคุยกับผู้ใช้และสังเกตพฤติกรรมในการใช้งานจริง ไม่ใช่จากการอ่านข้อมูลที่ใช้เทรน
การตัดสินใจทางวิศวกรรมคือผลรวมของประสบการณ์เหล่านั้น มันคือเสียงเตือนเบาๆ ที่บอกคุณว่าการย้ายระบบนั้นเสี่ยงเกินไปที่จะปล่อยในบ่ายวันศุกร์ แม้ว่าการรีวิวโค้ดจะผ่านแล้วก็ตาม มันคือสัญชาตญาณที่บอกว่าการปรับแต่งประสิทธิภาพในตอนนี้ อาจสร้างช่องโหว่ด้านความปลอดภัยในภายหลัง LLM ไม่มีสัญชาตญาณ มันมีเพียงรูปแบบ ซึ่งรูปแบบนั้นมีประโยชน์ แต่ไม่ใช่การตัดสินใจ
บริษัทที่กำลังรับสมัครงานในขณะนี้ควรเลิกคัดเลือกคนที่แค่ใช้เครื่องมือ AI ได้เก่ง จงจ้างคนที่สามารถโต้แย้ง AI ได้ มองหาผู้สมัครที่จะหยุดคิด อ่านผลลัพธ์ที่ถูกสร้างขึ้นอย่างละเอียด และอธิบายได้ว่าทำไมพวกเขาถึงไม่เห็นด้วยกับมัน คนเหล่านี้คือวิศวกรที่จะช่วยให้ระบบของคุณยังคงทำงานได้อย่างราบรื่น เมื่อโค้ดที่ถูกสร้างขึ้นต้องเผชิญกับความเป็นจริงที่วุ่นวายในสภาพแวดล้อมการใช้งานจริง
การเร่งความเร็วโดยปราศจากเข็มทิศ
ให้คิดว่า AI คือคันเร่ง ในรถที่มี
