25 คะแนน โดย GN⁺ 2025-03-28 | 4 ความคิดเห็น | แชร์ทาง WhatsApp
  • เมื่อผู้ช่วยเขียนโค้ดแบบเอเจนต์มีความสามารถมากขึ้น ปฏิกิริยาตอบรับก็มีความหลากหลายมาก โดยบางคนถึงกับอ้างว่า "ภายใน 1 ปี นักพัฒนาจะไม่จำเป็นอีกต่อไป"
  • ขณะที่อีกหลายคนกังวลเกี่ยวกับ คุณภาพของโค้ด ที่ AI สร้างขึ้น และ วิธีเตรียมนักพัฒนารุ่นจูเนียร์ให้พร้อมกับสภาพแวดล้อมที่กำลังเปลี่ยนไปนี้
  • ในช่วงหลายเดือนที่ผ่านมา ผู้เขียนได้ใช้ผู้ช่วยเขียนโค้ดแบบเอเจนต์อย่าง Cursor, Windsurf, Cline และพบว่ามันมีประสิทธิภาพมากในการแก้ไข codebase เดิม
  • ผู้เขียนประทับใจมากกับการผสานเข้ากับ IDE ซึ่งรวมถึงการรันทดสอบและแก้ข้อผิดพลาดอัตโนมัติ การตรวจจับและแก้ lint/compile error การค้นหาเว็บ และฟีเจอร์ browser preview
  • ประสบการณ์การทำงานร่วมกันระหว่างนักพัฒนากับ AI น่าประทับใจมาก และช่วยให้แก้ปัญหาและพัฒนาฟีเจอร์ได้รวดเร็ว
  • อย่างไรก็ตาม ก็ยังต้องการการแทรกแซง การแก้ไข และการกำหนดทิศทางจากนักพัฒนาอย่างต่อเนื่อง
  • หลายกรณีก็ไม่ได้ไปถึงขั้น commit จริง และ AI ยังไม่ดีพอที่จะเขียนโค้ดสำหรับงานที่ไม่เล็กน้อยได้อย่างอัตโนมัติ
  • ดังนั้น ทักษะและประสบการณ์ของนักพัฒนาจึงยังคงสำคัญ และต้องได้รับการฝึกฝนต่อไปในอนาคต

ช่วงเวลาที่นักพัฒนาต้องเข้าไปแทรกแซงด้วยตนเอง

  • เครื่องมือ AI แสดงให้เห็นถึง จุดอ่อนอย่างสม่ำเสมอ ในบางด้าน และสิ่งนี้ถูกยืนยันซ้ำแล้วซ้ำเล่า
  • บางกรณี บรรเทาได้บางส่วน ด้วยการเพิ่มพรอมป์หรือกฎเฉพาะทาง แต่ ไม่สามารถควบคุมได้อย่างสมบูรณ์
    • LLM มักจะ ไม่ทำตามคำสั่งในพรอมป์อย่างแม่นยำ
    • ยิ่ง session การเขียนโค้ดยาวขึ้น ความสม่ำเสมอของผลลัพธ์ก็ยิ่งลดลง
  • ดังนั้น กรณีตัวอย่างที่จะแนะนำต่อไปนี้จึงเป็น ปัญหาที่สามารถเกิดขึ้นได้มากพอ โดยไม่ขึ้นกับพรอมป์หรือการตั้งค่า
  • ผู้เขียนจัดหมวดหมู่ความผิดพลาดของ AI ออกเป็น 3 กลุ่มตาม ขอบเขตผลกระทบ
    • a. ความเร็วในการพัฒนาลดลงและเวลาไปถึง commit นานขึ้น
      • AI กลับทำให้ช้าลงเสียเอง
      • บางครั้งไม่มีประสิทธิภาพยิ่งกว่าการเขียนโค้ดโดยไม่มีตัวช่วย
    • b. สร้างแรงเสียดทานต่อ workflow การทำงานของทีม
      • เกิดความขัดแย้งหรือปัญหาการทำงานร่วมกันภายในหนึ่ง iteration
    • c. ทำให้ความสามารถในการบำรุงรักษาโค้ดระยะยาวแย่ลง
      • ตอนแรกอาจดูไม่มีปัญหา แต่จะเกิดปัญหาเมื่อมีการเปลี่ยนแปลงหรือขยายระบบในอนาคต
  • ยิ่งขอบเขตผลกระทบกว้างขึ้น วงจร feedback ที่ทีมจะรับรู้และแก้ไขปัญหานั้นก็จะ ยาวขึ้น

