27 คะแนน โดย GN⁺ 2024-12-07 | 12 ความคิดเห็น | แชร์ทาง WhatsApp
  • นักพัฒนาใช้ AI อยู่ 2 รูปแบบหลัก
    • Bootstrappers:
      • ใช้เครื่องมืออย่าง Bolt, v0, screenshot-to-code AI เพื่อสร้างต้นแบบเริ่มต้นอย่างรวดเร็ว
      • ใช้ AI จากจุดตั้งต้นอย่างดีไซน์หรือแนวคิด เพื่อสร้างโค้ดเบสเริ่มต้น และพัฒนาต้นแบบที่ใช้งานได้ภายในไม่กี่ชั่วโมงหรือไม่กี่วัน
    • Iterators:
      • ใช้เครื่องมืออย่าง Cursor, Cline, Copilot, WindSurf ในการพัฒนาประจำวัน เพื่อทำ code completion, รีแฟกเตอร์ที่ซับซ้อน, การสร้างเทสต์ และเอกสาร

ความแตกต่างในการใช้ AI ระหว่างนักพัฒนาที่มีประสบการณ์กับนักพัฒนาระดับเริ่มต้น

  • นักพัฒนาที่มีประสบการณ์: รีแฟกเตอร์โค้ดที่ AI เสนออย่างต่อเนื่อง, จัดการ edge case, เสริมความเข้มงวดของ type definition และทบทวนการตัดสินใจด้านสถาปัตยกรรม
  • นักพัฒนาระดับเริ่มต้น: มีแนวโน้มจะรับเอาผลลัพธ์จาก AI ไปใช้ตรง ๆ จึงเสี่ยงสร้างโค้ดแบบ 'บ้านไพ่' ที่อาจเกิดปัญหาในสภาพแวดล้อมจริง

พาราด็อกซ์ของเครื่องมือ AI: พาราด็อกซ์แห่งความรู้

  • นักพัฒนาที่มีประสบการณ์: ใช้ AI เพื่อเร่งงานที่ตัวเองรู้อยู่แล้ว
  • นักพัฒนาระดับเริ่มต้น: พยายามใช้ AI เพื่อเรียนรู้ว่าควรทำอะไร
  • ผลลัพธ์: ประสิทธิผลของการใช้ AI แตกต่างกันมากตามระดับความชำนาญ

ปัญหา 70% เมื่อผู้ที่ไม่ใช่ผู้เชี่ยวชาญใช้เครื่องมือเขียนโค้ดด้วย AI

  • ความคืบหน้าในช่วงต้น: ใช้เครื่องมือ AI เพื่อทำฟีเจอร์ที่ต้องการให้เสร็จได้อย่างรวดเร็ว 70%
  • 30% ที่เหลือ: เมื่อพยายามแก้บั๊กเล็ก ๆ กลับเกิดปัญหาใหม่ และเมื่อแก้ปัญหานั้นก็อาจก่อปัญหาเพิ่ม กลายเป็นวงจรเลวร้ายไม่รู้จบ

กลยุทธ์เพื่อใช้เครื่องมือ AI ให้มีประสิทธิภาพ

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

การมาถึงของ agentic software engineering

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

ข้อควรระวังเมื่อใช้เครื่องมือ AI

  • ความสำคัญของประสบการณ์ผู้ใช้: แม้จะใช้ AI สร้างเดโมได้อย่างรวดเร็ว แต่หากไม่ใส่ใจรายละเอียดอย่างข้อความ error, edge case หรือสถานะของ UI ที่อาจเกิดขึ้นเมื่อผู้ใช้จริงใช้งาน ก็อาจสร้างความไม่สะดวกให้ผู้ใช้ได้
  • การหวนคืนของความเป็นช่างฝีมือ:
    • AI ทำให้การพัฒนาซอฟต์แวร์เร็วขึ้น แต่ก็มีความเสี่ยงที่จะสูญเสียศิลปะในการสร้างประสบการณ์ระดับคุณภาพสำหรับผู้บริโภคอย่างแท้จริง
    • เครื่องมือ AI สามารถรับมือกับงานเขียนโค้ดประจำวัน เพื่อช่วยให้นักพัฒนาโฟกัสกับรายละเอียดที่สำคัญได้

บทสรุป

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

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

 
dbs0829 2024-12-10

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

 
kandk 2024-12-09

อาจจะคล้ายกับการถกเถียงที่ว่า IDE ทำให้นักพัฒนาพัง..

 
savvykang 2024-12-07

