ภาพรวมโดยสรุป

  • ประเด็นหลัก

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

    • AI ช่วยเพิ่มความเร็วในการผลิตโค้ดได้มาก แต่โค้ดไม่ได้กลายเป็นผลิตภัณฑ์ที่ดีได้ทันที
    • ความสำคัญของส่วนที่ไม่ใช่การเขียนโค้ด เช่น requirements, เอกสาร, การทดสอบ, การจัดโครงสร้าง, การตัดสิน UX และความสามารถในการบำรุงรักษา เพิ่มสูงขึ้น
  • กรณีตัวอย่างหลัก

    • ประสบการณ์ที่ทำให้ AI สามารถทำการทดสอบเบราว์เซอร์ได้ด้วย Playwright
    • ประสบการณ์การระบุงานซ้ำ ๆ เป็น command, skill และ workflow
    • กรณีที่ frontend prototype ที่สร้างด้วย AI ดูยอดเยี่ยมจากภายนอก แต่โครงสร้างภายในเปราะบาง
  • แนวทางแก้ไข

    • ไม่ควรมอบให้ AI ทำแค่โค้ด แต่ต้องออกแบบขั้นตอนและเกณฑ์ของกระบวนการพัฒนาทั้งหมดไปพร้อมกัน
    • นักพัฒนาต้องตรวจทานผลลัพธ์จาก AI ทิ้งบริบทไว้ และจัดระเบียบโครงสร้างเพื่อให้ต่อยอดเป็นผลิตภัณฑ์ที่ยั่งยืนได้

บทนำ

การเปลี่ยนผ่านในยุค AI Coding

  • โพสต์นี้เริ่มจากคำถามว่า “ในยุคที่มนุษย์ไม่ได้เขียนโค้ดโดยตรง นักพัฒนาควรทำอะไร”
  • ผู้เขียนเคยมองว่า ในอดีต AI ยังมี hallucination และทำผิดพลาด ดังนั้นการตัดสินใจขั้นสุดท้ายจึงต้องเป็นมนุษย์
  • แต่ด้วยประสิทธิภาพของโมเดล AI ที่ดีขึ้นในช่วงหลัง ผู้เขียนประเมินว่า AI ได้มาถึงระดับที่สามารถเข้าใจ issue, สำรวจไฟล์, แก้โค้ด และทำให้ผ่านการทดสอบได้แล้ว
  • การเปลี่ยนแปลงนี้ทำให้นักพัฒนาเริ่มคิดไกลกว่าการใช้ AI เป็นเพียงเครื่องมือช่วย และหันมาพิจารณาว่าจะทำให้ AI ดำเนินกระบวนการพัฒนาเองได้อย่างไร

ประเด็นปัญหาหลัก

  • แม้ AI จะเขียนโค้ดได้ดีขึ้น แต่ไม่ได้หมายความว่าบทบาทของนักพัฒนาจะหายไป
  • ตรงกันข้าม ยิ่งการเขียนโค้ดถูกทำให้เป็นอัตโนมัติมากเท่าไร องค์ประกอบอื่น ๆ ของการพัฒนาก็ยิ่งเด่นชัดขึ้น
  • การจัดระเบียบ requirements, การบันทึกการตัดสินใจ, การออกแบบการทดสอบ, การจัดการโครงสร้างโค้ด และการตรวจประสบการณ์ผลิตภัณฑ์ กำลังกลายเป็นภารกิจหลักของนักพัฒนา

เนื้อหา

1. AI เคลื่อนจากเครื่องมือเขียนโค้ดไปเป็นผู้ดำเนินงาน

  • ผู้เขียนมองว่า AI ก้าวข้ามระดับการสร้างชิ้นส่วนโค้ดง่าย ๆ และสามารถจัดการ workflow ของงานพัฒนาจริงได้แล้ว
  • ในอดีต มนุษย์ต้องคอยเฝ้าดูและแก้ไขผลลัพธ์ของ AI อยู่ตลอด แต่ตอนนี้สามารถมอบงานให้ AI แล้วตรวจทานผลลัพธ์ได้
  • การปรับปรุงประสิทธิภาพของ benchmark อย่าง SWE Bench ถูกกล่าวถึงในฐานะตัวชี้วัดที่แสดงให้เห็นการเปลี่ยนแปลงนี้
  • การเปลี่ยนแปลงสำคัญคือ คำถามไม่ได้อยู่ที่ “AI เขียนโค้ดได้หรือไม่” อีกต่อไป แต่เปลี่ยนเป็น “เราจะมอบงานให้ AI ได้ถึงขอบเขตไหน”

2. เมื่อ AI ล้มเหลว ปัญหาไม่ได้มีแค่ ‘ความสามารถไม่พอ’

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