ขอบเขตผลกระทบ: เวลาที่ล่าช้าจนกว่าจะ commit

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

    • โค้ดที่ AI สร้างขึ้น ใช้งานไม่ได้ตั้งแต่ต้น
    • นักพัฒนาต้องแก้เอง หรือยุติ session ของ AI แล้ว แก้ปัญหาด้วยมือ
    • นักพัฒนาที่มีประสบการณ์สามารถ ประเมินได้อย่างรวดเร็วว่าผิดตรงไหนและจัดการได้
  • วินิจฉัยปัญหาผิด

    • AI ตัดสินสาเหตุของปัญหาผิด และ พยายามแก้ไปในทิศทางที่ไม่เกี่ยวข้อง
    • จากประสบการณ์ที่ผ่านมา นักพัฒนาสามารถ ดึง AI กลับมาจากเส้นทางที่ผิด ได้
      > ตัวอย่าง: เข้าใจ Docker build error ผิดว่าเป็นปัญหาการตั้งค่าสถาปัตยกรรม จึงไปแก้การตั้งค่า
      > สาเหตุจริงคือการคัดลอก node_modules ที่ build มาจากสถาปัตยกรรมที่ไม่ถูกต้อง
      > เนื่องจากเป็นปัญหาที่เคยเจอบ่อยมาก่อน จึงสังเกตและแก้ให้ถูกได้อย่างรวดเร็ว

ขอบเขตผลกระทบ: workflow การทำงานของทีมภายใน iteration

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

    • AI มีแนวโน้มจะทำฟีเจอร์ทั้งก้อนในคราวเดียวอย่างกว้าง ๆ มากกว่าการค่อย ๆ ทำแบบ incremental
    • ด้วยเหตุนี้ ถ้าการเลือกเทคโนโลยีไม่เหมาะสมหรือเข้าใจ requirement ผิด ก็อาจ สูญเสียงานจำนวนมากโดยเปล่าประโยชน์
      > ตัวอย่าง: ระหว่าง migration frontend stack พยายามแปลง UI component ทั้งหมดในคราวเดียว
      > ที่จริงควรเริ่มแบบค่อยเป็นค่อยไปจาก คอมโพเนนต์เดียวที่เชื่อมกับ backend
  • แก้ปัญหาแบบมุทะลุโดยไม่วิเคราะห์สาเหตุ

    • AI ใช้วิธีแก้เฉพาะข้อผิดพลาดที่เห็นภายนอก โดยไม่วิเคราะห์รากสาเหตุของปัญหา
    • ส่งผลให้สมาชิกทีมคนอื่นที่มารับช่วงต่อ ต้องมานั่งวิเคราะห์ปัญหาใหม่โดยไม่มีบริบท
      > ตัวอย่าง: เมื่อเกิด memory error ระหว่าง Docker build ก็เพิ่มการตั้งค่าหน่วยความจำอย่างเดียวแทนที่จะหาสาเหตุ
  • ทำให้ workflow ของนักพัฒนาซับซ้อนขึ้น

    • วิธี build/run ที่ AI สร้างขึ้นทำให้ประสบการณ์ของนักพัฒนาแย่ลง
    • หาก commit ทันที ก็จะ ส่งผลเสียต่อ workflow ของเพื่อนร่วมทีมคนอื่นด้วย
      > ตัวอย่าง: แยกคำสั่งสำหรับรัน frontend และ backend ออกจากกัน
      > ตัวอย่าง: ไม่มีฟีเจอร์ hot reload
      > ตัวอย่าง: การตั้งค่า build ที่ซับซ้อนทำให้ทั้งนักพัฒนาและ AI สับสน
      > ตัวอย่าง: ไม่สามารถตรวจจับ Docker error ได้ล่วงหน้า และพยายามจัดการข้อผิดพลาดตอนท้ายของการ build
  • Requirement ที่เข้าใจผิดหรือไม่สมบูรณ์

    • หากไม่ได้อธิบาย requirement ของฟีเจอร์ให้ชัดเจน AI อาจ เข้าใจผิดและไปพัฒนาฟีเจอร์ในทิศทางที่ไม่ถูกต้อง
    • การเข้าไปแก้ตั้งแต่ต้นเป็นทางที่ดีที่สุด แต่ทั้ง AI ที่ทำงานอัตโนมัติและนักพัฒนาที่ไม่รอบคอบต่างก็ทำให้ ต้นทุนการแก้ตามมาภายหลังสูงขึ้น
    • การพัฒนาที่ผิดทางเหล่านี้มักถูกค้นพบทีหลังระหว่างดำเนิน story และทำให้เกิด งานแก้ไขจำนวนมากและต้นทุนการสื่อสารเพิ่มขึ้น