ผมเหนื่อยกับการต้องคอยแก้โค้ด AI ที่ลูกค้าสร้างขึ้น
เมื่อ AI เริ่มเป็นฝ่ายตัดสินใจ ดูเหมือนว่าจะไม่มีคำตอบอีกต่อไป

 
iolothebard 2024-12-07

พอดูเหมือนว่าจะดีขึ้นเมื่อให้ฟีดแบ็กกับ AI… แต่พอถึงจุดหนึ่งมันก็พังลงมา ต้องมีเคล็ดลับในการจับให้ได้ว่าเป็นช่วงเวลานั้น และเมื่อถึงตอนนั้นก็ต้องเลือกว่าจะทิ้ง AI ไปเลยหรือจะเริ่มใหม่อีกครั้ง

 
yadameda 2024-12-07

จะแปล production-ready (พร้อมใช้งานจริงในระบบ) ว่าอย่างไรให้ลื่นไหลดี?

อยู่ในระดับที่พร้อมสำหรับการให้บริการจริง
ระดับโปรดักชัน

 
kandk 2024-12-09

พร้อมเปิดตัวแล้ว!

 
binaryeast 2024-12-08

โดยปกติผมมักแปลว่า พร้อมเปิดตัวได้ หรือ เตรียมพร้อมสำหรับการเปิดตัว

 
jhj0517 2024-12-08

"พร้อมปล่อยใช้งาน" ฟังดูดีนะ!

 
bus710 2024-12-08

"(สำหรับการใช้งานจริงหรือสำหรับลูกค้า) พร้อมสำหรับการนำขึ้นใช้งาน"
ประมาณนี้เป็นอย่างไรบ้าง?

 
savvykang 2024-12-07

แล้วแบบที่ผ่านการพิสูจน์ในการใช้งานจริงล่ะ?

 
soomtong 2024-12-09

ดูเหมือนว่าเวลาใช้ในเชิงพิสูจน์ใช้งานจริง มักจะเรียกกันว่า battle tested ครับ

 
GN⁺ 2024-12-07
ความเห็นจาก Hacker News
  • AI ก็เหมือนเครื่องมือหลายอย่างในอดีตที่พยายามเข้ามาแทนที่บางส่วนของการเขียนโปรแกรม แต่แก่นแท้ของงานยังคงต้องอาศัยสมองมนุษย์

    • AI ไม่สามารถทำงานที่เป็นแก่นแท้อย่างการจัดการความซับซ้อนได้
    • AI สนทนาเป็นภาษาอังกฤษได้ จึงยืดหยุ่นกว่าความพยายามในอดีต แต่ก็ยังมีข้อจำกัดในการแก้ปัญหาที่เป็นแก่นแท้
  • AI เหมือนนักพัฒนารุ่นจูเนียร์ที่กระตือรือร้นในทีม

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

    • ด้วย AI งานที่เดิมต้องใช้เวลาหลายวันสามารถทำเสร็จได้ภายในไม่กี่ชั่วโมง
    • ต่อให้ AI จะทำไปเพียง 70% หรือ 42.5% ของงานทั้งหมด ก็ยังถือว่าเป็นการพัฒนาที่ดีมาก
  • สำหรับนักพัฒนาจูเนียร์ AI เป็นดาบสองคม

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

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

    • แม้จะพัฒนาได้เร็วขึ้นด้วยความช่วยเหลือของ AI แต่การเขียนโค้ดที่มีโครงสร้างที่ดีก็ยังต้องใช้เวลาอยู่ดี
  • Copilot ล้มเหลวกับงานที่ซับซ้อน

    • AI แสดงให้เห็นข้อจำกัดด้านการขยายขนาด
    • ในอนาคตอาจต้องพึ่งเทคโนโลยีอย่าง quantum computing
  • GenAI สามารถให้ผลลัพธ์เชิงลึกได้กับโซลูชันที่มีข้อกำหนดชัดเจนและเป็นที่รู้จักดี

    • แต่กับปัญหาที่ซับซ้อน อาจทำได้เพียงราว 50%
    • มีการใช้วิธีทำรายการงานย่อยอย่างละเอียด แล้วแก้แต่ละงานแยกกัน
  • การตรวจสอบงานของ AI เป็นสิ่งสำคัญ

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

    • เครื่องมือ AI สะดวกก็จริง แต่มีประโยชน์กับงานเขียนโค้ดเพียงบางส่วนเท่านั้น