3. แนวคิด AI Native คือการมอบหมายทั้งกระบวนการ

  • ผู้เขียนออกจากมุมมองที่ใช้ AI เป็นเพียงเครื่องมือช่วย และเปลี่ยนไปสู่แนวทางที่ทำให้ AI ดำเนินกระบวนการทั้งหมดที่ตนเองเคยทำ
  • ผู้เขียนสร้างงานซ้ำ ๆ ให้เป็น command, skill และ workflow พร้อมพยายามระบุ tacit knowledge ของตนเองออกมาเป็นสเปก
  • ตัวอย่างเช่น การสร้าง flow ของคำสั่งอย่าง /plan, /prd, /debug, /refactor, /verify, /retrospect
  • จุดสำคัญไม่ใช่การบอก AI แค่ว่า “เขียนโค้ดให้หน่อย” แต่คือการกำหนดเป็นกฎไปถึงว่าเมื่อไรควรถาม เมื่อไรควรหยุด และเมื่อไรควรตรวจสอบ
  • ด้วยวิธีนี้ นักพัฒนาจะเปลี่ยนวิธีทำงานและเกณฑ์การตัดสินของตนเองให้เป็นโครงสร้างที่ AI นำกลับมาใช้ซ้ำได้

4. know-how ส่วนบุคคลถูกดูดซับเป็นฟีเจอร์ของเครื่องมืออย่างรวดเร็ว

  • command และ workflow ที่ผู้เขียนเคยสร้างเอง เมื่อเวลาผ่านไปก็ปรากฏเป็นฟีเจอร์และแนวคิดทางการอย่าง Skill, memory, hooks, orchestration
  • methodology การใช้ AI ที่แต่ละคนค้นพบ ยิ่งมีประสิทธิภาพมากเท่าไรก็ยิ่งถูกดูดซับเป็นฟีเจอร์ผลิตภัณฑ์หรือ methodology ร่วมกันอย่างรวดเร็ว
  • ดังนั้น prompt หรือ tip เฉพาะบางอย่างในการใช้ AI ให้เก่ง จึงสร้างความแตกต่างระยะยาวได้ยาก
  • สิ่งสำคัญไม่ใช่ตัว methodology เองเท่านั้น แต่คือได้นำ methodology นั้นไปใช้กับปัญหาจริง สร้างได้ไกลแค่ไหน และเจอข้อจำกัดแบบใด

5. AI เพิ่มขนาดของปัญหาที่นักพัฒนาสามารถรับมือได้

  • AI ทำให้ผู้เขียนสามารถทดลองไอเดียขนาดใหญ่ที่ในอดีตไม่กล้าลองเพราะต้นทุนและเวลา
  • เช่น ลองสร้างเครื่องมือสำหรับกางโค้ดและเอกสารเหมือน canvas, MD viewer, เครื่องมือวิเคราะห์โค้ด และเครื่องมือช่วยพัฒนาได้อย่างรวดเร็ว
  • แก่นสำคัญไม่ใช่ว่า AI สร้างผลิตภัณฑ์สำเร็จรูปให้ได้ทันที แต่คือการลดอุปสรรคในการเริ่มต้น
  • นักพัฒนาจึงเปลี่ยนความคิดจาก “เราจะสร้างสิ่งนี้ได้ไหม” ไปเป็น “ลองดูก่อนว่าจะสร้างไปได้ไกลแค่ไหน”

6. เมื่อรับมือกับปัญหาใหญ่ งานพัฒนาที่อยู่นอกเหนือการเขียนโค้ดจะปรากฏชัด

  • เมื่อ AI เพิ่มปริมาณการผลิตโค้ด นักพัฒนาจะอ่านโค้ดทั้งหมดด้วยตนเองและเก็บบริบทไว้ในหัวได้ยากขึ้น
  • บริบท การตัดสินใจ และความเข้าใจโครงสร้างที่เคยสะสมอย่างเป็นธรรมชาติเมื่อเขียนโค้ดเอง จะไม่เหลืออยู่โดยอัตโนมัติเมื่อมอบการเขียนโค้ดให้ AI
  • ดังนั้น เอกสาร การทดสอบ issue รายงานงาน และบันทึกเหตุผลของการเปลี่ยนแปลงจึงสำคัญขึ้น
  • สิ่งเหล่านี้ไม่ใช่งานบริหารจัดการ แต่เป็นกลไกสำคัญสำหรับรักษาบริบทการพัฒนาในยุค AI
  • มีการเน้นว่า ความสามารถในการรักษาบริบทและการตัดสินใจสำคัญพอ ๆ กับความสามารถในการเขียนโค้ด

