3 คะแนน โดย GN⁺ 8 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • แม้จะอยู่ในยุคของ 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 ความคิดเห็น

 
GN⁺ 8 시간 전
ความคิดเห็นบน Hacker News
  • แม้แต่ในหมู่คนที่เขียนโค้ดได้มาตั้งแต่ก่อนยุค LLM ทักษะการเขียนโค้ดก็กำลังถดถอยไปแล้ว และคงจะเป็นแบบนั้นต่อไปอีก 10–20 ปี
    การเรียนเขียนโค้ดในช่วงเวลาเดียวกันก็อาจไม่ได้ให้ผลตอบแทนมากนัก
    ท้ายที่สุด โค้ดที่จะใช้ฝึก LLM ในอนาคตก็คงมีแต่โค้ดที่ LLM สร้างขึ้น และคุณภาพของ codebase ที่ใช้งานจริงอาจลดลงจนถึงระดับที่มนุษย์ก็เข้าใจได้ยาก และ LLM ก็ยังดูแลรักษาได้ลำบาก จนรอยร้าวเริ่มปรากฏ
    เมื่อถึงตอนนั้น การเขียนโค้ดจะกลับมาเป็นทักษะที่มีค่าอีกครั้ง แต่จากมุมมองของการวางแผนอาชีพ เวลานั้นไม่แน่นอน และตลาดอาจยังไร้เหตุผลอยู่นานกว่าที่คนคนหนึ่งจะทนไหว

    • คล้ายกับ Profession ของ Isaac Asimov
      เรายังต้องมีคนที่เขียนโค้ดเองและฟื้นฟูความเป็นช่างฝีมือกลับมา
      ถ้าทุกคนพึ่งพาโค้ดที่ถูกสร้างขึ้น ก็จะทำได้แค่ทำซ้ำสิ่งที่รู้กันอยู่แล้ว และมีเพียงคนที่เรียนรู้เส้นทางยาก ๆ ผ่านการศึกษาอย่างแท้จริงเท่านั้นที่จะมีความคิดสร้างสรรค์และสติปัญญาพอจะสร้างความรู้ใหม่และทำเทปการศึกษาใหม่ ๆ ได้
    • เป็นมุมมองที่ค่อนข้างมองโลกในแง่ดี
      ข้อ 1 และ 2 ที่ codebase ใช้งานจริงจะกลายเป็นสิ่งที่มนุษย์เข้าใจไม่ได้ และ LLM ก็รักษาต่อได้ยาก น่าจะเกิดขึ้น แต่ข้อ 3 ที่หลังจากนั้นการเขียนโค้ดจะกลับมามีคุณค่าอีกครั้ง คิดว่าไม่น่าจะใช่
      โดยเฉพาะฝ่ายบริหารจะลดความคาดหวังลง หรือถูกบังคับให้ทำเช่นนั้น
      ลองคิดดูว่าบ่อยแค่ไหนที่ “เวอร์ชันใหม่และปรับปรุงแล้ว” ตัดฟีเจอร์สำคัญที่เคยใช้กันอยู่ออกไปโดยไม่มีอะไรทดแทนที่เหมาะสม
      เมื่อ codebase กลายเป็นสิ่งที่ดูแลรักษาไม่ได้ ก็น่าจะสร้างกองขยะใหม่ขึ้นมาอีกกอง แล้วเรียกการเปลี่ยนแปลงสุ่ม ๆ ตรงนั้นตรงนี้ว่าการปรับปรุง
    • ผมมี แล็ปท็อป Fujitsu รุ่นสุดท้าย ๆ ที่ยังควรค่าแก่การพูดถึง และเป็นแฟนตัวยงของมัน
      ราว 5 ปีก่อน ตอนที่ Fujitsu พยายามกลับมาผลิตแล็ปท็อปอีกครั้ง วิธีที่ใช้ได้จริงคือการรวบรวมแรงงานชาวญี่ปุ่นที่เกษียณแล้วกลับมา
      ดูเหมือนคนรุ่นใหม่จะไม่มีทักษะ หรือไม่ก็ไม่ได้อยากทำเป็นพิเศษ และหลังจากผลิตไปไม่กี่รอบก็เหมือนจะจบลง
      Panasonic ยังทำแล็ปท็อปสำหรับองค์กรอยู่ แต่ราคาแพงมาก และเรื่องนี้เกี่ยวข้องกับหัวข้อนี้โดยตรง
    • ถ้าจะเป็นโปรแกรมเมอร์ที่มีประสิทธิภาพด้วย Claude ก็ยังต้อง เข้าใจว่าตัวเองกำลังทำอะไรอยู่
      การเรียนเขียนโค้ดยังจำเป็น และคุณต้องรู้ว่าอะไรเป็นไปได้และอะไรทำได้ง่าย เพื่อจะได้รู้ว่าขอให้มันทำได้แค่ไหน
      สิ่งที่สำคัญน้อยลงคือการคอยลับคมทักษะให้เฉียบอยู่ตลอด
      ถ้าเขียนโค้ดน้อยลงสักพัก ข้อผิดพลาดแบบ 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 ทำให้ผมขี้เกียจทางความคิด และงานที่สร้างด้วยมันให้ความรู้สึกเติมเต็มน้อยลง
    ผมอยากสร้าง และการอยากสร้างนั้นเป็นความเป็นมนุษย์

    • สิ่งที่มนุษย์รู้สึก ไม่ว่าจะอยากสร้างหรือไม่อยากสร้าง ล้วนเป็นความเป็นมนุษย์ทั้งนั้น
      บางคนชอบวิธีสร้างแบบหนึ่ง ส่วนคนอื่นชอบอีกแบบ ก็ไม่เป็นไร
      สุดท้ายแล้วดูเหมือนหลายคนจะลืมไปว่าการเขียนโปรแกรมเป็น กิจกรรมเชิงสร้างสรรค์ อย่างมาก
      ถ้าจะพูดให้ชวนถกเถียงเล็กน้อย ผมมองว่าการสร้างโปรแกรม ไม่ว่าจะดีหรือแย่ ก็ใกล้เคียงกับการวาดภาพมากกว่าการสร้างสะพาน
    • ช่วงนี้กำลังอ่าน Seneca และมีประโยคหนึ่งในจดหมายว่า
      “ความจดจ่อที่มุ่งอยู่กับงานนั้นเองเป็นความเพลิดเพลินอย่างลึกซึ้ง ความสุขที่ได้จากผลงานสำเร็จหลังงานเสร็จไม่เหมือนกับสิ่งนั้น ศิลปินเพลิดเพลินกับผลลัพธ์ แต่ระหว่างวาดภาพ เขาเพลิดเพลินกับศิลปะนั้นเอง”
      ปัญหาของ LLM อยู่ตรงนี้พอดี
      มันพรากช่วงเวลาที่ผมได้เพลิดเพลินกับศิลปะของการเขียนโปรแกรมเองไป
    • เคยทำการรวบรวมข้อมูลการแข่งขัน Dota2 ด้วย stratz / opendota มามาก
      ข้อมูลมีเยอะมากจนสนุกจริง ๆ และช่วยให้เป็นโปรแกรมเมอร์ที่ดีขึ้นอย่างแน่นอน
  • โดยส่วนตัว คนรู้จักที่ก่อนยุค 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 ให้ได้
    • ประเด็นถกเถียงเรื่อง Bun ล่าสุดไม่ได้ชี้ให้เห็นอีกเรื่องหนึ่งหรือ?
  • ผมมองว่าเหตุผลที่ยกมานั้นอ่อนมาก
    อ่านแล้วรู้สึกหดหู่มากกว่ามีความหวัง และถ้าตรรกะที่เหลืออยู่มีแค่นี้ ก็รู้สึกว่ากำลังเข้าสู่ภาวะสิ้นหวังจริง ๆ
    ขยายความอีกหน่อย ถ้าการเขียนโค้ดเป็นศิลปะ มันก็เป็นศิลปะที่แย่ที่สุด
    มันใกล้เคียงกับ Lego มากกว่า และใกล้กับความพึงพอใจที่ได้ประกอบอะไรที่มีความหมายจนเสร็จ
    บางทีประเด็นของผู้เขียนก็อาจเป็นแบบนั้น
    คือในฐานะงานอดิเรกล้วน ๆ มันยังคงมีคุณค่าอยู่
    ข้ออ้างที่ว่า “การเขียนโค้ดช่วยเรื่องคณิตศาสตร์” ก็อ่อนพอ ๆ กัน
    มันช่วยพีชคณิตแน่นอน แต่โดยรวมแล้ว ผมคิดว่าคณิตศาสตร์แบบการเขียนโค้ดมักช่วยคณิตศาสตร์แบบการเขียนโค้ดมากกว่า
    มันเป็นคณิตศาสตร์ชนิดแปลก ๆ ที่มีลูป กฎ และเงื่อนไข และถ้าซอฟต์แวร์ไม่ได้เป็นกระแสหลักขนาดนี้ตั้งแต่แรก มันก็คงไม่ได้กลายเป็นกระแสหลัก
    พอลอกเปลือกออก ตรรกะนั้นฟังดูวนเป็นวงมากกว่าจะเป็นข้อโต้แย้งที่มีเนื้อแท้

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

    • ใช่
      ก่อนมี LLM ก็เป็นที่รู้กันดีอยู่แล้วว่า หากไม่ได้ลองเขียนโปรแกรมด้วยตัวเอง ก็พูดไม่ได้ว่าเข้าใจจริง ๆ
      เรื่องนี้ไม่มีทางลัด
    • ถ้าเขียนโค้ดไม่เป็นและทำได้แค่เขียนพรอมป์ ก็ไม่มีวิธีแยกแยะวิธีแก้ที่ดีกับวิธีแก้ที่แย่
      สิ่งที่ดีที่สุดที่ทำได้คือให้โมเดลหาคำตอบแทน
      ก็ไม่รู้วิธีออกแบบ API ที่ดี หรือวิธีแบ่งระบบออกเป็นโมดูล
      ปัญหาคือผู้จัดการจำนวนมากแยกความแตกต่างระหว่างโปรแกรมเมอร์ที่ดีกับ vibe coder ไม่ค่อยออก
      vibe coder เปิด PR เยอะ
      บางทีตัวผู้จัดการเองก็อาจเปิด PR ที่เขียนด้วย vibe coding ได้ด้วย
      พวกเขาไม่ชอบแนวคิดที่ว่าโปรแกรมเมอร์อาจรู้อะไรดีกว่าพวกเขา
    • Steve Jobs เคยพูดว่าทุกคนควรเรียนเขียนโปรแกรม
      เพราะมันสอนวิธีคิด
      https://youtu.be/BRTOlPdyPYU
  • ไม่ใช่เหตุผลที่น่าโน้มน้าว
    ถ้าเหตุผลที่ดีที่สุดในการโน้มน้าวให้ผู้คนเรียนโค้ดคือมันเหมือนสัญกรณ์ทางคณิตศาสตร์ กล่าวคือเป็นส่วนหนึ่งของคณิตศาสตร์ที่ผู้เริ่มต้นเกลียดที่สุด หรือมันงดงามเหมือนไวโอลิน กล่าวคือไม่มีประโยชน์สำหรับมือใหม่ การเขียนโค้ดก็กำลังอยู่ในวิกฤตร้ายแรง
    ผมคิดว่าเหตุผลที่ดีกว่าคือมันช่วยให้คิดแบบคอมพิวเตอร์ได้
    แต่ถ้าอยากเรียนสิ่งนั้นจริง ๆ มีวิดีโอเกมมากมายที่ผมจะแนะนำให้ฝึกจนชำนาญก่อนการเขียนโค้ด
    สำหรับคนส่วนใหญ่ “จงเรียนโค้ด” คล้ายกับการบอกโปรแกรมเมอร์ว่า “จงเรียนภาษาแอสเซมบลี”
    เขียนโค้ดมาประมาณ 30 ปีแล้ว

    • เหตุผลที่น่าโน้มน้าวที่สุดที่ควรเรียนโค้ดนั้นเหมือนกับเหตุผลที่ควรอ่านหนังสือมาก ๆ ทุกประการ
      เพราะมัน ฝึกสมอง
      สมองที่สามารถจัดเรียง ตีความ และเข้าใจตรรกะพื้นฐานกับ control flow ได้ง่าย จะต้านทานการโฆษณาชวนเชื่อและอิทธิพลชักจูงได้ดีกว่า
      เป็นประโยชน์แบบเดียวกับการอ่านหนังสือมาก ๆ แต่ทำงานกับเส้นทางความคิดคนละแบบ
      ได้สัมผัสโลกทัศน์มากขึ้น คิดเชิงวิพากษ์ต่อแต่ละโลกทัศน์มากขึ้น และความคิดเชิงวิพากษ์โดยรวมก็เพิ่มขึ้น
    • ชอบสำนวนที่ว่า “สำหรับคนส่วนใหญ่ การเรียนโค้ดก็เหมือนการบอกให้โปรแกรมเมอร์เรียนภาษาแอสเซมบลี” มาก
      ถ้าเป็นวิชาในมหาวิทยาลัยก็อาจได้เรียนภาษาแอสเซมบลี แต่ถ้านอกเหนือจากนั้นก็ไม่มีแรงจูงใจ
      ไม่มีใครอยากอ่านภาษาแอสเซมบลี และตอนนี้ก็ไม่มีใครอยากอ่านโค้ดแล้ว
    • ผมเคยบอกเพื่อนที่ชอบคณิตศาสตร์ว่าบางครั้งก็สงสัยว่า ถ้าโตมาโดยไม่คิดว่า “ผมไม่เก่งคณิต” จะเป็นอย่างไร และคิดว่าเหตุผลน่าจะเป็นเรื่องนี้
      การแก้ปัญหาเองไม่ได้ยาก
      ผมเคยเห็นคนสร้างก้อนคณิตศาสตร์ที่ “ยาก” ขึ้นใหม่ในรูปแบบโค้ดโดยไม่รู้ตัว
      เลยเริ่มคิดว่าคณิตศาสตร์อาจถูกทำให้ดูเลวร้ายโดยเจตนาหรือเปล่า
    • ผมคิดว่าวิดีโอเกมเป็นนามธรรมเกินไปที่จะเชื่อมโยงกับการคิดแบบคอมพิวเตอร์
      สิ่งที่มีประโยชน์ที่สุดที่ผมได้เรียนรู้เกี่ยวกับคอมพิวเตอร์คือการทำ logic gate ด้วยมือ
      ไม่มีอะไรทำให้เข้าใจลึกซึ้งกว่านั้นว่าคอมพิวเตอร์ทำงานอย่างไร
      การเขียนโปรแกรมคือขั้นถัดไป
      ชั้นทั้งหมดที่อยู่ระหว่างนั้นสามารถเติมเต็มด้วยการอนุมานได้ จึงข้ามไปได้
      ไม่จำเป็นต้องเรียนภาษาแอสเซมบลี แต่ก็คุ้มค่าที่จะลองอ่านเพื่อให้พอจับความรู้สึกได้
      การเข้าใจชั้นต่าง ๆ ที่ต่อเนื่องจาก logic gate ไปยังภาษาแอสเซมบลี การเขียนโปรแกรม เกม และตอนนี้ไปถึง AI นั้นคล้ายกับการอ่านโมเดล OSI เพื่อทำความเข้าใจ networking
      เป็นโครงสร้างที่ abstraction layer ซ้อนทับกันทีละชั้น
      เหตุผลที่การเขียนโปรแกรมควรค่าแก่การเรียน คือมันเป็นชั้น abstraction ที่สูงที่สุดซึ่งทุกสิ่งที่อยู่เหนือมันมีร่วมกัน
      แม้จะมีภาษาโปรแกรมหลายร้อยภาษา แต่แนวคิดโดยรวมก็แทบเหมือนกัน และถ้าเรียนภาษาหนึ่งจนเข้าใจการเขียนโปรแกรม ก็สามารถนำไปใช้กับภาษาอื่นเกือบทั้งหมดได้
      ในทางกลับกัน เกมมีนับหมื่นเกม แบ่งเป็นหลายร้อยประเภท และถ้านับรวมแอปพลิเคชันอื่น ๆ ต้นไม้ของความแปรผันในระดับนั้นก็แตกกิ่งระเบิดออกไป