Vibe Coding กับทฤษฎีวันสิ้นสุดของนักพัฒนา: มุมมองต่อทิศทางการเติบโตของนักพัฒนารุ่นจูเนียร์
(stdy.blog)- เมื่อ Vibe Coding กำลังมาแรง ก็เกิดข้อถกเถียงควบคู่กันอย่างคึกคักว่า "ต่อไปนี้ไม่จำเป็นต้องมีนักพัฒนาแล้ว" vs "ก็ยังอีกไกล"
- ทั้งสองฝั่งต่างก็มีเหตุผล ผมจึงรวบรวมความคิดที่มีมาตลอดระหว่างติดตามความก้าวหน้าของ AI และทำงานในฐานะ Product Engineer
- แต่ผมไม่ใช่ผู้เชี่ยวชาญด้าน AI เป็นแค่นักพัฒนาคนหนึ่งเท่านั้น ประสบการณ์กับ Vibe Coding ก็ยังมีไม่มาก อย่างไรก็ดี ผมเขียนบทความนี้เพราะอยากฟังความเห็นจากคนอื่น ๆ และหวังว่าจะเป็นประโยชน์กับนักพัฒนาจูเนียร์ที่กำลังกังวลอยู่
Vibe ที่ได้ลองด้วยตัวเอง: ไปได้ไกลขนาดนี้ vs ได้แค่นี้เอง
ผมลองสร้างเกมดีดลูกแก้วด้วย Vibe Coding ในช่วงสุดสัปดาห์ ทำขึ้นมาเพื่อจะได้เล่นกับลูกสาววัย 7 ขวบ ระหว่างทาง 90% ของการเขียนโค้ดทำผ่าน prompt ล้วน ๆ ทำให้เวลาในการพัฒนาลดลงแบบก้าวกระโดด (ใช้เวลาแค่ 4 ชั่วโมงก็ได้งานที่คุณภาพไม่เลวเลย)
ในกระบวนการนี้ ผมสลับไปมาระหว่างความผิดหวังแบบ "แค่นี้ก็ทำไม่ได้เหรอ?" กับความประหลาดใจแบบ "แค่บอก requirement ระดับนี้ก็ทำออกมาได้ดีขนาดนี้เลยเหรอ?" โดยเฉพาะอย่างแรกนั้นเกิดขึ้นมาก เพราะการทำให้ AI "ทำตามที่เราพูด" ไม่ใช่เรื่องง่าย
อย่างไรก็ตาม ถ้าปรับแต่ง prompt ต่อไปและเทคโนโลยีพัฒนาไปอีก สัดส่วนของความ "ประหลาดใจ" น่าจะเพิ่มขึ้นมากกว่ามาก และผมคิดว่านี่จะนำไปสู่การลดลงอย่างชัดเจนของการจ้างนักพัฒนาจูเนียร์
ผมจะลองอธิบายความรู้สึกนี้ด้วยกฎพาเรโตและแนวคิดเรื่องความสุกงอมของผลิตภัณฑ์
ฝั่งสิ้นหวัง: โค้ด 96% อาจถูก AI เขียนแทน
ถ้ามองความสุกงอมของผลิตภัณฑ์เป็น 3 ระดับ (zero-to-one, one-to-ten, และมากกว่านั้น) สิ่งที่น่าตกใจก็คือ โค้ดส่วนใหญ่ในระดับ zero-to-one ตอนนี้สามารถถูกแทนที่ด้วย AI ได้แล้ว
ถ้ามองผ่านกฎพาเรโต ผมคิดว่า 80% ของโค้ดที่นักพัฒนาสร้างขึ้นเพื่อพัฒนาผลิตภัณฑ์ อาจเป็นผลลัพธ์สำหรับช่วง zero-to-one นี่เอง
- โค้ดที่เกิดขึ้นระหว่างการทำไอเดียให้เป็นจริงและค้นหา PMF รวมถึงโค้ดที่แม้แต่คนที่ไม่ใช่นักพัฒนาก็สร้างได้ง่ายด้วย Vibe Coding
ยิ่งไปกว่านั้น ถ้าสมมติว่าสามารถนิยามและแยกย่อย 80% ที่จำเป็นในช่วง one-to-ten ให้กลายเป็นงานระดับ zero-to-one ได้...
- แบบสุดโต่ง ก็อาจหมายความว่าประมาณ 96% ของปริมาณโค้ดที่ผลิต (= 0.8 + 0.2 * 0.8) สามารถถูก AI แทนที่ได้หรือไม่
- ในวิดีโอของ Y Combinator ที่แนะนำ Vibe Coding ก็มีผู้ก่อตั้งบางคนบอกว่า "95% ของ codebase ของผลิตภัณฑ์ถูกเขียนโดย AI" ซึ่งตัวเลขมันก็ดูสอดคล้องกันอย่างแปลก ๆ
ผมคาดว่าสิ่งนี้จะยกระดับมาตรฐานความคาดหวังต่อความสามารถของนักพัฒนา และยกระดับความคาดหวังต่อผลิตภัณฑ์ระดับ MVP ไปพร้อมกัน
- คล้ายกับหลังจากมี Bootstrap และ TailwindCSS แล้ว การทำ UI styling ในระดับที่ "พอใช้ได้" กลายเป็นทักษะพื้นฐานของนักพัฒนาฝั่ง frontend ไปโดยปริยาย
ถ้าเป็นอย่างนั้น การที่ช่องทางการจ้างงานสำหรับนักพัฒนาซึ่งก่อนหน้านี้เพียงแค่มีความสามารถสร้างผลิตภัณฑ์ในช่วง zero-to-one ก็ได้รับการยอมรับ จะลดลง ก็เป็นเรื่องที่ดูสมเหตุสมผล ดังนั้นคำพูดที่ว่า "ต่อไปนี้ไม่จำเป็นต้องมีนักพัฒนาแล้ว" จึงไม่ใช่การพูดเกินจริงนัก....
...มันจะเป็นแบบนั้นจริงหรือ?
ฝั่งมีความหวัง: ถึงอย่างนั้น นักพัฒนาก็ยังมีงานให้ทำอีกมาก
1) ขนาดของตลาดใหญ่ขึ้นมาก จึงมีงานมากขึ้น
ความสำคัญที่สุดของ Vibe Coding คือการลดกำแพงในการเข้าสู่การพัฒนาผลิตภัณฑ์
- งานส่วนใหญ่ที่เดิมทีนักพัฒนาต้องลงมือทำเองเพื่อไปให้ถึง zero-to-one ตอนนี้ coding agent สามารถเข้ามาแทนที่ได้ด้วยต้นทุนที่ต่ำอย่างมาก (เวลา/เงิน/คน)
- กล่าวคือ ต่อให้ไม่มีนักพัฒนา ก็สามารถหมุนวงจรการลงมือทำไอเดีย-ทดสอบ-ตรวจสอบได้อย่างรวดเร็ว
ดังนั้น ผลิตภัณฑ์ระดับ zero-to-one (หรือแม้แต่ต่ำกว่านั้น) ที่แต่เดิมไม่มีทางเกิดขึ้นได้ จะปรากฏขึ้นอย่างมหาศาล และคนที่คิดว่า "ฉันก็อยากทำไอเดียของตัวเองให้เป็นจริง" ก็จะมีเพิ่มขึ้นมากด้วย
ทั้งหมดนี้จะส่งผลให้ขนาดของตลาดที่ "นักพัฒนาสามารถหาเงินได้" ใหญ่ขึ้น คนที่เดิมไม่ใช่ลูกค้าของนักพัฒนาจะกลายมาเป็นกลุ่มลูกค้าใหม่ เช่น
- การสอน Vibe Coding ให้คนที่ไม่ใช่นักพัฒนา PM และดีไซเนอร์ เพื่อช่วยให้พวกเขาทำไอเดียของตัวเองให้เป็นจริงได้
- งานรับจ้างระยะสั้นเพื่อช่วยพาผลิตภัณฑ์ที่ทำไปแล้ว 90% ด้วย Cursor แต่ยังไปไม่ถึงขั้นเสร็จสมบูรณ์ ให้เสร็จจนได้
- ที่ปรึกษาเพื่อช่วยให้ผลิตภัณฑ์ที่พยายามทำขึ้นมาไม่ว่าจะด้วยวิธีใดก็ตาม สามารถนำไปใช้งานจริงและต่อยอดเป็นรายได้อย่างยั่งยืน
- การพัฒนาเครื่องมือแบบเสียเงินหลากหลายประเภทที่ช่วยให้ทำ Vibe Coding ได้เก่งขึ้นและง่ายขึ้น
ไม่ว่าจะเป็นการหารายได้เสริมจากงานลักษณะนี้นอกบริษัท หรือจะมีบริษัทใหม่ที่ทำงานแนวนี้เกิดขึ้น ผมก็มองว่าผู้ที่ได้ประโยชน์จากการเปลี่ยนแปลงของตลาดมากที่สุดก็คือนักพัฒนา
2) นักพัฒนามีสิ่งที่ทำได้และควรทำ นอกเหนือจากการเขียนโค้ดอีกมาก
ต่อให้ AI แทนที่ "การเขียนโค้ด" ได้ 90% ก็ไม่ได้แปลว่าจะสามารถปลดนักพัฒนา 90% ได้
- เพราะสัดส่วนที่การเขียนโค้ดมีต่อการพัฒนาผลิตภัณฑ์ หรือไกลไปกว่านั้นคือ Product Engineering ไม่ได้มากอย่างที่เราคิด
แค่ดูคร่าว ๆ ว่ากว่าฟีเจอร์หนึ่งอย่างจะถูกเพิ่มเข้าไปในผลิตภัณฑ์ ต้องผ่านกระบวนการอะไรบ้าง ก็จะเห็นว่ามีขั้นตอนมากมายขนาดนี้
- รับรู้ปัญหา
- คิดไอเดียวิธีแก้
- ประเมินผลลัพธ์ที่คาดหวังและต้นทุน ตัดสินใจลำดับความสำคัญของการพัฒนา
- วางแผนเพื่อแปลงให้กลายเป็นฟีเจอร์ในผลิตภัณฑ์
- ออกแบบ UI/UX
- ออกแบบสถาปัตยกรรม
- ลงมือทำ backend + frontend + infrastructure
- code review, automated test, QA
- deploy, monitoring, โปรโมตฟีเจอร์, A/B testing
- เก็บ feedback จากผู้ใช้, ดำเนินงาน, ปรับปรุง
Vibe Coding เข้ามาช่วยแทนได้เพียงบางส่วนของข้อ 7 และ 8 เท่านั้น
- ถ้าเป็น Product Engineer ที่ยอดเยี่ยม จะต้องเข้าไปมีส่วนร่วมในทุกขั้นตอนเหล่านี้ในระดับหนึ่งขึ้นไป
- เมื่อ AI ช่วยเขียนโค้ดแทนให้ มูลค่าของคนที่ทำส่วนที่เหลือได้ดีจึงกลับยิ่งสูงขึ้น
3) ต่อให้ดูเฉพาะเรื่องโค้ด ก็ยังมีงานที่มีความหมายให้ทำอีกมาก
ต่อให้ยังไม่พูดถึง Product Engineering ก็ยังมีงานอีกมาก
- ยังมีงานอีกมากในการเก็บรายละเอียดช่วงไม่กี่เปอร์เซ็นต์สุดท้ายของการเขียนโค้ดในระยะ one-to-ten
- ถ้านักพัฒนาช่วยเรื่องการออกแบบสเปก การออกแบบโครงสร้าง และการแตกงาน ก็จะช่วยลดต้นทุนของ Vibe Coding ได้ด้วย
และสำหรับผลิตภัณฑ์ที่เลยช่วง one-to-ten ไปแล้ว Vibe Coding ก็มีข้อจำกัดมากมาย
- codebase ใหญ่ขึ้น -> context window ที่จำกัด
- หากต้องรักษามาตรฐานความปลอดภัยสูงและเพิ่มประสิทธิภาพ ก็ยังต้องอาศัยผู้เชี่ยวชาญลงมือแทรกแซงโดยตรง
- เช่นเดียวกันในกรณีที่ AI ต้องเขียนโค้ดด้วยไลบรารีหรือภาษาที่มันอาจเรียนรู้มาได้ไม่ดีนัก
- https://th.news.hada.io/topic?id=19923 ก็พูดถึงปัญหาคล้าย ๆ กัน
แล้วจากนี้นักพัฒนาจูเนียร์ควรทำอย่างไร?
ไม่ว่าโลกจะไปทางฝั่งสิ้นหวังหรือฝั่งมีความหวัง สิ่งหนึ่งที่แน่นอนคือมันกำลังเปลี่ยนเร็วมาก โดยเฉพาะในสถานการณ์ที่ประตูสู่การจ้างงานแคบลงอย่างรวดเร็ว นักพัฒนาจูเนียร์ควรเรียนรู้และเติบโตอย่างไรดี?
หลังจากอ่านงานเขียน <อะไรทำให้นักพัฒนาที่ยอดเยี่ยมเป็นนักพัฒนาที่ยอดเยี่ยม?> ผมก็ลองนิยามความสามารถหลัก 5 ประการของนักพัฒนาที่ยอดเยี่ยมไว้แบบนี้
- เขียนโค้ดได้ดี
- ฝึกการตัดสินใจบนฐานของหลักฐาน
- ช่วยให้เพื่อนร่วมงานตัดสินใจได้อย่างมีประสิทธิภาพ
- เพิ่มคุณค่าในปัจจุบันของงานให้สูงสุด
- เรียนรู้อย่างมีประสิทธิภาพและสม่ำเสมอ
สิ่งเหล่านี้ยังคงสำคัญแม้อยู่ในยุค AI และสามารถเชื่อมโยงกับฝั่งมีความหวังได้
1) ใช้ประโยชน์จากตลาดที่กำลังขยายตัวอย่างเต็มที่
ถ้าเป็นผม ผมจะลองทำสิ่งเหล่านี้
- ศึกษา prompt engineering
- ลองใช้แอป AI ใหม่ ๆ ที่ออกมาทีละตัว
- ศึกษาและทดลองว่าต้องแตกงานอย่างไร coding agent ถึงจะเข้าใจ requirement ของเราได้ดี
- ใช้ Vibe Coding สร้างและ deploy แอปที่แก้ปัญหาเล็ก ๆ ของตัวเอง
- ถ้ามีคนรู้จักที่ไม่ใช่นักพัฒนาอยากทำ Vibe Coding ก็ลองสอนพิเศษให้ (โดยคิดเงิน)
- ลองช่วยคนรู้จักปิดงาน implement ให้เสร็จ, deploy และดูแลระบบให้ได้จริงด้วย (แน่นอนว่าคิดเงินเช่นกัน)
2) สร้างความสามารถในฐานะ Product Engineer
ถ้าเป็นผม ผมจะลองทำสิ่งเหล่านี้
- สนใจภาพรวมของผลิตภัณฑ์ เช่น การรับรู้ปัญหา ไอเดีย การวางแผน การออกแบบ การทดสอบ และการปฏิบัติการ
- ถ้าลองสร้างและดูแลแอปแบบ solo founder ความสามารถด้าน Product Engineering ก็น่าจะเติบโตขึ้นเองตามธรรมชาติ
- พยายามพัฒนาผลิตภัณฑ์ผ่านการทำงานร่วมกันในทีม เพื่อยกระดับทั้งความสามารถในการทำงานร่วมกันและ Product Engineering
เวลาผมจ้างนักพัฒนาและเขียน offer letter ผมมักใส่ข้อความไว้เสมอว่า "ผมอยากให้คุณทำงานโดยคิดว่าคุณคือ mini CTO"
- อย่างน้อยในโปรเจกต์ที่คุณรับผิดชอบ คุณคือผู้รับผิดชอบขั้นสุดท้ายต่อการตัดสินใจทางเทคนิค
- จงเข้าไปมีส่วนร่วมในทุกขั้นตอนที่จำเป็นต่อการทำให้โปรเจกต์นั้นประสบความสำเร็จ
- ไม่ว่าจะเป็นเรื่องเทคนิคหรือไม่ใช่เทคนิค ก็จงช่วยให้เพื่อนร่วมงานสามารถตัดสินใจและลงมือทำได้อย่างมีประสิทธิภาพ
3) เข้าใจแต่ละเทคโนโลยีให้ลึก และพัฒนา coding sense
นักพัฒนาที่เข้าใจแต่ละเทคโนโลยีอย่างลึกซึ้งยังคงเป็นที่ต้องการอย่างสม่ำเสมอ เพราะหากต้องการก้าวข้าม PMF ไปสู่บริษัทระดับ unicorn/decacorn การ Make it Right & Fast เป็นสิ่งจำเป็น
เรื่องนี้ไม่มีทางลัด ต้องลงทุนเวลาและพยายาม (โดยอาศัย AI ช่วยได้)
- เช่น การสำรวจภายในของ framework/library, ทำความเข้าใจบริบททางประวัติศาสตร์, มีส่วนร่วมกับโอเพนซอร์ส, สร้างไลบรารีเอง, แกะรอย/แก้บั๊ก, ปรับปรุง web standard/performance เป็นต้น
ขณะเดียวกัน การมีเกณฑ์ของตัวเองว่าโค้ดที่ดีคืออะไร และมี "coding sense" ในการมองออกว่าโค้ดไหนดี จะยิ่งสำคัญขึ้น เพราะเราต้องสามารถรับรู้ได้ว่า Vibe ของ AI กำลังพาไปผิดทาง ต้องหยุด และต้องแทรกแซงเมื่อไร
การพัฒนา coding sense ต้องอาศัยการฝึกฝนอย่างตั้งใจ ตรงนี้ก็ต้องลงเวลาและความพยายามเช่นกัน
- ดูโค้ดดี ๆ ให้มาก รับ feedback ต่อโค้ดที่ตัวเองเขียนให้มาก ไม่ว่าจะจาก AI หรือจากนักพัฒนารุ่นพี่ และเวลามองโค้ดที่ AI หรือเพื่อนร่วมงานเขียน ก็ลองคาดการณ์ว่า "ถ้าเดินต่อแบบนี้น่าจะเกิดปัญหาอะไรขึ้น" แล้วค่อยนำไปเทียบกับสิ่งที่เกิดขึ้นจริง
11 ความคิดเห็น
อย่างไรก็ดี งานวิศวกรรมซอฟต์แวร์ในภาคปฏิบัติจะเปลี่ยนไปมากแน่นอน นักปั่นโค้ดจะมีความสามารถในการแข่งขันลดลง แต่ผมเดิมพันว่าวิศวกรที่สามารถสร้างผลิตภัณฑ์ได้จริงแบบ End-to-End จะเป็นคนที่อยู่รอด
งานพิมพ์คีย์บอร์ดลดลง แต่มีงานเพิ่มคือการหากับดักในโค้ดที่ AI สร้างขึ้น
ขอบคุณมากสำหรับบทความที่มีความหมายและยอดเยี่ยมมากครับ!
พิมพ์ผิดนะครับ T_T
โดยเฉพาะอย่างหลังนั้น ส่วนหนึ่งเป็นเพราะทำให้ AI 'ทำตามที่ผมพูด' ได้ไม่ง่ายนัก -> อย่างแรก
การเข้าใจอย่างลึกซึ้งถึง product engineering ที่จำเป็นสำหรับสตาร์ตอัปก็เป็นเรื่องที่ดี แต่ผมก็คิดว่าเส้นทางที่มุ่งไล่ตามและขัดเกลาเทคโนโลยีให้ถึงขีดสุดก็ยังคงมีความหมายอยู่เช่นกัน การพัฒนาเพื่อสร้างเว็บแอปพลิเคชันง่าย ๆ อาจถูก AI เข้ามาแทนที่ได้ แต่ผมคิดว่าจะต้องมีใครสักคนที่คิดค้น Kubernetes และออกแบบ ElasticSearch
เนื่องจากจำนวนผู้ออกแบบคอมโพเนนต์แกนหลักเหล่านั้นมีจำกัด ผมจึงมองว่าในท้ายที่สุดความต้องการตำแหน่งงานในสายอาชีพที่เรียกว่า "นักพัฒนา" จะลดลงจริง
พอได้เขียนคอมเมนต์ไป ก็เหมือนว่าข้อความที่ผมอยากสื่อในบทความมันเริ่มชัดเจนขึ้นนะครับ
ผมคิดว่าในระดับบริษัทแต่ละแห่ง ไม่ว่าอย่างไรความต้องการนักพัฒนาก็น่าจะลดลง แต่จำนวนบริษัท หรือผู้ประกอบการ/บุคคล ที่ต้องการ 'งานพัฒนา' หรือสิ่งที่ใกล้เคียงกัน จะเพิ่มขึ้นอีกมาก ดังนั้นงานที่นักพัฒนาต้องทำก็ยังมีอีกเยอะอยู่ดี
แน่นอนว่าสิ่งเหล่านั้น AI อาจเข้ามาแทนที่ได้เหมือนกัน แต่ถ้าไปถึงจุดนั้น ก็คงแทบไม่มีสายอาชีพไหนที่ไม่ถูกแทนที่แล้วล่ะ...
เป็นคำพูดที่ดีมากครับ!
เห็นด้วยครับ/ค่ะ ต่อจากนี้น่าจะแบ่งกันระหว่างงานที่ AI เขียนโค้ดทำได้กับการออกแบบและการทบทวนที่มนุษย์ต้องทำ และจนกว่าจะมี AI ที่เข้าใจทั้งโปรเจกต์ได้ทั้งหมด ก็น่าจะยังอยู่ร่วมกันแบบพึ่งพากันไปก่อน
เห็นด้วยครับ! แน่นอนว่าตรงนั้น AI ก็คงช่วยได้เหมือนกัน แต่ถ้าเป็นสไตล์ vibe อย่างเดียวก็น่าจะยากอยู่ไหมครับ
ขออ้างอิงไว้ก่อนว่า เกมที่ทำด้วย vibe coding คืออันนี้ครับ https://www.stdy.blog/vibe-go-stone/