7. จำนวน commit และ test ที่เพิ่มขึ้นไม่ได้หมายถึงผลิตภัณฑ์ดีขึ้นเสมอไป

  • เมื่อใช้ AI จำนวน commit, ไฟล์, test และเอกสารจะเพิ่มขึ้นอย่างรวดเร็ว
  • แต่การที่ตัวเลขเพิ่มขึ้นไม่ได้หมายความว่าผลิตภัณฑ์ดีขึ้นจริง
  • เกิดปัญหาเช่นมีการเพิ่มฟีเจอร์ แต่ UX ดูฝืน ๆ หรือ test ผ่านแต่ flow บนหน้าจอจริงไม่เสถียร
  • ตอนแรกผู้เขียนพยายามมองสิ่งนี้เป็นแค่ปัญหาคุณภาพโค้ดและโครงสร้าง
  • แต่ได้เรียนรู้ว่า แม้จะปรับปรุงโครงสร้างโค้ดแล้ว ประสบการณ์ผลิตภัณฑ์ก็ไม่ได้ดีขึ้นโดยอัตโนมัติ
  • สุดท้าย การผลิตโค้ดกับการปรับปรุงผลิตภัณฑ์เป็นคนละปัญหากัน และจำเป็นต้องมีการตัดสินเรื่องความเป็นผลิตภัณฑ์แยกต่างหาก

8. Frontend เป็นพื้นที่ที่ AI สั่นคลอนได้ง่ายเป็นพิเศษ

  • AI สามารถสร้าง UI เริ่มต้นที่ดูน่าเชื่อถือได้อย่างรวดเร็ว เช่น dashboard, landing page, admin screen
  • แต่ frontend ในระดับผลิตภัณฑ์จริงต้องการเกณฑ์ซับซ้อน เช่น design system, state management, accessibility, keyboard operation, exception state และ user flow
  • requirements จำนวนมากของ frontend ถูกอธิบายด้วยภาษากำกวม เช่น “ให้เป็นธรรมชาติ”, “ให้ดูขัดน้อยลง”, “ให้รู้สึกว่าเลือกอยู่”
  • AI มักทำให้ผลลัพธ์แตกกระจายได้ง่ายในกระบวนการเปลี่ยน requirements ที่กำกวมเหล่านี้เป็นโค้ด
  • ดังนั้น หากต้องการใช้ AI ให้ดีในงาน frontend จำเป็นต้องมีเกณฑ์และวิจารณญาณในการตรึงส่วนที่ออกมาดีไว้ แล้วให้แก้เฉพาะส่วนที่ยังขาด

9. ผลลัพธ์ที่ดีไม่ได้ออกมาในครั้งเดียว แต่เกิดจากกระบวนการค่อย ๆ บรรจบ

  • ผู้เขียนเปลี่ยนมุมมองหลังจากเห็น prototype คุณภาพสูงที่ planner คนหนึ่งสร้างด้วย AI
  • ผลลัพธ์นั้นไม่ได้เกิดจาก prompt พิเศษเพียงอันเดียว แต่เป็นผลจากการแก้ซ้ำ ๆ “จนกว่าจะได้”
  • กรณีนี้แสดงให้เห็นว่า แก่นของการใช้ AI ไม่ใช่การสร้างอัตโนมัติแบบง่าย ๆ แต่คือกระบวนการค่อย ๆ บรรจบที่มองเห็นส่วนที่ยังขาดแล้วร้องขอใหม่อย่างต่อเนื่อง
  • คนที่สร้างผลลัพธ์ที่ดีจะตัดสินได้ว่า output ที่ AI สร้างขึ้นยังขาดอะไร และปรับอย่างไม่ลดละจนกว่าจะได้ระดับที่ต้องการ
  • แม้ในยุค AI มาตรฐาน สัมผัส และการตรวจทานอย่างต่อเนื่องของมนุษย์ก็ยังสร้างความแตกต่างให้ผลลัพธ์

10. นักพัฒนามีบทบาทเชื่อมผลลัพธ์ที่มีศักยภาพให้ต่อยอดเป็นผลิตภัณฑ์

  • ผลลัพธ์ที่สร้างด้วย AI อาจดูดีจากภายนอก แต่โครงสร้างโค้ดภายในอาจเปราะบาง
  • อาจเกิดปัญหา เช่น state management ไม่เสถียร, ความรับผิดชอบของ component ไม่ชัดเจน หรือ test ไม่สามารถรับประกัน flow จริงได้
  • บทบาทของนักพัฒนาไม่ใช่การประเมินผลลัพธ์เหล่านี้ต่ำหรือทิ้งไปโดยไม่มีเงื่อนไข
  • ในขณะเดียวกัน ก็ไม่ควรนำไปทำเป็นผลิตภัณฑ์ตรง ๆ เช่นกัน
  • นักพัฒนาต้องจัดโครงสร้าง ทำเครื่องหมายความเสี่ยง สร้างหน่วยที่ทดสอบได้ และทิ้งบริบทไว้ เพื่อให้ผลลัพธ์ที่มีศักยภาพไปต่อได้ไกลขึ้น
  • กล่าวคือ บทบาทของนักพัฒนาขยายจาก “คนที่สร้างทุกอย่างคนเดียวจนจบ” ไปเป็น “คนที่เชื่อมผลลัพธ์ที่ AI และมนุษย์สร้างขึ้นให้กลายเป็นผลิตภัณฑ์ที่ยั่งยืน”

