14 คะแนน โดย GN⁺ 6 시간 전 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • Uncle Bob ผู้โด่งดังจาก "Clean Code" ประกาศว่า ยุคที่ AI เขียนโค้ดได้เร็วกว่านักพัฒนาอย่างท่วมท้น มาถึงแล้ว และเรียกร้องให้เกิดการเปลี่ยนบทบาทของนักพัฒนา
  • งานที่เคยใช้เวลาหนึ่งวัน ตอนนี้ AI สามารถ ทำเสร็จได้ใน 5 นาที ดังนั้นยุคที่นักพัฒนาเขียนโค้ดด้วยตัวเองจึงสิ้นสุดลงแล้ว
  • แต่สิ่งนั้นกลับมอบพลังมหาศาลให้แก่นักพัฒนา ทำให้สามารถทำสิ่งที่เมื่อก่อนแม้แต่จะฝันก็ยังทำไม่ได้
  • แม้ test coverage จะเป็นเรื่องน่าปวดหัว แต่นักพัฒนาสามารถสั่งให้ AI ทำให้มี test coverage ครบถ้วน และใช้ mutation tester เพื่อตรวจสอบประสิทธิผลที่แท้จริงของการทดสอบได้
  • เมื่อผสานกับเครื่องมือวิเคราะห์ cyclomatic complexity ก็สามารถสั่งให้ AI ยกระดับคุณภาพโค้ดได้สูงกว่าที่เคยมาก

สคริปต์จากวิดีโอที่แนบมา

มองความจริงกันเถอะ AI เขียนโค้ดได้เร็วกว่าคุณหลายเท่า งานที่คุณต้องใช้เวลาหนึ่งวัน AI ใช้แค่ 5 นาที ก็เสร็จแล้ว จบแล้ว ยุคที่คุณเขียนโค้ดด้วยตัวเองได้จบลงแล้ว ผมรู้ ยอมรับมันเถอะ

แต่รู้ไหมว่า นั่นกลับมอบ พลังมหาศาล ให้กับคุณ เพราะตอนนี้คุณสามารถทำสิ่งที่ก่อนหน้านี้ไม่เคยแม้แต่จะฝันถึงได้

ลองคิดถึง test coverage ดูสิ ผมรู้ว่ามันทรมานแค่ไหน คุณต้องเขียนเทสต์น่ารำคาญพวกนั้นทั้งหมด แต่ถึงจะมีเทสต์ ก็ไม่ได้แปลว่าโค้ดทำงานถูกต้องอยู่ดี คุณเคยรัน code coverage แล้วแอบยิ้มพร้อมพูดว่า "ก็ใช่แหละ แต่นี่ไม่ได้แปลว่าโค้ดมันทำงานนะ… แค่ถูกเรียกให้รันเท่านั้นเอง"

ตอนนี้แก้เรื่องนั้นได้แล้ว เพราะเรามี กำลัง (horsepower) คุณสั่งให้ AI ครอบคลุมโค้ด จากนั้นก็รัน mutation tester ใช่ มันเป็นเครื่องมือ และจะให้ AI สร้างเครื่องมือนั้นให้ก็ได้ 5 นาทีก็ทำเสร็จ แล้วก็ให้ AI รันเครื่องมือนั้น เครื่องมือจะเปลี่ยนแปลง source code แล้วรันเทสต์ทั้งหมด ถ้าเทสต์ไม่ล้มเหลวล่ะ? ก็เขียนเทสต์ที่ทำให้มันล้มเหลวเสีย แบบนั้นคุณก็จะได้ test coverage ที่แท้จริง

ผมสาบานเลย คุณจะได้ test coverage ที่แท้จริง

และรู้ไหมว่ายังทำอะไรได้อีก คุณสามารถ วิเคราะห์คุณภาพ ของโค้ดได้ คุณเขียนเครื่องมือที่ดู cyclomatic complexity ได้ ที่จริงก็มีเครื่องมือดี ๆ อยู่แล้ว เป็นเครื่องมืออายุ 20 ปี ชื่อว่า CRAP ชื่อนี้ดีนะ ผมไม่รู้ว่ามันย่อมาจากอะไร และก็ไม่อยากรู้ด้วย มันคือการรวมกันของ test coverage กับ cyclomatic complexity คุณสามารถสั่งให้ AI ลดคะแนน CRAP ให้ต่ำกว่า 5 หรือต่ำกว่า 4 ได้ แล้ว AI ก็จะแยกฟังก์ชันใหญ่ ๆ ออกเป็นส่วนย่อย และทำให้ทั้งหมดถูกครอบคลุมด้วยเทสต์

