วิศวกรรมซอฟต์แวร์ตายแล้ว นั่นคือสิ่งที่เสียงที่ดังที่สุดใน Tech Twitter อยากให้คุณเชื่อ พวกเขาแชร์วิดีโอหน้าจอการใช้เครื่องมือ AI ที่สร้างแอปพลิเคชันแบบเต็มรูปแบบขึ้นมาได้จาก prompt เพียงย่อหน้าเดียว และตั้งคำถามว่าทำไมใครยังต้องจ่ายเงินจ้างมนุษย์มาเขียนโค้ดอีก ความตื่นตระหนกนี้เป็นเรื่องที่เข้าใจได้ แต่มันเป็นการหลงประเด็นไปอย่างสิ้นเชิง

AI ไม่ได้มาเพื่อแทนที่วิศวกร แต่มันมาเพื่อจัดการกับใครก็ตามที่เข้าใจผิดว่าความเร็วในการพิมพ์คือการตัดสินใจทางเทคนิค มีช่องว่างขนาดใหญ่ระหว่างการ coding และ engineering และช่องว่างนั้นเองคือที่ที่วิชาชีพนี้ดำรงอยู่

AI assistant สามารถให้ทางเลือกในการ implement ฟีเจอร์ที่แตกต่างกันถึงห้าวิธี ก่อนที่คุณจะจิบกาแฟหมดแก้วเสียด้วยซ้ำ คอขวดได้เปลี่ยนไปแล้ว เราไม่ได้จ้องมองไฟล์ว่างเปล่าแล้วสงสัยว่าจะเริ่มอย่างไรอีกต่อไป แต่เรากลับจ้องมองทางเลือกที่เป็นไปได้ทั้งห้าทาง แล้วสงสัยว่าทางไหนจะไม่พังทลายลงทันทีเมื่อมี traffic จริงเข้ามา การตัดสินใจนั้นแหละคือ engineering ส่วนที่เหลือเป็นเพียงแค่ syntax

เดโมไม่ใช่ผลิตภัณฑ์

ลองดูการสาธิตการเขียนโค้ดด้วย AI ใดก็ได้ แล้วคุณจะเห็น interface ที่สวยงามถูกสร้างขึ้นภายในไม่กี่นาที แต่สิ่งที่คุณจะไม่เห็นคือการที่ database connection pool หมดลงภายใต้ภาระงานหนัก คุณจะไม่เห็นการขาด rate limits บน API endpoint, การไม่มี audit logs หรือค่าใช้จ่ายในการจัดเก็บข้อมูลจากการบันทึกทุกการโต้ตอบของผู้ใช้ลงใน object bucket เพียงเพราะ AI คิดว่ามันเป็นที่ที่สะดวกในการเก็บ state

ระบบ Production ต้องการ scalability, security, performance และการควบคุมต้นทุน คุณสมบัติเหล่านี้มองไม่เห็นในการทำ sprint review แต่มันจะเผยตัวออกมาเมื่อมีผู้ใช้งานจริงเข้ามาพร้อมกับพฤติกรรมที่คาดเดาไม่ได้, กรณี edge cases และการไม่ยอมคลิกปุ่มตามลำดับที่คุณคาดหวัง ผมเห็นโปรเจกต์ที่ใช้ AI ช่วยมามากมายที่ดูผ่าน (green) ในขั้นตอน QA แต่กลับกลายเป็นบทเรียนราคาแพงในสัปดาห์หลังจากเปิดตัว

โค้ดที่ทำงานได้กลายเป็นของราคาถูก แต่การทำ engineering ที่ดีนั้นไม่ใช่

สิ่งที่สำคัญในตอนนี้

วิศวกรที่กำลังเติบโตท่ามกลางการเปลี่ยนแปลงนี้ไม่ใช่คนที่พิมพ์เร็วที่สุด แต่คือคนที่รู้ว่าควรตั้งคำถามอะไรก่อนที่โค้ดแม้แต่บรรทัดเดียวจะถูกสร้างขึ้น

  • พวกเขานิยามปัญหาอย่างชัดเจน โมเดล AI จะยินดีแก้ปัญหาที่ผิดอย่างเต็มใจหากคุณปล่อยให้มันทำ มันจะสร้าง caching layer ที่ซับซ้อนสำหรับ read-heavy dashboard ที่มีนักวิเคราะห์ภายในใช้งานเพียงหกคน มันจะไม่หยุดถามว่าปัญหาที่แท้จริงคือการขาด database index หรือเป็นเพราะ data model ที่ผิดพลาดตั้งแต่รากฐาน วิศวกรที่มีทักษะจะปรับกรอบปัญหาใหม่จนกว่าคำตอบจะชัดเจน ไม่ว่าคำตอบนั้นจะต้องใช้โค้ดหรือไม่ก็ตาม

  • พวกเขาแยกย่อยระบบขนาดใหญ่ให้เป็นส่วนเล็กๆ AI เก่งในเรื่องบริบทเฉพาะจุด (local context) มันสามารถเขียนฟังก์ชันเดียว, คอมโพเนนต์เดียว หรือเทสต์เดียวได้ แต่มันจะลำบากในการทำความเข้าใจ distributed architecture ทั้งหมดในคราวเดียว วิศวกรที่สามารถแยกส่วน monolith, กำหนดขอบเขตของ services และกำหนด contracts ระหว่างทีม คือคนที่จะเปลี่ยนโค้ดที่ถูกสร้างขึ้นมาให้กลายเป็นระบบที่ยั่งยืนได้

  • พวกเขาท้าทายคำแนะนำของ AI ความมั่นใจของโมเดลเป็นเพียงภาพลวงตา มันอาจเสนอสถาปัตยกรรมที่ละเลย network latency, แนะนำ libraries ที่เลิกใช้ (deprecated) ไปหลายปีแล้ว หรือแก้ฟีเจอร์ที่ไม่มีอยู่จริงในความต้องการ (requirements)