นั่งคิดเรื่องดราม่า AI เขียนโค้ด (จริงๆ คิดก่อนหน้านั้นมาสักระยะหนึ่งแล้ว ยังคิดไม่ตก) โน้ตคร่าวๆ ไว้ก่อน
- การใช้คอมพิวเตอร์ ไม่จำเป็นต้องเข้าใจทั้งหมด มานานแล้ว เรามี abstraction ที่หนาขึ้นเรื่อยๆ ทำงานได้ดีขึ้นเรื่อยๆ มาโดยตลอด POSIX/Linux, SQL, Assembly, Pascal, C, Python, HTML, JS, React, Excel, Notion ฯลฯ
- อย่างไรก็ดี การที่เรา abstract คอมพิวเตอร์ไป มักมาพร้อมกับภาพจำลอง ที่เข้าใจง่ายขึ้น ควบคุมพฤติกรรมง่ายขึ้นไปด้วย เช่น การจำกัดสิทธิ์ user ใน linux ที่เราเรียนเป็นเรื่องแรกๆ เราไม่ต้องรู้ว่าทำอย่างไร แต่ถ้าพฤติกรรมไม่ตรงมันจะกลายเป็นช่องโหว่ abstraction เหล่านี้ทำให้เรามองระบบโดยรวมง่ายขึ้น เราเขียนไฟล์ผ่าน POSIX โดยมั่นใจว่า filesystem จะไม่พัง, เราเขียน SQL โดยมั่นใจว่า file จะไม่ corrupt ภาพ abstract บางอันดีบ้างแย่บ้าง เช่น container ที่คนมักคิดว่าแยกแอปออกจากกัน แต่ในความเป็นจริงกระบวนการเจาะทะลุข้าม container ทำได้บ่อย
- ความผิดพลาดของ abstraction ก่อนหน้านี้เป็นความผิดของระบบ ผู้ใช้เขียนไฟล์ทะลุ user ได้เป็นความผิดของ OS, เขียน SQL แล้วไฟล์พัง เป็นความผิดของ database แม้แต่ container ก็มีความพยายามทำให้แต่ละ container แยกกันตามความคาดหวัง
- กระแส AI เขียนโค้ดต่างออกไป รอบนี้มนุษย์สามารถสั่งงานคอมพิวเตอร์ที่ระดับสูงมาก (ภาษาคน) แต่ไม่มีระบบ abstraction ที่ออกแบบมาเป็นอย่างดี เพื่อรองรับการใช้งาน แต่กลายเป็นว่า เราใช้ AI มาแทนคน (หรือหลายคน) มาแทนชั้นของการแปลงคำสั่งเหล่านั้นกลายเป็นโค้ดเลย กระแส AI เขียนโค้ดกลายเป็นคู่แข่งสำคัญของความพยายามพัฒนา low code ที่สร้าง abstraction ในการพัฒนาแอปในช่วงหลังด้วยซ้ำ
- ส่วนตัวเองเจอเองกับตัว ช่วงหลายปีที่ผ่านมาเวลาต้องการเขียนเว็บเล็กๆ ผมมักชินกับการใช้ pocketbase แต่กลายเป็นว่าปีนี้ใช้ AI เขียนโค้ดหมดเลยดีกว่า ได้โค้ดที่ flexible กว่ามาก เล็กกว่า ไม่ต้องมี endpoint ที่เราไม่เคยคิดจะใช้แต่แรก
- ผลที่ได้ คือความผิดพลาดที่เกิดขึ้นอยู่เนืองๆ และคงเกิดขึ้นอีกมากเมื่อเราเคยชินกับความสะดวกสบายในการใช้งานมากขึ้นเรื่อยๆ ไม่ว่าจะเป็นความผิดพลาดที่เห็นคาตา (user ใช้ agentic coder สั่งแล้วกด accept ตลอดไม่ยอมอ่าน วันดีคืนดีมันก็จะทำ data หายเอา)
- ถ้ายังไม่มีความเปลี่ยนแปลงอะไรเป็นพิเศษ AI ใหม่ๆ เขียนโปรแกรมเก่งขึ้นเรื่อยๆ เราได้โค้ดทีละหลายพัน หลายหมื่น (หรือหลายแสน) บรรทัด ในการสั่งไม่กี่ย่อหน้า ความผิดพลาดประหลาดๆ อาจจะน้อยลง แต่ก็ได้ความผิดพลาดที่ซับซ้อนมากขึ้นเรื่อยๆ มาแทน
- ความเก่งขึ้นเรื่อยๆ ของ AI เป็นความท้าทายของโปรแกรมเมอร์รุ่นนี้และรุ่นต่อไป เคยมีคำกล่าวว่า คนเราต้องการความเก่งในการดีบั๊กเป็นสองเท่าของการเขียนโค้ด ในกรณีของ AI เราต้องการโปรแกรมเมอร์ที่เก่งเป็นสองเท่าของ AI เขียนโค้ด AI โยนโค้ดมาทีละหมื่นบรรทัด อ่านคร่าวๆ แล้วก็ถูกต้องดี คอมไพล์ผ่าน แต่กลับมีกรณีที่ทำผิด บอกให้ AI แก้แล้วมันเริ่มวนไปวนมา แก้แล้วไม่หายไปสักทีก็ถึงเวลา hand off มาสู่คน คนนั้นต้องเก่งสองเท่าของ AI ทันที ช้ากว่าพันเท่าหมื่นเท่าได้ แต่ต้องเก่งกว่าสองเท่า
- หลังจากนี้โปรแกรมเมอร์จะถูกคาดหวัง “ความเก่งสองเท่าของ AI” ทันที เพราะ value อยู่ตรงนั้นแล้ว การที่เด็กจบใหม่สักคนหนึ่งจะทำงานง่ายๆ บางอย่างเพื่อเรียนรู้เป็นเวลาสองสามปีก่อนจะเริ่มไปแก้งานคนอื่นจะหายไป วันแรกของการทำงานคือการแก้โค้ดที่ AI เขียนมา
- การศึกษาควรปรับอย่างไรในโลกยุคนี้ เป็นปริศนาที่ยังไม่มีใครตอบได้ เด็กจำนวนมากชินกับการใช้ AI ทำการบ้านคงไม่ใช่ปัญหาในตัวมันเอง แต่เด็กรุ่นต่อไปต้องเจอกับความคาดหวังว่าทันทีที่เริ่มทำงาน ต้องเก่งกว่า AI (ที่พัฒนาไม่หยุด) เท่านั้น หากทำได้แย่กว่าหรือเท่ากับ AI ก็ไม่สามารถตอบได้ว่าทำไมองค์กรต้องจ้าง เราอาจจะปรับหลักสูตรให้ถีบเด็กจากหน้าผาด้วยการให้โจทย์ที่ยากเกิน AI ปัจจุบันแล้วเด็กใช้ AI ทำไปแก้ไปตลอดชีวิตมหาวิทยาลัย เด็กจำนวนมากจะกระอักแน่ แต่เด็กที่ผ่านมาได้ก็อาจจะถูกบีบด้วย AI เวอร์ชั่นต่อไปที่เก่งขึ้นทันทีที่เรียนจบ