ขอบเขตผลกระทบ: ความสามารถในการบำรุงรักษาระยะยาวที่ลดลง

  • นี่คือขอบเขตผลกระทบที่ แฝงตัวและอันตรายที่สุด
    • ในช่วงแรกโค้ดอาจทำงานได้โดยไม่มีปัญหา แต่ภายหลังจะ แก้ไขและขยายต่อได้ยากขึ้น
  • ปัญหาเหล่านี้มัก ถูกค้นพบหลังจากผ่านไปหลายสัปดาห์ถึงหลายเดือน
  • โดยเฉพาะในด้านนี้ ประสบการณ์พัฒนากว่า 20 ปีของผู้เขียนมีบทบาทมากที่สุด
  • โค้ดทดสอบที่ยืดยาวและซ้ำซ้อน

    • AI สร้างเทสต์ได้เก่ง แต่ก็มักเกิดปัญหาต่อไปนี้บ่อยครั้ง:
      • ไม่รวมเข้ากับเทสต์เดิม แต่กลับ สร้าง test function ใหม่
      • เพิ่ม assertion มากเกินไป แม้ในส่วนที่ครอบคลุมอยู่แล้ว
    • จุดที่นักพัฒนามือใหม่อาจเข้าใจผิดคือ: เทสต์มากขึ้น ≠ เทสต์ที่ดีกว่า
    • ยิ่งมีความซ้ำซ้อนมากเท่าไร การบำรุงรักษาก็ยิ่งยาก และเมื่อโค้ดเปลี่ยนก็มีโอกาส ที่เทสต์จะล้มจำนวนมาก
    • แม้จะพยายามบรรเทาด้วยคำสั่งกำหนดเอง แต่ปัญหานี้ก็ยังเกิดขึ้นบ่อย
  • การนำกลับมาใช้ซ้ำได้ต่ำ

    • โค้ดที่ AI เขียนมัก ขาดการทำเป็นโมดูล จึงนำกลับมาใช้ซ้ำได้ยาก
      > ตัวอย่าง: ไม่รู้ว่ามี UI component ที่มีอยู่แล้ว จึงเขียนซ้ำขึ้นมาอีก
      > ตัวอย่าง: ใช้ inline style อย่างหนักแทนการใช้ CSS class
  • โค้ดที่ซับซ้อนหรือยืดยาวเกินจำเป็น

    • AI มักสร้าง โค้ดมากเกินความจำเป็น จนต้องลบส่วนที่ไม่จำเป็นออกด้วยมืออยู่บ่อย ๆ
    • สิ่งนี้เพิ่มต้นทุนการดูแลรักษา และ เพิ่มโอกาสเกิดข้อผิดพลาดเมื่อมีการเปลี่ยนแปลง
      > ตัวอย่าง: เวลาแก้ CSS ต้องคอยลบ style ที่ซ้ำกันจำนวนมากทีละจุด
      > ตัวอย่าง: สร้าง web component ที่ซับซ้อนเกินจำเป็นเพื่อแสดงข้อมูล JSON
      > ตัวอย่าง: ระหว่างการ refactor AI ไม่รับรู้ dependency injection chain ที่มีอยู่เดิม
      > จึงส่งค่าที่ถูก inject อยู่แล้วซ้ำอีกครั้งผ่านพารามิเตอร์อื่น ทำให้ดีไซน์ซับซ้อนขึ้น

      > - ในรูปแบบ value = service_a.get_value(); ServiceB(service_a, value=value)