ลองคิดดูสิว่าคุณมีพลังแค่ไหน คุณสามารถยกระดับคุณภาพโค้ดไปสู่ระดับที่ไม่เคยเห็นมาก่อน

ผมรู้ ผมนี่แหละลุง Clean Code แก่ ๆ คนนั้น แต่จะพูดกันตรง ๆ ถ้าคุณเร่งให้ AI ทำงาน คุณก็จะทำให้โค้ด สะอาดขึ้นได้มาก มากจริง ๆ

2 ความคิดเห็น

 
GN⁺ 6 시간 전
ความเห็นจาก Reddit
  • ฟังดูเหมือน Mark Hamill ตอนใช้เสียงตัวร้ายประจำเลย

    • รอบนี้เกือบไปทาง Joker แล้ว ปกติเขาพูดเหมือนตัวการ์ตูนอยู่แล้วเหรอ?
    • เหมือนเสียงผู้จัดการบริษัทประกันที่ดูแลพ่อใน The Incredibles
    • ให้ความรู้สึกเหมือนนักแสดงตลก Lewis Black มากกว่า นึกว่าจะระเบิดเป็นบทบ่นยาว ๆ ปนความเดือดดาล แต่สุดท้ายก็ไม่ปะทุ
    • ผมนึกถึงฉากสอบสวน Neo ใน Matrix มากกว่า ประมาณว่า “Hello Mr Anderson”
  • นี่มันเหมือนนักพัฒนาที่ผ่านมาทุกสมรภูมิจริง ๆ

    • ใช่ ตอนนี้คงไม่ต้องกลับไปเขียนโค้ดแบบ if (f == -1) { printf("open failed\n"); exit(1); } อีกแล้ว
      เดี๋ยว AI ก็เขียนให้เอง พร้อมแนบ error type และข้อความแยกต่างหากพร้อมพารามิเตอร์ที่มีความหมายสำหรับทุกสาเหตุที่เป็นไปได้ของความล้มเหลว AI ไม่ขี้เกียจเหมือนผม เลยทำให้ผมไปโฟกัสกับ logic การจัดการไฟล์ได้
  • ดูเหมือนว่าเรากำลังเข้าสู่ยุคที่โค้ดส่วนใหญ่เป็น boilerplate code สิ่งที่ต้องมีคือความสามารถในการสื่อสาร requirement ให้ดี และวิธีตรวจสอบความปลอดภัย (OWASP) กับประสิทธิภาพของโค้ดที่ถูกสร้างขึ้นอย่างต่อเนื่อง

    • จริง ๆ แล้วโค้ดส่วนใหญ่ก็เป็น boilerplate อยู่แล้วไม่ใช่เหรอ? เขียนอัลกอริทึมเท่ ๆ ได้ก็ดี แต่สุดท้ายก็ต้องห่อเป็นโปรดักต์ แล้วต่อ CRUD, สิทธิ์, UI, รองรับหลายแพลตฟอร์ม, การชำระเงิน ฯลฯ เข้าไป
    • พูดเหมือนว่า large language model เป็น transpiler ที่แปลง DSL ระดับสูงให้เป็นโค้ดจริงได้อย่างเสถียร แต่จริง ๆ ไม่ใช่เลย
      มันไม่เป็นเชิงกำหนดอย่างมาก และแม้แต่โมเดลใหม่ ๆ ก็ยังแกว่งจากระดับ “โอเค ใช้ได้” ไปจนถึง “แทบใช้ไม่ได้” ภายในวันเดียวกันบ่อยมาก
      ภาษาธรรมชาติคลุมเครือและกำกวมมาโดยตลอด ตอนนี้ก็ยังเป็น และต่อไปก็น่าจะยังเป็นอยู่ ปัญหานี้เลยอาจไม่มีทางแก้ได้ นั่นแหละว่าทำไมเราถึงใช้ สูตรคณิตศาสตร์ แทนที่จะบอกว่า “อืม เอา X ไปบวก Y แล้วพอเข้ากับ Z ก็คิดดี ๆ นะ”
    • เรายังห่างไกลมากจากจุดที่พูดได้ว่า “แค่สื่อสารสิ่งที่ต้องการได้อย่างมีประสิทธิภาพก็พอ”
      ตอนนี้ผมยังพยายามหาวิธีจัดการสิทธิ์กับ Claude ให้มีประสิทธิภาพอยู่เลย และวิธีที่มันใช้ทำ action/permission change ใหม่ก็เป็นตัวอย่างสมบูรณ์แบบของโค้ดแบบ “ดูเหมือนพอทำงานได้ แต่เดี๋ยวสักวันก็พัง”
      Claude เขียนโค้ดเก่ง แต่ไม่ได้เขียนโค้ดที่ดีเสมอไป
      สิ่งที่ต้องเข้าใจเกี่ยวกับ AI คือในแง่ของ “การคิด” มันไม่ได้ดีกว่ามนุษย์ แค่มันเร็วกว่า มันจะทำแบบที่คนส่วนใหญ่คงทำเมื่อถูกสั่ง แต่ในงานโค้ด หลายครั้งนั่นไม่ใช่วิธีที่ดีนัก
      เมื่อก่อนคุณก็จ้างนักพัฒนาหลายคนได้ บอกสิ่งที่ต้องการ แล้วก็ได้รับผลลัพธ์ที่เต็มไปด้วยบั๊กกลับมาอยู่ดี และการแก้ไขใหม่หนึ่งอย่างก็ทำให้พังอีกสามจุดเป็นเรื่องปกติ Claude ก็ทำแบบเดียวกันถ้าปล่อยมันไว้เฉย ๆ ผมเห็นมากับตาแล้ว และคำตอบก็คือต้องเข้าไปอ่านโค้ดที่มันเขียน แล้วสั่งให้ refactor ให้พังน้อยลงและแข็งแรงขึ้น
      ตราบใดที่ยังใช้ Claude เขียนโค้ด คุณก็ยังต้องมีความสามารถในการตัดสินว่าโค้ดนั้นโอเคไหม เหมือนกับให้มันเขียนเรซูเม่หรือเอกสารบัญชีแทนคุณ ยังไงก็ต้องตรวจผลงานอยู่ดี
      คุณอาจจะไม่เขียนโค้ดแบบเดิมอีกต่อไป แต่ความสามารถในการอ่านสิ่งที่ถูกสร้างขึ้นและทบทวนมันจากประสบการณ์ก็ยังจำเป็นอยู่
      ปัญหาคือทุกคนคิดว่า “เพราะฉันพูดอังกฤษได้ ฉันก็ให้ Claude สร้างโปรแกรมได้” แต่การพูดอังกฤษได้ไม่ได้แปลว่าคุณจะสั่งให้ Claude เขียนวิทยานิพนธ์ปริญญาเอกเพื่อหักล้าง Hawking radiation ได้ เพราะคุณไม่มีทางตัดสินได้เลยว่าผลลัพธ์ถูกต้องหรือไม่
    • มันยังมีอีกหลายขั้นอยู่ระหว่างทาง
    • เหมือนเราเพิ่งผ่านยุคที่ assembly ส่วนใหญ่เป็น boilerplate มาไม่นาน
  • ตอน Microsoft นำ scaffolding เข้ามาใช้งาน จำนวนโปรแกรมเมอร์ที่มีงานทำก็ยังมากกว่าก่อนหน้านั้น และตอนที่ภาษาอย่าง Basic ทำให้คนพิมพ์คำสั่งที่มนุษย์อ่านออกแทน assembler ก็ยังมีโปรแกรมเมอร์มากกว่ายุคก่อนหน้าที่ต้องเจาะรูโค้ดลงบัตร
    คอมพิวเตอร์ถูกโปรแกรมด้วยชุดคำสั่งที่มีข้อจำกัดน้อยลงและอ่านเขียนง่ายขึ้นเรื่อย ๆ มาโดยตลอด
    ผมเคารพ Bob Martin มาก แต่รอบนี้ผมว่าเขาผิด มนุษย์ก็ยังจะเขียนคำสั่งให้คอมพิวเตอร์อยู่ดี เพียงแต่จะไม่ใช่ชุดคำสั่งเฉพาะที่จำกัดอีกต่อไป แต่จะเป็นภาษาที่มีข้อจำกัดน้อยกว่ามากและมนุษย์อ่านง่ายกว่ามาก
    ไม่มีอะไรจบลงเลย มันเพิ่งเริ่มต้นต่างหาก ตอนนี้การเขียนโปรแกรมเพิ่งออกภาษาใหม่มา และชื่อของมันคือ English

    • สิ่งที่ทุกคนลืมในประเด็นนี้คือ เป้าหมายไม่ใช่การโค้ดสิ่งเดิม ๆ ที่เราทำอยู่เมื่อวันก่อนหน้าที่ vibe coding จะถูกคิดค้นขึ้นมา
      ตอนนี้เราก็สร้างซอฟต์แวร์ในปริมาณเป็นประวัติการณ์อยู่แล้ว และมันจะยิ่งเร็วขึ้นอีก เราจะเขียน โค้ดมากขึ้นกว่าเดิม และถึงจะเร็วขึ้นมหาศาล สุดท้ายก็จะมีคนทำงานกับซอฟต์แวร์ไม่ทางใดก็ทางหนึ่งมากขึ้นอยู่ดี เพราะต้นทุนผลผลิตถูกลงมาก นี่ใกล้เคียงกับ Jevons paradox
      การคิดว่า “ครั้งนี้มันต่างออกไป” เป็นความหยิ่งยโส และแม้แต่คนฉลาดก็ยังจินตนาการได้ยากว่าการเติบโตแบบเอ็กซ์โปเนนเชียลหลายมิติหมายถึงอะไร ไม่ใช่มีแค่ large language model ที่กำลังดีขึ้น
      เพราะงั้นผมว่าพูดถูกแล้ว
    • งั้นก็ลองอธิบายคำพูดด้วยตรรกะเดียวกันสิ
    • เขาถึงขั้นบอกว่าควรรีวิวแค่เทสต์ ไม่ต้องรีวิวโค้ดแล้ว ซึ่งผมว่าแทบจะเป็นความเพ้อฝัน ดูเหมือนพูดจากมุมคนที่ทำแต่โปรเจกต์งานอดิเรกที่ไม่มีวันได้ deploy ขึ้น production จริง
    • Uncle Bob เคยทวีตเกี่ยวกับสิ่งที่เขากำลังพูดตอนนี้ด้วย
  • นี่คือจุดพีกของฟองสบู่แล้วใช่ไหม? ขอบันทึกไว้ตรงนี้เลย ☎️

  • วิธีที่เขาพูดถึงนั้นต้องอาศัย ตัวชี้วัดคุณภาพซอฟต์แวร์, การทดสอบระดับมืออาชีพ, และความเข้าใจเรื่องคุณภาพโค้ดที่สั่งสมมาหลายปี
    ตอนนี้ยังไม่มีเครื่องมือแบบนั้นมากพอ อย่างน้อยก็ยังไม่ถูกนำไปใช้กันอย่างแพร่หลาย และผมก็ไม่แน่ใจด้วยว่าอุตสาหกรรมจะยอมรับมันไหม
    แนวปฏิบัติ CI/CD ก็ไม่ได้ติดตั้งใช้งานยากขนาดนั้น แต่หลายบริษัทก็ยังไม่รับมาใช้ทั้งหมด และเลือกจ้างคนเพิ่มแล้วทำงานแบบไม่มีประสิทธิภาพต่อไป ถ้า AI ไม่จัดการเรื่องพวกนั้นทั้งหมดเป็นค่าเริ่มต้น ก็คงจะยังเป็นแบบนั้นต่อไป เครื่องมืออย่าง Claude Code, Cursor, Codes ในตอนนี้ยังไม่พอ

    • นั่นผมเป็นคนสร้างเองเลยนะ
    • ทำไมถึงคิดว่าเขาไม่ได้พูดเชิงประชดหรือเสียดสีล่ะ? เครื่องมือทั้งหลายยังห่างไกลมากกว่าจะมีประโยชน์ได้ตามแบบที่อธิบายไว้
  • เหมือน Matrix เวอร์ชันที่มีคนนี้เป็น Agent

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

  • ต่อไปก็คง vibe coding กับสมองมนุษย์ได้เลยสินะ

 
nodelay 5 시간 전

ดูเหมือนว่าความคิดเห็นใน reddit จะค่อนข้างไปในทางลบหรือประชดประชันกันเยอะนะครับ
แต่ในสถานการณ์ที่ต้องบอกว่าด้วย AI ทำให้เราเดินหน้าจัดการเรื่องที่ผัดวันประกันพรุ่งกันมาตลอดอย่าง test coverage, E2E Test ฯลฯ ได้อย่างจริงจัง กลับยิ่งดูเหมือนเป็นการมองโลกแบบประชดไปหน่อยครับ