11. บทบาทการพัฒนาในยุค AI ไม่ได้บรรจบเป็นแบบเดียว

  • เมื่ออุปสรรคในการเขียนโค้ดลดลง ประเภทของคนที่เข้าร่วมการพัฒนาก็หลากหลายขึ้น
  • planner, designer, PM และผู้รับผิดชอบหน้างานก็สามารถใช้ AI สร้าง prototype ที่ทำงานได้หรือ internal tool ได้
  • สิ่งนี้ไม่ได้หมายความว่าความจำเป็นของนักพัฒนาหายไป แต่หมายความว่าบทบาทที่เกี่ยวข้องกับการพัฒนาจะถูกแยกย่อยมากขึ้น
  • ผู้เขียนเปรียบสิ่งนี้กับ ecosystem ของ YouTube
  • เช่นเดียวกับที่ YouTube ไม่ได้ทำให้ผู้เชี่ยวชาญวิดีโอหายไป แต่ทำให้บทบาทหลากหลายขึ้น ทั้งผู้ปรากฏตัวในคลิป, editor, planner, channel operator และ platform creator, AI ก็อาจทำให้บทบาทการพัฒนาหลากหลายขึ้นได้เช่นกัน
  • ในอนาคต มีความเป็นไปได้สูงที่คนสร้างระบบเชิงลึก, คนขัดเกลา prototype ให้เป็นผลิตภัณฑ์, คนสร้าง layer ที่ช่วยให้ AI ทำงานได้ดี และคนแก้ปัญหาโดยตรง จะอยู่ร่วมกัน

สรุป

นักพัฒนาต้องออกแบบการพัฒนาหลังยุคการเขียนโค้ด

  • ข้อสรุปของโพสต์นี้ไม่ใช่การแบ่งสองขั้วว่า “ควรเขียนโค้ดต่อไปหรือควรวางมือ”

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

  • โดยเฉพาะทักษะต่อไปนี้จะสำคัญขึ้น

    • ความสามารถในการตั้งปัญหาให้ใหญ่ขึ้น
    • ความสามารถในการเปลี่ยนกระบวนการซ้ำ ๆ ให้เป็น skill และ workflow
    • ความสามารถในการจัดโครงสร้าง requirements, เอกสาร, test และ issue
    • ความสามารถในการตรวจทานผลลัพธ์จาก AI และสั่งแก้ส่วนที่ยังขาด
    • ความสามารถในการขัดเกลาผลลัพธ์ดิบให้เป็นผลิตภัณฑ์ที่ยั่งยืน
    • ความสามารถในการเชื่อม AI เข้ากับเครื่องมือและ workflow นอกโค้ด

ข้อความหลัก

  • AI ไม่ได้สมบูรณ์แบบเท่าที่นักพัฒนาคาดหวัง แต่สามารถทำงานได้มากกว่าที่คิดอย่างมาก
  • ก่อนตัดสินว่า AI ทำไม่ได้ ควรทดลองก่อนว่าจริง ๆ แล้วสามารถสั่งให้ทำได้ถึงไหน
  • ในทางกลับกัน แม้ AI จะทำให้งานง่ายขึ้น ก็ไม่ควรเชื่อถือผลลัพธ์โดยตรงโดยไม่ตรวจสอบ
  • นักพัฒนาต้องรับบทบาทในการตัดสินผลลัพธ์ที่ AI สร้างขึ้น ทำให้ค่อย ๆ บรรจบ รักษาบริบท และเชื่อมต่อให้กลายเป็นผลิตภัณฑ์
  • ท้ายที่สุด นักพัฒนาในยุค AI จะใกล้เคียงกับ คนที่ออกแบบปัญหา กระบวนการ เกณฑ์ และบริบท เพื่อให้ output ที่ AI และมนุษย์สร้างขึ้นนำไปสู่ผลลัพธ์ที่ดีกว่า มากกว่าคนที่เขียนโค้ดเองเป็นจำนวนมาก

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น