บทสรุป: AI จะเขียนโค้ดแทนทั้งหมดได้หรือไม่?

  • จากประสบการณ์จนถึงตอนนี้ เป็นไปไม่ได้ในทางปฏิบัติที่ AI จะเขียนโค้ด 90% ของทั้งระบบได้อย่างอัตโนมัติภายใน 1 ปี
  • อย่างไรก็ตาม ในบทบาทของ ผู้ช่วยเขียนโค้ด ก็มีความเป็นไปได้ว่าจะ ช่วยได้ถึง 90% สำหรับบางทีมและบาง codebase
  • ในความเป็นจริง ผู้เขียนกำลังได้รับความช่วยเหลือจาก AI ราว 80% ในโปรเจกต์ความซับซ้อนระดับกลางขนาด 15K LOC

วิธีป้องกันความผิดพลาดของ AI

  • สิ่งที่นักพัฒนารายบุคคลทำได้

    • รีวิวโค้ดที่ AI สร้างอย่างระมัดระวังเสมอ
      • แทบไม่มีกรณีไหนที่ไม่ต้องแก้เลย
    • หาก session ของ AI เริ่มสับสน ให้หยุดทันที
      • ปรับพรอมป์ใหม่ หรือเปลี่ยนไปทำด้วยมือเลยก็ได้ (บางคนเรียกว่า "handmade coding")
    • ระวังโซลูชันที่ "ดูเหมือนดี" และเสร็จอย่างน่าอัศจรรย์ในเวลาอันสั้น
      • อาจมีต้นทุนการบำรุงรักษาระยะยาวซ่อนอยู่
    • ทำ pair programming
      • 4 ตา 2 สมอง ช่วยให้ตัดสินใจได้ดีกว่า
  • กลยุทธ์รับมือในระดับทีมและองค์กร

    • ใช้เครื่องมือติดตามคุณภาพโค้ดที่มีอยู่ให้เต็มที่
      • เช่น Sonarqube, Codescene
      • เมื่อใช้เครื่องมือ AI ควรเฝ้าดู code duplication, code smell ฯลฯ อย่างใกล้ชิดยิ่งขึ้น
    • ตั้งค่า pre-commit hook และ code review ที่ผสานกับ IDE
      • เสริมกลยุทธ์ shift-left เพื่อจับปัญหาตั้งแต่ช่วงต้นของการพัฒนา
    • ฟื้นฟูนิสัยด้านคุณภาพโค้ดที่ดี
      • แชร์กรณีปัญหาที่เกิดจากโค้ด AI ("Go-wrong log") ใน retrospective รายสัปดาห์ของทีม
    • ใช้ custom rule อย่างจริงจัง
      • เครื่องมือ AI ส่วนใหญ่สามารถตั้งค่า ชุดกฎที่ส่งไปพร้อมกับพรอมป์ ได้
      • ทีมสามารถช่วยกันปรับปรุง ruleset เพื่อลดความผิดพลาดของ AI
      • อย่างไรก็ตาม ยิ่ง session ยาวขึ้น โอกาสที่ AI จะละเลยกฎก็ยิ่งเพิ่มขึ้น
    • สร้างวัฒนธรรมทีมที่ตั้งอยู่บนความไว้วางใจและการสื่อสาร
      • การนำ AI มาใช้เป็นการเปลี่ยนแปลงรูปแบบใหม่ และควรตระหนักว่า ทุกคนยังเป็นมือใหม่
      • การกดดันแบบ "มี AI แล้วก็ต้องทำให้เร็วขึ้นสิ" จะ เพิ่มความเสี่ยงด้านคุณภาพ
      • ทีมที่มีความปลอดภัยทางจิตใจจะ แบ่งปันปัญหาและเรียนรู้ร่วมกันได้อย่างกระตือรือร้นกว่า

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

 
bus710 2025-03-29

คนที่ใช้เครื่องมือนั้น ไม่ว่าจะมีความสามารถแค่ไหนก็น่าจะล้วนเป็นนักพัฒนากันอยู่แล้ว.... การโฆษณาในทำนองว่าอนาคตจะไม่ต้องการนักพัฒนาอีกต่อไป ดูเหมือนจะมีส่วนที่แปลก ๆ อยู่เหมือนกันนะ

 
prunusnira 2025-03-28

