- นักพัฒนาใช้ 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 ความคิดเห็น
การใช้เทคโนโลยีนั้นเป็นเรื่องดี แต่มีคนจำนวนมากเกินไปที่ถึงขั้นฝากการคิดไว้ด้วย โดยเฉพาะเวลาไปงานด้านการศึกษา ยิ่งเห็นบ่อยจนรู้สึกกังวล พูดตามตรง ผมไม่ได้อยากทำงานกับคนแบบนั้นเท่าไรนัก
อาจจะคล้ายกับการถกเถียงที่ว่า IDE ทำให้นักพัฒนาพัง..
ผมเหนื่อยกับการต้องคอยแก้โค้ด AI ที่ลูกค้าสร้างขึ้น
เมื่อ AI เริ่มเป็นฝ่ายตัดสินใจ ดูเหมือนว่าจะไม่มีคำตอบอีกต่อไป
พอดูเหมือนว่าจะดีขึ้นเมื่อให้ฟีดแบ็กกับ AI… แต่พอถึงจุดหนึ่งมันก็พังลงมา ต้องมีเคล็ดลับในการจับให้ได้ว่าเป็นช่วงเวลานั้น และเมื่อถึงตอนนั้นก็ต้องเลือกว่าจะทิ้ง AI ไปเลยหรือจะเริ่มใหม่อีกครั้ง
จะแปล
production-ready(พร้อมใช้งานจริงในระบบ) ว่าอย่างไรให้ลื่นไหลดี?อยู่ในระดับที่พร้อมสำหรับการให้บริการจริง
ระดับโปรดักชัน
พร้อมเปิดตัวแล้ว!
โดยปกติผมมักแปลว่า
พร้อมเปิดตัวได้หรือเตรียมพร้อมสำหรับการเปิดตัว"พร้อมปล่อยใช้งาน" ฟังดูดีนะ!
"(สำหรับการใช้งานจริงหรือสำหรับลูกค้า) พร้อมสำหรับการนำขึ้นใช้งาน"
ประมาณนี้เป็นอย่างไรบ้าง?
แล้วแบบที่ผ่านการพิสูจน์ในการใช้งานจริงล่ะ?
ดูเหมือนว่าเวลาใช้ในเชิงพิสูจน์ใช้งานจริง มักจะเรียกกันว่า battle tested ครับ
ความเห็นจาก Hacker News
AI ก็เหมือนเครื่องมือหลายอย่างในอดีตที่พยายามเข้ามาแทนที่บางส่วนของการเขียนโปรแกรม แต่แก่นแท้ของงานยังคงต้องอาศัยสมองมนุษย์
AI เหมือนนักพัฒนารุ่นจูเนียร์ที่กระตือรือร้นในทีม
สามารถใช้เครื่องมือ AI เพื่อพัฒนาเครื่องมือใหม่ได้อย่างรวดเร็ว
สำหรับนักพัฒนาจูเนียร์ AI เป็นดาบสองคม
แพตเทิร์น "เชื่อใจแต่ต้องตรวจสอบ" เป็นสิ่งสำคัญ
csscolorparserของ Rust เข้ากับ PythonAI สามารถเขียนโค้ดได้รวดเร็ว แต่ไม่ได้ทำให้กระบวนการเรียนรู้เร็วขึ้น
Copilot ล้มเหลวกับงานที่ซับซ้อน
GenAI สามารถให้ผลลัพธ์เชิงลึกได้กับโซลูชันที่มีข้อกำหนดชัดเจนและเป็นที่รู้จักดี
การตรวจสอบงานของ AI เป็นสิ่งสำคัญ
ในความเป็นจริงพบเจอได้ยากที่คนจะบอกว่า AI ทำให้ผลิตภาพเพิ่มขึ้นอย่างมาก