การเรียนเขียนโค้ดยังคงมีคุณค่า
(stevekrouse.com)- แม้จะอยู่ในยุคของ LLM และ vibe coding การเขียนโค้ดยังคงเป็นมากกว่าทักษะเพื่อหางาน แต่ยังเป็นสื่อสำหรับเรียนรู้คณิตศาสตร์ วิธีการเรียนรู้ และการแสดงออกอย่างสร้างสรรค์
- บรรยากาศที่ “learn to code” เคยถูกใช้ราวกับเป็นคำขวัญของการเลื่อนชนชั้นอย่างรวดเร็วเริ่มจางลงแล้ว และการเขียน JavaScript ได้ไม่กี่บรรทัดก็ไม่ได้การันตี เงินเดือนหกหลัก
- เช่นเดียวกับกรณีของ LOGO และ Mathland การเขียนโค้ดทำให้เข้าใจคณิตศาสตร์ผ่านการสำรวจแทนการท่องจำคำสั่ง พร้อมฝึกดีบัก การจัดโครงสร้าง และตรรกะไปพร้อมกัน
- การเขียนโปรแกรมผสานจินตนาการแบบงานเขียน ความแม่นยำแบบคณิตศาสตร์ และฟีดแบ็กทันทีแบบเกม เพื่อขัดเกลาสิ่งที่ต้องการให้กลายเป็นภาษาที่คอมพิวเตอร์สามารถนำไปทำงานได้
- แม้ LLM จะจัดการทั้งภาษาอังกฤษและโค้ดได้ดี แต่เหมือนที่คุณค่าของมนุษยศาสตร์ไม่ได้หายไป ความจำเป็นของ ความรู้ด้านโค้ดในระดับสากล ก็ยังคงอยู่
คุณค่าของการเขียนโค้ดที่มากกว่าการการันตีงาน
- Steve Krouse ผู้ก่อตั้ง Val Town ดำเนินธุรกิจ “Silicon Valley startup” สำหรับการเขียนและดีพลอยโค้ด แต่ก็ยังกล่าวว่าทุกคนควรเรียนเขียนโค้ด
- ใน Making Sense with Sam Harris #481 มีคำพูดในทำนองว่า ช่วงหลายเดือนที่ผ่านมาแทบไม่ได้ยินคำว่า “learn to code” ใน Silicon Valley เลย
- ครั้งหนึ่ง “learn to code” เคยถูกพูดซ้ำเหมือนเป็นเส้นทางหลุดพ้นจากความยากจนอย่างรวดเร็ว แต่แค่เขียน JavaScript ต่อกันได้สองสามบรรทัดไม่ได้หมายความว่าจะได้ เงินเดือนหกหลัก ตามมา
- การเขียนโค้ดมีคุณค่าให้เรียนรู้ด้วย เหตุผลด้านการศึกษา ไม่ใช่แค่ประโยชน์ทางอาชีพ เช่นเดียวกับคณิตศาสตร์ วรรณกรรม วิทยาศาสตร์ และมนุษยศาสตร์
สื่อสำหรับเรียนคณิตศาสตร์และฝึกการคิด
- การเขียนโค้ดสามารถเป็นสื่ออันทรงพลังในการเรียนรู้คณิตศาสตร์
- Steve Krouse เริ่มชอบคณิตศาสตร์ผ่านโปรแกรมการเขียนโปรแกรมหลังเลิกเรียน และเก่งคณิตศาสตร์มากกว่าที่คาดไว้
- Seymour Papert ต้องการให้เด็ก ๆ เรียนคณิตศาสตร์เหมือนเรียนภาษา คือผ่านการสำรวจ ไม่ใช่ผ่านการสั่งการ
- “Mathland” ของ Papert คือภาษาโปรแกรม LOGO ที่ใช้สั่งเต่าบนหน้าจอให้วาดภาพ
- Steve Krouse ยังสร้างเวอร์ชันของ LOGOที่ลองเล่นออนไลน์ได้ด้วย
- ในกระบวนการเรียนเขียนโปรแกรม ยังได้พัฒนาทักษะเมตาอย่าง การดีบัก การจัดโครงสร้าง และตรรกะไปพร้อมกัน รวมถึงเกิดความรู้สึกว่าไม่มีอะไรที่เรียนรู้ไม่ได้
การเขียนโปรแกรมในฐานะงานสร้างสรรค์
- การเขียนโค้ดคือกิจกรรมที่จุดตัดของความสร้างสรรค์แบบการเขียน ความแม่นยำแบบคณิตศาสตร์ และลูปฟีดแบ็กฉับไวแบบวิดีโอเกม
- มันบังคับให้ขัดเกลาสิ่งที่ต้องการให้กลายเป็นภาษาที่แม่นยำพอที่คอมพิวเตอร์จะทำตามได้
- มีการเปรียบว่าเมื่อเรียนรู้ไวยากรณ์ที่ไม่คุ้นเคยแล้วทำให้คอมพิวเตอร์สร้างสิ่งที่จินตนาการไว้ได้จริง มันก็คล้ายกับการร่ายคาถา
- LLM สามารถเขียนได้ดีทั้งภาษาอังกฤษและโค้ด แต่เหมือนกับที่ความเกี่ยวข้องของมนุษยศาสตร์ไม่ได้หายไป โค้ดก็ยังคงสำคัญ
- โค้ดอาจดูเหมือนรายละเอียดที่เข้าใจยากและน่าเบื่อเหมือนเอกสารกฎหมาย แต่เป็นรากฐานที่ทำให้โลกดำเนินไป และโค้ดเพียงบรรทัดเดียวที่งดงามก็อาจเปลี่ยนโลกได้
- การเขียนโปรแกรมเป็นกิจกรรมที่สนุก และแม้ในยุค LLM ความฝันเรื่อง ความรู้ด้านโค้ดในระดับสากล หรือ “การปฏิวัติคอมพิวเตอร์ที่แท้จริง” ก็ยังคงอยู่
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
แม้แต่ในหมู่คนที่เขียนโค้ดได้มาตั้งแต่ก่อนยุค LLM ทักษะการเขียนโค้ดก็กำลังถดถอยไปแล้ว และคงจะเป็นแบบนั้นต่อไปอีก 10–20 ปี
การเรียนเขียนโค้ดในช่วงเวลาเดียวกันก็อาจไม่ได้ให้ผลตอบแทนมากนัก
ท้ายที่สุด โค้ดที่จะใช้ฝึก LLM ในอนาคตก็คงมีแต่โค้ดที่ LLM สร้างขึ้น และคุณภาพของ codebase ที่ใช้งานจริงอาจลดลงจนถึงระดับที่มนุษย์ก็เข้าใจได้ยาก และ LLM ก็ยังดูแลรักษาได้ลำบาก จนรอยร้าวเริ่มปรากฏ
เมื่อถึงตอนนั้น การเขียนโค้ดจะกลับมาเป็นทักษะที่มีค่าอีกครั้ง แต่จากมุมมองของการวางแผนอาชีพ เวลานั้นไม่แน่นอน และตลาดอาจยังไร้เหตุผลอยู่นานกว่าที่คนคนหนึ่งจะทนไหว
เรายังต้องมีคนที่เขียนโค้ดเองและฟื้นฟูความเป็นช่างฝีมือกลับมา
ถ้าทุกคนพึ่งพาโค้ดที่ถูกสร้างขึ้น ก็จะทำได้แค่ทำซ้ำสิ่งที่รู้กันอยู่แล้ว และมีเพียงคนที่เรียนรู้เส้นทางยาก ๆ ผ่านการศึกษาอย่างแท้จริงเท่านั้นที่จะมีความคิดสร้างสรรค์และสติปัญญาพอจะสร้างความรู้ใหม่และทำเทปการศึกษาใหม่ ๆ ได้
ข้อ 1 และ 2 ที่ codebase ใช้งานจริงจะกลายเป็นสิ่งที่มนุษย์เข้าใจไม่ได้ และ LLM ก็รักษาต่อได้ยาก น่าจะเกิดขึ้น แต่ข้อ 3 ที่หลังจากนั้นการเขียนโค้ดจะกลับมามีคุณค่าอีกครั้ง คิดว่าไม่น่าจะใช่
โดยเฉพาะฝ่ายบริหารจะลดความคาดหวังลง หรือถูกบังคับให้ทำเช่นนั้น
ลองคิดดูว่าบ่อยแค่ไหนที่ “เวอร์ชันใหม่และปรับปรุงแล้ว” ตัดฟีเจอร์สำคัญที่เคยใช้กันอยู่ออกไปโดยไม่มีอะไรทดแทนที่เหมาะสม
เมื่อ codebase กลายเป็นสิ่งที่ดูแลรักษาไม่ได้ ก็น่าจะสร้างกองขยะใหม่ขึ้นมาอีกกอง แล้วเรียกการเปลี่ยนแปลงสุ่ม ๆ ตรงนั้นตรงนี้ว่าการปรับปรุง
ราว 5 ปีก่อน ตอนที่ Fujitsu พยายามกลับมาผลิตแล็ปท็อปอีกครั้ง วิธีที่ใช้ได้จริงคือการรวบรวมแรงงานชาวญี่ปุ่นที่เกษียณแล้วกลับมา
ดูเหมือนคนรุ่นใหม่จะไม่มีทักษะ หรือไม่ก็ไม่ได้อยากทำเป็นพิเศษ และหลังจากผลิตไปไม่กี่รอบก็เหมือนจะจบลง
Panasonic ยังทำแล็ปท็อปสำหรับองค์กรอยู่ แต่ราคาแพงมาก และเรื่องนี้เกี่ยวข้องกับหัวข้อนี้โดยตรง
การเรียนเขียนโค้ดยังจำเป็น และคุณต้องรู้ว่าอะไรเป็นไปได้และอะไรทำได้ง่าย เพื่อจะได้รู้ว่าขอให้มันทำได้แค่ไหน
สิ่งที่สำคัญน้อยลงคือการคอยลับคมทักษะให้เฉียบอยู่ตลอด
ถ้าเขียนโค้ดน้อยลงสักพัก ข้อผิดพลาดแบบ off-by-one หรือความผิดพลาดจากการคัดลอก/วางจะเพิ่มขึ้น แต่เพราะมี LLM ความสำคัญของการรักษาเซนส์การเขียนโค้ดให้อุ่นเครื่องอยู่เสมอก็ลดลง
ถึงอย่างนั้น ถ้าผมทำเองไม่เป็น ต่อให้มี Fable ก็คงทำงานของผมให้สำเร็จไม่ได้
ระหว่างนั้น คนจำนวนมากขึ้นจะสร้างและใช้ซอฟต์แวร์มากกว่าที่เคย และคำพร่ำบ่นว่า “ทุกอย่างกำลังพัง” ก็น่าจะดูเกินจริงอย่างน่าขัน
คำกล่าวที่ว่า “โค้ดเป็นรูปแบบการแสดงออกเชิงสร้างสรรค์ที่งดงามและรุ่มรวยไม่แพ้วรรณกรรมหรือดนตรี” ฟังดูเกินจริง และทำให้สงสัยว่าผู้เขียนคุ้นเคยกับวรรณกรรมและดนตรีแค่ไหน
การเขียนโปรแกรมส่วนใหญ่ใกล้เคียงกับ งานประปา มากกว่า
คือเข้ามา บ่นคนที่ทำไว้ก่อนหน้า แล้วแก้ปริศนาที่มีข้อจำกัดเฉพาะตัว
เหตุผลที่ LLM เขียนโค้ดได้ดี ก็เพราะในการเขียนโค้ด เราต้องการโค้ดที่น่าเบื่อและธรรมดา
ไม่เคยมีช่างประปามาแล้วด่าคนก่อนหน้า เขาแค่เปลี่ยนบางอย่างหรือซ่อมสิ่งที่ผมทำพัง
ผลลัพธ์คือมันทำงานได้สมบูรณ์เป็นปี ๆ หรือหลายสิบปี แม้ผมจะไม่ได้ดูแลมันดีนัก
การทำให้สิ่งหนึ่งน่าเบื่อและธรรมดา ถ้าไม่มีคำที่ดีกว่านี้ ก็เรียกได้ว่าเป็น ศิลปะ
คุณจะตั้งชื่อฟังก์ชันให้เหมือนรหัสย่อก็ไม่ได้ และจะตั้งว่า ThisIsTheEntryPointOfTheProgram() ก็ไม่ได้เช่นกัน ส่วนอะไรดีกว่านั้นก็เป็นเรื่องให้ไตร่ตรองและถกเถียงได้ไม่รู้จบ
เรามอง “เรื่องเล็ก ๆ” เหล่านี้เป็นของตาย เพราะเราคุ้นชินกับการเปลี่ยนของบ่อยและการพองตัวของระบบ แต่ช่างประปาไม่มีทางทำแบบนั้น
พวกเขาไม่ได้เอาวัสดุท่อแบบใหม่เข้ามาทุกสัปดาห์แล้วเปลี่ยนไปตามกระแสถัดไป และโดยทั่วไปพวกเขาสร้างสิ่งที่อยู่ได้นานกว่าคน จึงดูเหมือนเป็นอาชีพจากดาวคนละดวงโดยสิ้นเชิง
demoscene คือการเขียนโปรแกรมเพื่อความสนุกและการแสดงออกเชิงสร้างสรรค์ และยังมี IOCCC ด้วย
สิ่งนี้เทียบได้กับนวนิยายที่เขียนอย่างสร้างสรรค์
ในทางกลับกัน ก็มีงานเขียนที่ทำเป็นอาชีพเฉย ๆ เหมือนเขียนฐานความรู้ และนั่นก็คือการเขียนโปรแกรมแบบงานประปาอย่าง CRUD กับคลาวด์
ถึงอย่างนั้นก็มี อัลกอริทึมที่งดงาม มากมายแบบที่อยู่ในหนังสือของ Knuth และโดยส่วนตัวแล้วผมรู้สึกว่ามันงดงามกว่าดนตรีใด ๆ
ตรงกันข้าม อาจโต้แย้งได้ว่าโค้ดมี พลังในการแสดงออกมากกว่า วรรณกรรมหรือดนตรี เพราะมันมีความเป็นทั่วไปมากกว่า
ลองนึกถึงพื้นที่ของวิดีโอเกมทั้งหมดที่เป็นไปได้ เดโม/อินโทร ภาพแบบ generative และดนตรีแบบ generative สิ่งเหล่านี้เป็นไปไม่ได้หากไม่มีโค้ด
ดูเหมือนกำลังสับสนระหว่างวิธีใช้งานสื่อที่พบได้ทั่วไปกับพลังในการแสดงออกของมัน
การใช้ภาษาประจำวันจำนวนมากก็ไม่น่าสนใจเช่นกัน แต่เราควรมองพื้นที่ของความเป็นไปได้ทั้งหมด
โค้ดเป็นงานหัตถกรรม และเป็นวิธีการเพื่อไปสู่จุดประสงค์หนึ่ง
มันยังคงงดงาม น่าประทับใจ และสร้างสรรค์ได้ แต่เป็นคนละประเภท
นี่ไม่ใช่การตัดสินคุณค่า
ศิลปะก็อาจแย่หรือจืดชืดได้ และโค้ดก็อาจเป็นผลงานอัจฉริยะได้เช่นกัน
แต่เหตุผลที่ยานลงจอดบนดวงจันทร์หรือนาฬิกาทำมืองดงาม คือเพราะมันใช้งานได้จริง และยากจะนำไปเทียบกับดนตรี
ในฐานะโปรแกรมเมอร์มืออาชีพที่กำลังก้าวเข้าสู่ช่วงหนึ่งในสามสุดท้ายของอาชีพที่เคยสนุกสนาน ตอนนี้ผมจัดให้ การเรียนเขียนโค้ด อยู่ในหมวดเดียวกับ “การหาเลี้ยงชีพด้วยการเป็นกวี”
เป็นศิลปะที่สนุกจริง ๆ และมีบางคนเห็นคุณค่า แต่ควรวางแผนอาชีพหลักไว้อีกทางจะดีกว่า
เหล่าซีเนียร์ที่เขียนโค้ดเป็นอยู่แล้วตอนนี้ดูเหมือนจะยังพอไปได้ แต่รูปแบบงานกำลังค่อย ๆ กลายเป็นการดูแลโมเดลเหมือนดูแลผู้ร่วมงานระดับจูเนียร์
นึกถึงเพื่อนเก่าเมื่อนานมาแล้วคนหนึ่ง
เขาเรียนเอกดนตรียุคต้นที่ Harvard ได้ MFA และเก่งมาก
อ่านและเขียนภาษาละตินกับกรีกได้ แต่งและบรรเลงดนตรีด้วยโน้ตแบบยุคกลางได้ และยังออกหนังสือเกี่ยวกับงานปักยุคต้นด้วย
แต่เขาไม่ได้ตำแหน่งในแวดวงวิชาการ และก็หางานที่ต้องใช้ทักษะเหล่านั้นไม่ได้
เมื่อไม่กี่ปีก่อนเขาจากไปอย่างโดดเดี่ยว
ชะตากรรมของโปรแกรมเมอร์จำนวนมากก็อาจเป็นเช่นนั้นได้
ผู้คนยึดติดกับข้อที่ว่า LLM ไม่สามารถแทนที่นักพัฒนาได้อย่างแท้จริง ซึ่งก็จริง แต่ไม่ใช่ประเด็นสำคัญ
หากจะทำให้ตลาดแรงงานสั่นคลอนอย่างมาก แค่ลดจำนวนคนที่จำเป็นต้องใช้เพื่อจัดการส่วนที่ LLM ทำไม่ได้ก็พอ
ต่อให้ประสิทธิภาพของนักพัฒนาปัจจุบันเพิ่มขึ้นแค่ 30% ความต้องการนักพัฒนาก็อาจลดลงได้ 20% และนั่นส่งผลมหาศาลต่ออุปสงค์และค่าจ้าง
นอกโลกตะวันตกซึ่ง AI ไม่ได้ถูกยอมรับมากนัก ตาม https://hai.stanford.edu/ai-index/2026-ai-index-report ระบุว่า AI ทำให้ความต้องการซอฟต์แวร์ เพิ่มขึ้น
สิ่งที่กำลังจะทำตอนนี้คือสร้างอะไรบางอย่างโดยไม่ใช้ LLM เขียนโค้ด
ยังใช้มันเพื่อปรึกษาอยู่
กำลังทำ ตัวรวบรวมการแข่งขันทัวร์นาเมนต์ Dota2 ด้วย Elixir โดยรับสตรีมของทัวร์นาเมนต์มาจัดเรียงตามเวลา เพื่อลดปัญหาที่การดูซีรีส์วิดีโอต่อเนื่องบน YouTube นั้นไม่สะดวก
เหตุผลที่ทำคือผมชอบการเขียนโปรแกรม และชอบสร้างอะไรบางอย่าง
LLM ทำให้ผมขี้เกียจทางความคิด และงานที่สร้างด้วยมันให้ความรู้สึกเติมเต็มน้อยลง
ผมอยากสร้าง และการอยากสร้างนั้นเป็นความเป็นมนุษย์
บางคนชอบวิธีสร้างแบบหนึ่ง ส่วนคนอื่นชอบอีกแบบ ก็ไม่เป็นไร
สุดท้ายแล้วดูเหมือนหลายคนจะลืมไปว่าการเขียนโปรแกรมเป็น กิจกรรมเชิงสร้างสรรค์ อย่างมาก
ถ้าจะพูดให้ชวนถกเถียงเล็กน้อย ผมมองว่าการสร้างโปรแกรม ไม่ว่าจะดีหรือแย่ ก็ใกล้เคียงกับการวาดภาพมากกว่าการสร้างสะพาน
“ความจดจ่อที่มุ่งอยู่กับงานนั้นเองเป็นความเพลิดเพลินอย่างลึกซึ้ง ความสุขที่ได้จากผลงานสำเร็จหลังงานเสร็จไม่เหมือนกับสิ่งนั้น ศิลปินเพลิดเพลินกับผลลัพธ์ แต่ระหว่างวาดภาพ เขาเพลิดเพลินกับศิลปะนั้นเอง”
ปัญหาของ LLM อยู่ตรงนี้พอดี
มันพรากช่วงเวลาที่ผมได้เพลิดเพลินกับศิลปะของการเขียนโปรแกรมเองไป
ข้อมูลมีเยอะมากจนสนุกจริง ๆ และช่วยให้เป็นโปรแกรมเมอร์ที่ดีขึ้นอย่างแน่นอน
โดยส่วนตัว คนรู้จักที่ก่อนยุค LLM ก็ไม่ได้เป็นนักพัฒนาที่ดีนัก ตอนนี้ก็ยังใช้โมเดลรุ่นล่าสุดสร้าง โค้ดแย่ ๆ ออกมา
ความรู้และความเข้าใจที่มั่นคงเกี่ยวกับสถาปัตยกรรมที่ดีและแนวปฏิบัติทั่วไปยังคงเป็นหัวใจสำคัญ
เรามักลืมได้ง่ายว่า ความรู้พื้นฐานและสัญชาตญาณที่ตอนนี้มองว่าเป็นเรื่องปกตินั้น ตอนที่ยังมีประสบการณ์น้อยต้องใช้เวลาและความพยายามมากในการเรียนรู้
เป็นปรากฏการณ์ที่เห็นอยู่เสมอ
LLM อาจเป็น เครื่องมือขยายพลัง ได้ แต่คนที่ถามคำถามที่ถูกต้องไม่เป็น หรือไม่เข้าใจความละเอียดอ่อน ก็จะสร้างโค้ดแย่ ๆ และมันจะขยายเฉพาะด้านแย่นั้น
ผมไม่คิดว่าโมเดลปัจจุบันจะหลีกเลี่ยงสิ่งนี้ได้ โดยเฉพาะข้อจำกัดที่ข้อมูลฝึกในอดีตล้วนเป็นสิ่งที่มนุษย์สร้างขึ้น
มีใครรู้จักนักคณิตศาสตร์ที่ทำการหารยาวหรือพีชคณิตพื้นฐานไม่ได้ไหม?
คงไม่มี
เพราะ คณิตศาสตร์พื้นฐานจำเป็นต่อการเรียนคณิตศาสตร์ขั้นสูง คนแบบนั้นจึงไม่มีอยู่จริง
เครื่องคิดเลขจะช่วยคำนวณพื้นฐานได้หรือไม่นั้นไม่เกี่ยวเลย หากคุณอยากเป็นนักคณิตศาสตร์
ในทำนองเดียวกัน “อีก 5 ปีนักพัฒนาโดยเฉลี่ยจะเขียนโค้ดด้วยมือหรือไม่” ก็ไม่เกี่ยวกับคำถามว่า หากต้องการเชี่ยวชาญ การออกแบบและสร้างซอฟต์แวร์ที่ซับซ้อน ไม่ว่าจะใช้วิธีใด จำเป็นต้องเรียนเขียนโค้ดหรือไม่
จำไม่ได้เลยว่าการหารยาวทำอย่างไร แต่ครั้งหนึ่งเคยทำได้คล่องแน่นอน
เดี๋ยวนี้คิดเลขในใจก็แย่มาก
ถึงอย่างนั้น สิ่งเหล่านั้นก็เคยจำเป็นบนเส้นทางสู่การเป็นนักคณิตศาสตร์ เพียงแต่เมื่อระดับนามธรรมสูงขึ้น ความเกี่ยวข้องของมันก็หายไป
เคยได้ยินนักคณิตศาสตร์พูดเล่นกันบ่อยว่า “ยิ่งไปขั้นสูง ก็ยิ่งทำคณิตศาสตร์ไม่เป็น”
นักคณิตศาสตร์ส่วนใหญ่ถ้าต้องแก้โจทย์การหารยาวก็คงต้องคิดอยู่พอสมควร เพราะทิ้งทักษะนั้นไว้ข้างหลังมานานแล้ว
ถึงอย่างนั้น แม้จะมีเครื่องคิดเลขและโน้ตบุ๊ก Python ผู้คนก็ยังเรียนและทำคณิตศาสตร์ด้วยมือในทุกระดับเพื่อพัฒนาสาขานี้ต่อไป
ผู้คนหมกมุ่นกับ LLM มากเกินไป ราวกับว่ามันคืออนาคตทั้งหมด แต่ตัว LLM เองเป็นผลผลิตของอดีตโดยสิ้นเชิง
LLM ใกล้เคียงกับ JPEG แบบบีบอัดสูญเสียข้อมูล ของภาษาและความรู้ที่แสดงออกผ่านภาษา มากกว่าจะเป็นเครื่องจักรที่คิดได้
ดังนั้น หากต้องการขยายสาขาและก้าวไปสู่อนาคต เราไม่อาจพึ่งพาแค่อัลกอริทึมที่ถดถอยกลับสู่ค่าเฉลี่ยได้
การเขียนโค้ดที่ AI เอเจนต์เข้ามาแทนที่เป็นหลัก น่าจะเป็นแค่ชั้นนอกของการพัฒนาไม่ใช่หรือ?
หมายถึงพวกแอปพลิเคชันสำหรับผู้ใช้ปลายทาง แอป แดชบอร์ด แอปพลิเคชันสำหรับงานธุรกิจ อะไรทำนองนั้น
ใน “เปลือกนอก” แบบนี้ ผู้คนพอจะทนความแม่นยำ 99% หรือโค้ดที่เทอะทะได้ในระดับหนึ่ง และแอปสาย vibe coding ก็อาจอ้างได้ว่า “ดีพอแล้ว”
ถึงอย่างนั้น แค่ดูว่าแอปของ Microsoft กลายเป็นหายนะแบบไหนหลังนำ AI มาใช้ก็พอ
แต่ในแกนหลักที่ผู้คนต้องพึ่งพาจริง ๆ อย่างคอมไพเลอร์ เฟรมเวิร์ก เครื่องมือ และไลบรารี ผู้คนยังคงหลีกเลี่ยง LLM อยู่
ไม่มีใครอยากสร้างอะไรบนโค้ดที่แม่นยำ 99% หรือเทอะทะ และไม่มีใครอยากใช้เว็บเบราว์เซอร์ที่ AI เขียนโค้ดให้
ถ้าจะสร้างวัสดุก่อสร้างที่ดีจริง ๆ ก็ต้องเขียนโค้ดเองและรู้ว่าตัวเองกำลังทำอะไรอยู่
มีตัวอย่างที่ไหนบ้างที่เข้าใกล้การค่อย ๆ เลิกใช้การเขียนโค้ดในพื้นที่แกนหลักแบบนั้น?
เพียงแต่จะต้องใช้เวลามากกับการทำความเข้าใจและขัดเกลา abstraction
ปัญหาคือการทำความเข้าใจเชิงแนวคิดต้องอาศัยสภาพจิตใจเฉพาะแบบหนึ่ง
ก่อนยุค LLM งานคือคิดยาก ๆ 10% และลงมือทำ 90%
การลงมือทำเป็นเหมือนรางวัลอย่างหนึ่ง และความรู้สึกที่ได้ทำให้ไอเดียเป็นรูปธรรมในภาวะ flow นั้นดีมาก
หลังยุค LLM บ่อยครั้งกลับกลายเป็นแค่เดินไปเดินมาแล้วคิด
ตอนนี้ใกล้เคียงกับคิด 40% และวางแผน/รีวิวโค้ด 60%
ตั้งแต่นั้นมาก็ไม่เคยได้สัมผัส ภาวะ flow อีกเลย
การคิดสนุกแต่เหนื่อย ส่วนการรีวิวก็แค่น่ารำคาญ
โดยเฉพาะตอนที่ LLM ตกลงไปในรูปแบบความล้มเหลวแปลก ๆ
เมื่อก่อนพอเห็นโค้ดแย่ ๆ ก็รู้ทันทีว่าคนเขียนคิดอะไรอยู่และทำไมมันถึงไม่ทำงาน
ตอนนี้ code smell น้อยลง แต่มี abstraction ที่เลือกผิดเยอะ จึงต้องระวังมากขึ้นมาก
ทรมานจริง ๆ
บอกว่า “ไม่มีใครอยากสร้างอะไรบนโค้ดที่แม่นยำ 99% หรือเทอะทะ” นี่เพื่อน เคยใช้ Windows ไหม?
ลองถามเพื่อนและครอบครัวรอบตัว ทุกคนเกลียดซอฟต์แวร์ที่ช้าและเทอะทะทั้งนั้น
มันกินเวลาและ productivity ไปมากแค่ไหนก็ไม่รู้
หลัง LLM ปรากฏขึ้น ไม่ได้ดีขึ้นเลย กลับแย่ลงด้วยซ้ำ
ถ้าการหาเลี้ยงชีพในฐานะโปรแกรมเมอร์ต้องไปคว้างานแบบนั้นเท่านั้น การเขียนโปรแกรมก็อาจกลายเป็นอะไรที่คล้าย กีฬา มาก
เหมือนที่คุณเล่นบาสเกตบอลเป็นงานอดิเรกได้ และอาจจริงจังขึ้นในโรงเรียนมัธยมหรือมหาวิทยาลัย แต่ถ้าจะเลี้ยงชีพด้วยบาสเกตบอล ก็ต้องเก่งพอที่จะเข้า NBA ให้ได้
ผมมองว่าเหตุผลที่ยกมานั้นอ่อนมาก
อ่านแล้วรู้สึกหดหู่มากกว่ามีความหวัง และถ้าตรรกะที่เหลืออยู่มีแค่นี้ ก็รู้สึกว่ากำลังเข้าสู่ภาวะสิ้นหวังจริง ๆ
ขยายความอีกหน่อย ถ้าการเขียนโค้ดเป็นศิลปะ มันก็เป็นศิลปะที่แย่ที่สุด
มันใกล้เคียงกับ Lego มากกว่า และใกล้กับความพึงพอใจที่ได้ประกอบอะไรที่มีความหมายจนเสร็จ
บางทีประเด็นของผู้เขียนก็อาจเป็นแบบนั้น
คือในฐานะงานอดิเรกล้วน ๆ มันยังคงมีคุณค่าอยู่
ข้ออ้างที่ว่า “การเขียนโค้ดช่วยเรื่องคณิตศาสตร์” ก็อ่อนพอ ๆ กัน
มันช่วยพีชคณิตแน่นอน แต่โดยรวมแล้ว ผมคิดว่าคณิตศาสตร์แบบการเขียนโค้ดมักช่วยคณิตศาสตร์แบบการเขียนโค้ดมากกว่า
มันเป็นคณิตศาสตร์ชนิดแปลก ๆ ที่มีลูป กฎ และเงื่อนไข และถ้าซอฟต์แวร์ไม่ได้เป็นกระแสหลักขนาดนี้ตั้งแต่แรก มันก็คงไม่ได้กลายเป็นกระแสหลัก
พอลอกเปลือกออก ตรรกะนั้นฟังดูวนเป็นวงมากกว่าจะเป็นข้อโต้แย้งที่มีเนื้อแท้
การเรียนเขียนโค้ดคือการเข้าใจปัญหา แบ่งมันออกเป็นชิ้นเล็ก ๆ ที่จัดการได้ แล้วประกอบกลับเข้าด้วยกัน
รวมถึงการดีบักและทำซ้ำเพื่อมุ่งไปสู่ตัวชี้วัดที่ดีกว่า
สิ่งเหล่านี้เป็นทักษะและกรอบความคิดที่มีคุณค่าอย่างมหาศาล และสามารถถ่ายโอนไปยัง พื้นที่การแก้ปัญหา อื่น ๆ ได้
ก่อนมี LLM ก็เป็นที่รู้กันดีอยู่แล้วว่า หากไม่ได้ลองเขียนโปรแกรมด้วยตัวเอง ก็พูดไม่ได้ว่าเข้าใจจริง ๆ
เรื่องนี้ไม่มีทางลัด
สิ่งที่ดีที่สุดที่ทำได้คือให้โมเดลหาคำตอบแทน
ก็ไม่รู้วิธีออกแบบ API ที่ดี หรือวิธีแบ่งระบบออกเป็นโมดูล
ปัญหาคือผู้จัดการจำนวนมากแยกความแตกต่างระหว่างโปรแกรมเมอร์ที่ดีกับ vibe coder ไม่ค่อยออก
vibe coder เปิด PR เยอะ
บางทีตัวผู้จัดการเองก็อาจเปิด PR ที่เขียนด้วย vibe coding ได้ด้วย
พวกเขาไม่ชอบแนวคิดที่ว่าโปรแกรมเมอร์อาจรู้อะไรดีกว่าพวกเขา
เพราะมันสอนวิธีคิด
https://youtu.be/BRTOlPdyPYU
ไม่ใช่เหตุผลที่น่าโน้มน้าว
ถ้าเหตุผลที่ดีที่สุดในการโน้มน้าวให้ผู้คนเรียนโค้ดคือมันเหมือนสัญกรณ์ทางคณิตศาสตร์ กล่าวคือเป็นส่วนหนึ่งของคณิตศาสตร์ที่ผู้เริ่มต้นเกลียดที่สุด หรือมันงดงามเหมือนไวโอลิน กล่าวคือไม่มีประโยชน์สำหรับมือใหม่ การเขียนโค้ดก็กำลังอยู่ในวิกฤตร้ายแรง
ผมคิดว่าเหตุผลที่ดีกว่าคือมันช่วยให้คิดแบบคอมพิวเตอร์ได้
แต่ถ้าอยากเรียนสิ่งนั้นจริง ๆ มีวิดีโอเกมมากมายที่ผมจะแนะนำให้ฝึกจนชำนาญก่อนการเขียนโค้ด
สำหรับคนส่วนใหญ่ “จงเรียนโค้ด” คล้ายกับการบอกโปรแกรมเมอร์ว่า “จงเรียนภาษาแอสเซมบลี”
เขียนโค้ดมาประมาณ 30 ปีแล้ว
เพราะมัน ฝึกสมอง
สมองที่สามารถจัดเรียง ตีความ และเข้าใจตรรกะพื้นฐานกับ control flow ได้ง่าย จะต้านทานการโฆษณาชวนเชื่อและอิทธิพลชักจูงได้ดีกว่า
เป็นประโยชน์แบบเดียวกับการอ่านหนังสือมาก ๆ แต่ทำงานกับเส้นทางความคิดคนละแบบ
ได้สัมผัสโลกทัศน์มากขึ้น คิดเชิงวิพากษ์ต่อแต่ละโลกทัศน์มากขึ้น และความคิดเชิงวิพากษ์โดยรวมก็เพิ่มขึ้น
ถ้าเป็นวิชาในมหาวิทยาลัยก็อาจได้เรียนภาษาแอสเซมบลี แต่ถ้านอกเหนือจากนั้นก็ไม่มีแรงจูงใจ
ไม่มีใครอยากอ่านภาษาแอสเซมบลี และตอนนี้ก็ไม่มีใครอยากอ่านโค้ดแล้ว
การแก้ปัญหาเองไม่ได้ยาก
ผมเคยเห็นคนสร้างก้อนคณิตศาสตร์ที่ “ยาก” ขึ้นใหม่ในรูปแบบโค้ดโดยไม่รู้ตัว
เลยเริ่มคิดว่าคณิตศาสตร์อาจถูกทำให้ดูเลวร้ายโดยเจตนาหรือเปล่า
สิ่งที่มีประโยชน์ที่สุดที่ผมได้เรียนรู้เกี่ยวกับคอมพิวเตอร์คือการทำ logic gate ด้วยมือ
ไม่มีอะไรทำให้เข้าใจลึกซึ้งกว่านั้นว่าคอมพิวเตอร์ทำงานอย่างไร
การเขียนโปรแกรมคือขั้นถัดไป
ชั้นทั้งหมดที่อยู่ระหว่างนั้นสามารถเติมเต็มด้วยการอนุมานได้ จึงข้ามไปได้
ไม่จำเป็นต้องเรียนภาษาแอสเซมบลี แต่ก็คุ้มค่าที่จะลองอ่านเพื่อให้พอจับความรู้สึกได้
การเข้าใจชั้นต่าง ๆ ที่ต่อเนื่องจาก logic gate ไปยังภาษาแอสเซมบลี การเขียนโปรแกรม เกม และตอนนี้ไปถึง AI นั้นคล้ายกับการอ่านโมเดล OSI เพื่อทำความเข้าใจ networking
เป็นโครงสร้างที่ abstraction layer ซ้อนทับกันทีละชั้น
เหตุผลที่การเขียนโปรแกรมควรค่าแก่การเรียน คือมันเป็นชั้น abstraction ที่สูงที่สุดซึ่งทุกสิ่งที่อยู่เหนือมันมีร่วมกัน
แม้จะมีภาษาโปรแกรมหลายร้อยภาษา แต่แนวคิดโดยรวมก็แทบเหมือนกัน และถ้าเรียนภาษาหนึ่งจนเข้าใจการเขียนโปรแกรม ก็สามารถนำไปใช้กับภาษาอื่นเกือบทั้งหมดได้
ในทางกลับกัน เกมมีนับหมื่นเกม แบ่งเป็นหลายร้อยประเภท และถ้านับรวมแอปพลิเคชันอื่น ๆ ต้นไม้ของความแปรผันในระดับนั้นก็แตกกิ่งระเบิดออกไป