ต่อจากนี้จะเป็นอย่างไรยังไม่รู้ แต่ตอนนี้ดูเหมือนว่ายังไม่ค่อยเหมาะจะใช้เป็นกระแสหลัก... ช่วงหลังผมลองใช้ Cursor ดู แต่มันยังจับแม้แต่ import path พื้นฐานของไฟล์ได้ไม่ค่อยถูกเลยครับ ถึงอย่างนั้น การที่มันพอจะคาดเดาสิ่งที่ผมอยากสร้างได้ล่วงหน้าระดับหนึ่งก็ถือว่าน่าทึ่งเหมือนกัน

 
daddy 2025-03-28

พอเกิดข้อผิดพลาดเรื่องหน่วยความจำระหว่างการ build Docker ก็เพิ่มการตั้งค่าหน่วยความจำแทนที่จะถามตั้งแต่แรกว่าทำไมถึงใช้หน่วยความจำมากขนาดนั้น
-> ก็นี่แหละ.. เพราะที่ผ่านมาเราเคยทำแบบนี้มาแล้วนับครั้งไม่ถ้วน
-> AI ในตอนนี้ก็คือตัวเราในอดีต

 
GN⁺ 2025-03-28
ความคิดเห็นบน Hacker News
  • ช่วงนี้ใช้ Cursor กับงานพัฒนาส่วนใหญ่ บทความนี้คล้ายกับประสบการณ์ของฉันมาก

    • รู้สึกว่า AI agent เหมือนหยุดอยู่แถวปี 2021 พอติดตั้งแพ็กเกจใหม่ Claude ก็จะย้อนกลับไปใช้แพ็กเกจเก่าหรือวิธีทำแบบที่เคยฮิตเมื่อ 4 ปีก่อน การคอยแก้สิ่งนี้น่าหงุดหงิดมาก การให้คำสั่งที่ชัดเจนช่วยบรรเทาปัญหาได้ แต่ไม่ได้แก้มันจริง ๆ
    • ความคาดเดาไม่ได้ของความผิดพลาดแบบนี้คือสิ่งที่ท้าทายเป็นพิเศษ เมื่อไม่กี่เดือนก่อนฉันใช้ Claude ทำเว็บแอปที่ใช้งานได้จริงแบบ "one-shot" มันฟีเจอร์ครบและซับซ้อนอย่างน่าทึ่ง ถ้าฉันทำเองคงใช้เวลาหลายสัปดาห์หรือหลายสุดสัปดาห์ แต่พอขอให้มันอัปเดต favicon โดยใช้ไฟล์ที่ให้ไป มันกลับวนอยู่กับที่อย่างไร้ประโยชน์เป็นชั่วโมง (สุดท้ายฉันแก้เองในไม่กี่นาที) ไม่กี่วันก่อนฉันลองสร้างเว็บแอปอีกตัวที่ขอบเขตใกล้เคียงกัน หลังจากจัดการกับ agent อยู่ราว 4 ชั่วโมง ก็เกือบพร้อมจะทิ้งโค้ดทั้งหมด
    • แนวทางนี้ทำให้ฉันกล้าพอจะไล่ตามโปรเจกต์ที่ก่อนหน้านี้ไม่เคยลอง เพราะขาดเวลา ความเชี่ยวชาญ หรือแรงจูงใจ การลดแรงเสียดทานเป็นเรื่องน่าตื่นเต้น แต่การสร้างอะไรที่มีความหมายก็ยังยากอยู่ดี การทำ MVP ที่ประณีตยังต้องใช้ความพยายามมากพอสมควร
    • ฉันนึกถึงนิทานกระต่ายกับเต่าอยู่เรื่อย ๆ การเชื่อใจ AI agent นั้นยั่วยวนเพราะช่วงแรกมันดูเหมือนเดินหน้าได้เร็วมาก แต่สุดท้ายก็มักเหลือความรู้สึกว่าถ้าค่อย ๆ ทำอย่างช้าและรอบคอบน่าจะได้ความคืบหน้าที่มั่นคงกว่า เวลาเขียนเองแบบ manual แทบไม่ต้องย้อนกลับหรือทิ้งทั้งแนวทาง แต่แนวทางที่ให้ AI นำอาจทำให้ไปได้เร็วขึ้น 10 เท่า ขณะเดียวกันก็อาจทิ้งงานระหว่างทางไปราว 70%
    • จากประสบการณ์เหล่านี้ จินตนาการของฉันยังไม่ไปถึงขั้นว่าในอีก 1 ปี AI จะเขียนโค้ดได้เอง 90% แต่คิดว่ามันช่วยกับ 90% ของงานเขียนโค้ดได้
    • สภาพแวดล้อมตอนนี้คล้ายวงจร hype ของรถยนต์ไร้คนขับมาก มีทั้งคำสัญญาใหญ่โตและความก้าวหน้าจริง แต่ฉันยังไม่เห็นโลกในอีก 5 ปีข้างหน้าที่ AI จะเขียนซอฟต์แวร์ที่มีประโยชน์ได้เองทั้งหมด
  • ฉันใช้ AI แบบนี้: ใช้มันเป็นตัวช่วยเขียนใน IDE และมันตอบฉันเหมือนเป็ดยางสุดเท่ที่ซับซ้อนมากตัวหนึ่ง

    • ฉันมักคุยซ้ำ ๆ เกี่ยวกับโค้ดบางส่วน โดยปกติจะให้มันไปแบบแทบไม่มีบริบท แล้วค่อยขัดเกลาจนฟังก์ชันทำงานถูกต้อง จากนั้นจึงค่อยนำเสนอให้เข้ากับบริบทที่กว้างขึ้น (หรือไม่ก็ฉันจัดการส่วนนั้นเอง)
    • สิ่งที่ฉันไม่ใช้มันทำ: ไม่ใช้เป็น agent ที่ต้องไปทำเป้าหมายกว้าง ๆ ให้สำเร็จด้วยตัวเอง
    • เหตุผล: ต้องลงทุนทั้งเวลาและแรงมากเกินไปเพื่อให้แน่ใจว่าผลลัพธ์จากระบบ agent สอดคล้องกับสิ่งที่ฉันต้องการทำจริง ๆ ด้วยเหตุผลทั้งหมดที่บทความดีมากชิ้นนี้อธิบายไว้
    • น่าแปลกตรงที่ เมื่อใช้ AI เป็นตัวช่วยเขียนที่เก่งมาก workflow ของฉันกลับเร็วขึ้นมาก เลยกลายเป็นว่า AI ที่เป็น agent น้อยกว่ากลับทำให้ฉันวิจารณ์มากขึ้น และวิจารณ์เวลาที่ต้องลงทุนเพิ่มเพื่อให้เข้ากับความแปลกเฉพาะของ agent AI มากขึ้นด้วย
  • ฉันไม่เข้าใจเลยจริง ๆ

    • ฉันไม่เข้าใจว่าทำไมนักพัฒนาที่มีประสบการณ์ถึงตื่นเต้นกับการผูกตัวเองเข้ากับประสบการณ์ที่แย่และไม่น่าพอใจอย่างเห็นได้ชัดแบบนั้น
    • ฉันชอบเขียนโค้ดและชอบแก้ปัญหา นั่นแหละคือเหตุผลที่ฉันเลือกพัฒนาซอฟต์แวร์เป็นอาชีพ
  • ตัวอย่าง: ตอนเกิด memory error ระหว่าง Docker build มันกลับเพิ่มค่า memory setting แทนที่จะถามก่อนว่าทำไมตั้งแต่แรกถึงใช้หน่วยความจำมากขนาดนั้น

    • AI นี่เหมือนเราเสียจริง
  • ทักษะของนักพัฒนายังคงจำเป็น — ถ้าคุณขับไม่เป็น คุณก็บังคับมันไม่ได้ แต่พลังงานของนักพัฒนาล่ะ? ก่อนมี AI ฉันเขียนโค้ดได้วันละประมาณ 2 ชั่วโมงเท่านั้น (หมายถึงเวลาที่เขียนโค้ดจริง ๆ) แต่พอใช้ Claude Code ฉันเขียนต่อเนื่อง 5 ชั่วโมงได้สบาย ๆ มันเหมือนเปลี่ยนจากจักรยานธรรมดาเป็นจักรยานไฟฟ้า AI ให้ความรู้สึกเหมือนอุปมา "จักรยานสำหรับจิตใจ" ของ Steve Jobs — มันไม่ได้มาแทนที่ฉัน แต่มันทำให้ฉันไปได้ไกลขึ้นและเร็วขึ้นมาก

  • ไดอะแกรมนี้โดนใจมาก — ทีมของเราเช็กครบทุกข้อในนี้ ทั้งที่ยังไม่ได้ใช้ AI ด้วยซ้ำ! ลองนึกดูสิว่าถ้าสุดท้ายเราเริ่มใช้ AI จะเป็นยังไง...

    • "ข้อกำหนดที่ถูกเข้าใจผิด" กับ "การ implement ที่ซับซ้อนเกินไป" แทบจะเป็นมาสคอตของเราไปแล้ว เรากำลังค่อย ๆ คลี่ความยุ่งเหยิงนี้ด้วยการคุยตั้งแต่ต้นให้ดีขึ้นและรีวิวแบบวนซ้ำ แต่นิสัยเก่า ๆ ไม่หายไปง่าย ๆ มีใครบ้างไหมที่ฝ่ากับดักพวกนี้ไปได้โดยไม่ต้องพึ่ง AI?
  • สำหรับฉัน สิ่งที่ดูชัดเจนไม่ได้ชัดเลย: คนรอบตัวฉันใช้ AI กัน

    • บ่อยครั้งที่ต้องสร้างและดูแลเครื่องมือพวก tooling, introspection, logging, conversion และอื่น ๆ ฉันมีโชคมากกับการใช้ agent มาสร้างและแก้เครื่องมือเหล่านี้ เช่น เครื่องมือเก็บข้อมูลและรวบรวม log จากระบบวางแผนแบบ custom
    • ในการสร้างเครื่องมือพวกนี้ มี boilerplate ที่ถูกสร้างขึ้นเยอะมากและไม่ได้อยู่บน critical path ส่วนใหญ่แล้วฉันไม่อยากทำมัน
  • ฉันต้องคอยบังคับ AI เยอะมาก แต่ก็ยังมองโลกในแง่ดีว่า prompt ที่ดีขึ้นจะนำไปสู่ agent ที่ดีขึ้น

    • ยกตัวอย่างจากบทความ: การ reuse โค้ด เวลาเขียนโค้ด เรามักมีคลังโค้ดที่มีอยู่แล้วในหัวแบบไม่รู้ตัว เราจะถามตัวเองโดยอัตโนมัติว่า "งานใหม่นี้คล้ายกับโค้ดที่มีอยู่แล้ว ทำงานได้ และผ่านการทดสอบหรือเปล่า?" ฉันยังไม่ได้ดูรายละเอียดของ initial prompt ที่ให้กับ coding agent แต่สัญชาตญาณของฉันคือควรเพิ่ม prompt ที่สั่งให้ agent รักษาคลังสิ่งที่มีอยู่ใน codebase ไว้ และเมื่อวางแผนเขียนโค้ดส่วนใหม่ ก็ให้เทียบความต้องการของงานใหม่กับสิ่งที่มีอยู่แล้ว
    • ใช่ นี่เพิ่ม computation cycle ให้กระบวนการวางแผนเยอะมาก แต่ก็ควรพูดกันตรง ๆ ว่า "นั่นคือราคาที่ต้องจ่ายเพื่อให้ agent เขียนโค้ด" การวางแผนที่ดีกว่า > ความสามารถในการแก้ปัญหาที่ดีกว่า
  • อยากเกริ่นก่อนว่าเครื่องมือ AI ไม่ได้แย่กับทุกอย่างที่ฉันลิสต์ไว้

    • ดูเหมือนจะทำคำว่า "not" หล่นไปนะ ทำไมถึงจะเกริ่นว่าเครื่องมือพวกนั้นแย่เสมอ? อีกทางหนึ่งฟังสมเหตุสมผลกว่า
    • อีกอย่าง ยังมีความผิดทางไวยากรณ์ที่ใช้ "effected" แทน "affected"
  • ตอนนี้ Martin Fowler ปล่อยเช่าพื้นที่บนเว็บไซต์ของเขาแล้วหรือ?