- คอร์สเรียนฟรี
- 1. Intro to Programming - บทนำของสายอาชีพพัฒนาโปรแกรม
- 5. AI จะทำให้โปรแกรมเมอร์ตกงานจริงหรือไม่?
5. AI จะทำให้โปรแกรมเมอร์ตกงานจริงหรือไม่?
- ความยาวของวิดีโอ: 1 ชั่วโมง 31 นาที 20 วินาที
หลายคนอาจจะมีข้อกังวลว่า AI จะมาแทนที่โปรแกรมเมอร์หรือไม่? ในบทนี้เราจะมาวิเคราะห์เบื้องต้นกันว่ามีผลกระทบอะไรกันบ้าง และแท้จริงแล้ว AI มีประโยชน์แก่โปรแกรมเมอร์อย่างไร
สิ่งที่จะได้เรียนรู้ในบทนี้:
- ผลกระทบของเทคโนโลยีปัจจุบันกับงานพัฒนาโปรแกรม
- ดูขั้นตอนการปฏิบัติงานพัฒนาโปรแกรมจริงร่วมกับ AI
- สร้างความเข้าใจว่า AI ไม่สามารถแทนที่โปรแกรมเมอร์ได้เต็มรูปแบบ
กาลเวลาทำให้อาชีพเปลี่ยนไป
เป็นสิ่งหนึ่งที่ผมอยากจะนำเสนอก่อน ว่า ในอดีต นั้นก็เคยมีที่ ผลกระทบ ของเทคโนโลยีเข้ามาใหม่ ทำให้อาชีพหรือร้านค้าบริการประเภทหนึ่งหายไป ยกตัวอย่างเช่น
- ร้านถ่ายรูป บริการพิมพ์รูปภาพจากฟิล์ม เพราะเทคโนโลยีของกล้องที่เก็บรูปภาพลงคอมพิวเตอร์หรือในอินเทอร์เน็ตได้
- ร้านถ่ายเอกสาร บริการพิมพ์เอกสาร เพราะเทคโนโลยีการเข้าถึงข้อมูลผ่านคอมพิวเตอร์โดยไม่จำเป็นต้องใช้เอกสารจับต้องได้
- ร้านเช่าหนังวิดีโอ ขายแผ่นเพลง แผ่นหนัง เพราะบริการสตรีมมิ่งออนไลน์ที่สามารถเช่าและดูได้สะดวกกว่า
- ร้านเกม บริการเช่าคอมพิวเตอร์ เพราะเทคโนโลยีสมาร์ทโฟนที่มีราคาถูกลง เริ่มมีคุณสมบัติเทียบเท่ากับคอมพิวเตอร์ตั้งโต๊ะ และมีเกมให้เล่นมากขึ้น
- ห้างสรรพสินค้า ร้านขายของปลีกบางประเภท ตลาดบางประเภท เพราะเทคโนโลยีการซื้อของผ่านออนไลน์ และจัดส่งถึงบ้าน
- พนักงานบริการบางประเภท เช่น แคชเชียร์ คนเสิร์ฟอาหาร คนขายอาหารฟาสต์ฟู้ด คนขายตั๋วหนัง คนเก็บค่าทางด่วน พนักงานเคาน์เตอร์ธนาคาร เพราะบริการเข้าถึงออนไลน์หรือระบบอัตโนมัติใช้งานได้ง่ายขึ้น ตรงนี้อาจจะยังไม่เห็นกระทบในประเภทไทยมากนัก เพราะชาวไทยเน้นใช้บริการจากผู้อื่นมากกว่าบริการตนเอง
แต่ส่วนหนึ่งเราอาจจะมีโอกาสเห็น อาชีพใหม่ๆ ได้ หรือเราสามารถเข้าถึงอาชีพเหล่านั้นง่ายกว่าเดิม เช่น
- ร้านขายของออนไลน์ เพราะการเปิดร้านค้าไม่จำเป็นต้องมีหน้าร้าน ลดค่าใช้จ่าย ร้านเล็กก็สามารถเปิดใช้บริการออนไลน์ได้ง่าย
- ร้านอาหาร เพราะไม่จำเป็นต้องมีหน้าร้านเช่นกัน หากอยู่ในเมืองที่มีระบบจัดส่งอาหารและสั่งอาหารออนไลน์
- บริษัทขนส่ง บริการจัดส่งอาหาร จะมีความต้องการสูงเพิ่มขึ้นจากข้างต้น รวมทั้งต้องการเทคโนโลยีที่สะดวกมากขึ้น
- จำหน่ายและบริการซ่อมมือถือ เพราะผู้คนเริ่มใช้สมาร์ทโฟนกันทุกคน ทำให้มีโอกาสเสียหายต้องการซ่อม หรือต้องการซื้อใหม่บ่อยขึ้น
- ผู้สร้างคอนเทนต์ออนไลน์ เพราะเราสามารถสร้างรายได้เหมือนรายการทีวี แต่สามารถทำเพียงคนเดียวได้โดยไม่ต้องพึ่งสถานีทีวี
- บริการจากออนไลน์ต่างๆ ที่เราสามารถเป็นหนึ่งในผู้ให้บริการได้ เช่น ครูสอนออนไลน์ บริการรับปรึกษาเรื่องราวต่างๆ บริการตอบแชทลูกค้า การรับจ้างอื่นๆผ่านออนไลน์
- และแน่นอน อาชีพโปรแกรมเมอร์ โดยเฉพาะสายงานพัฒนาระบบบนออนไลน์
ทำความรู้จักกับอาชีพ Prompt Engineer
คำว่า Prompt ในทางคอมพิวเตอร์จะหมายถึงการป้อนข้อมูล ซึ่งสมัยนี้ก็คือการสั่งให้ AI ทำงานรูปแบบหนึ่ง สำหรับคนที่เป็นนักใช้งาน Generative AI โดยเฉพาะจะมีคำนิยมว่า Prompt Engineering โดยคนเหล่านี้จะมีคำศัพท์หลายอย่าง หรือรูปแบบวิธีการสั่งใช้งานที่สร้างสรรค์
ดูผิวเผินอาจจะ ไม่แตกต่างกับคนใช้งาน Google ที่พิมพ์คำค้นหาทั่วไป แต่ของ Prompt Engineer จะมีความขั้นสูงอีกระดับหนึ่ง ถึงแม้ว่าส่วนตัวผมก็มองว่างานนี้มันไม่ได้ดูพิเศษอะไรมาก เหมือน Soft Skill ที่เราสามารถสั่งใช้งานทีมเราหรือลูกน้องเราให้ทำงานอย่างถูกต้อง ในประเทศไทยผมก็ยังไม่เห็นการจ้างสายงานนี้โดยเฉพาะเจาะจง จะเป็นทักษะเล็กๆน้อยๆที่อยู่ในคำอธิบายการจ้างพนักงาน สำหรับสายพัฒนา AI มากกว่า
โดยสรุปแล้วจากความคิดเห็นส่วนตัวของผม ทักษะ Prompt Engineer นั้น ใครๆก็ทำเป็นได้ เพียงแค่มีทักษะการใช้งานภาษาอังกฤษ ร่วมกับความคิดสร้างสรรค์กำหนดรูปแบบคำสั่งต่างๆ
Generative AI สำหรับการพัฒนาโปรแกรมโดยเฉพาะ
เราอาจจะเห็นมีหลายตัวก็มักจะมีคุณสมบัติใน การเขียนโค้ด ไปในตัวด้วย แต่จากความชื่นชอบความแม่นยำ ผมขอแนะนำตามลำดับดังนี้
- ChatGPT มีแบบฟรีให้ใช้งาน ถึงแม้ว่าจะโค้ดแม่นยำระดับหนึ่ง แต่ตัวฟรีจะ ไม่สามารถค้นหาข้อมูลล่าสุดได้ ถึงอย่างไรก็อาจจะมีความใกล้เคียงในเหตุการณ์ปัจจุบัน เช่น ข้อมูลจะล่าช้าไป 1-12 เดือน หากต้องการข้อมูลล่าสุดและคุณสมบัติมากกว่านี้จะจำเป็นต้องจ่ายรายเดือน
- GitHub Copilot เป็นแบบเฉพาะจ่ายเงินเท่านั้น เพื่อเพิ่มประสิทธิภาพการทำงานของเราสูงสุด จากประสบการณ์ใช้งานผมจะรู้สึกตัวนี้มี ความแม่นยำสูงมาก เพียงแต่ตัวฟรีก็ใช้งานทดแทนได้
- Claude AI มีแบบฟรีให้ใช้งาน แต่มีข้อจำกัดไม่สามารถแชทนานๆได้ต่อหนึ่งวัน หากต้องการใช้จำนวนมากจะต้องจ่ายรายเดือน ตัวนี้มี ความแม่นยำการโค้ดสูงมาก และยังสามารถ ค้นหาข้อมูลล่าสุด ได้
ส่วนตัวอื่นๆที่อาจจะมีชื่อเสียงเช่นกัน แต่อาจจะ ไม่แนะนำสำหรับการพัฒนาโปรแกรม (ในตอนนี้) เพราะจากประสบการณ์ส่วนตัวจะยังมีหลายส่วนที่เขียนโค้ดผิดบ่อยครั้ง เช่น
- Microsoft Copilot จะเป็นคนละตัวกับ GitHub Copilot ถึงแม้จะรันด้วยโมเดล GPT เหมือนกัน แถม Microsoft Copilot นั้นสามารถค้นหาข้อมูลผ่านออนไลน์ได้ เพียงแต่มันจะ ตอบจำนวนข้อมูลสั้นมากเกินไป และการเขียนโค้ดยังไม่แม่นยำมากนัก
- Gemini ถึงแม้ว่าจะ สามารถสร้างข้อความได้รวดเร็วมาก และสามารถค้นหาข้อมูลผ่านออนไลน์ได้ แต่ก็ มีปัญหา เรื่องความแม่นยำการเขียนโค้ด ส่วนตัวผมจะชอบใช้เพื่อสร้างข้อความภาษาไทย เพราะกลุ่มของ GPT มักจะมีปัญหาการพิมพ์ภาษาไทยช้ากว่า
- Llama ข้อดีคือใช้งานฟรี เป็นลิขสิทธิ์แบบ Open Source สามารถนำมาประยุกต์ใช้กับระบบส่วนตัวได้หลายอย่าง เพียงแต่ในด้านพัฒนาโค้ดนั้น อาจจะยังไม่ค่อยดีมาก หรือถ้าอยากรันบนเครื่องตัวเองในโมเดลที่ประสิทธิภาพสูงสุด จำเป็นต้องใช้ คอมพิวเตอร์หลักแสนในการเปิดระบบ LLama
ทดสอบการใช้ Generative AI ในการพัฒนาโปรแกรม
ในที่นี่ผมจะเลือกใช้ ChatGPT เป็นหลัก เพราะต้องการใช้คุณสมบัติฟรีที่ใครๆก็เข้าถึงได้ เพียงแต่บางหัวข้ออาจจะมีการใช้ AI อื่นๆช่วยเหลือบ้าง ซึ่งตัวฟรีปัจจุบัน ChatGPT จะเป็นโมเดลของ ChatGPT-4o-mini
และนอกจากนี้เราจะ ใช้ภาษาอังกฤษในการสื่อสาร กับ AI แม้ว่าผมจะไม่เก่งอังกฤษก็ตาม พิมพ์คุยก็ไม่ได้เก่งมาก แต่เพราะข้อมูลทางภาษาอังกฤษนั้นจะได้คำตอบที่ดีกว่า รวมทั้ง AI เองก็ไม่ใช่คนที่เอะอ่ะก็จับผิดการใช้ Grammar หรือรูปแบบคำผิดๆอีกด้วย และคอยคาดเดาได้ว่าเรากำลังจะสื่อถึงอะไร
ทดสอบความเข้าใจหลายภาษา
ส่วนนี้เราจะทดสอบอย่างง่ายโดยบอกให้ ChatGPT แสดงวิธีการนำข้อความ Hello, world ของแต่ละภาษาโปรแกรม ซึ่งก็ได้ ผลลัพธ์ที่ดีมากและรวดเร็ว ทำให้เราได้ข้อสรุปอย่างสั้นดีๆเลยว่า แต่ล่ะโปรแกรมเพียงแค่อยากให้ขึ้นข้อความบน Console จะต้องพิมพ์โค้ดยาวมากน้อยแค่ไหน ตามลิงก์ของแชทด้านล่าง
ลิงก์สำหรับแชทของ AI: https://chatgpt.com/share/50c9700a-eeea-4f72-be0b-590c4ac663dd
การสอนพัฒนาโปรแกรม
ChatGPT รวมทั้ง AI อื่นๆสามารถ เป็นครูสอนตัวต่อตัวให้เราได้ดีมาก แต่ว่าบาง AI นั้นอาจจะมีคุณสมบัติความจำระยะสั้นเกินไป เราควรเลือกใช้ AI ที่สามารถเปิดหัวข้อพูดคุยได้อย่างต่อเนื่อง อย่าง ChatGPT เราสามารถพูดคุยหัวข้อเดิมๆที่เกี่ยวข้องอย่างไร้รอยต่อ อย่างวันนี้เราเรียนเหนื่อยแล้ว วันพรุ่งนี้ก็บอกให้สอนต่อได้เลย
โดยจากตัวอย่างลิงก์แชท เราสามารถใช้คำสั่งสั้นๆที่นิยมคือ continue
เพื่อให้ AI ดำเนินการต่อจากเดิมได้เลย
ลิงก์สำหรับแชทของ AI: https://chatgpt.com/share/7d1a5d37-a0c5-4768-95b6-4bb5d0389cda
Mocking Data เพื่อจำลองข้อมูล
ChatGPT ก็ยังสามารถ Mock (บางครั้งอาจจะเรียก Fake หรือ Stub) คือการสร้างชุดข้อมูลจำนวนมากๆ ที่อาจจะไม่มีความหมายชัดเจน แต่เพื่อให้เราสามารถนำข้อมูลเหล่านั้นใช้พัฒนาโปรแกรมต่อ เช่น การจำลองให้มีหลายบทความ จำลองให้เหมือนมีลูกค้าจำนวนมากกำลังใช้งานแอปของเรา
โดยในส่วนนี้ก็ยัง ทำได้ดีมาก เช่นกัน สามารถสุ่มข้อมูลได้อย่างถูกต้องดังแชทด้านล่าง ลดเวลาการทำงานของผม ได้ดีเลย โดยผมจะเป็นคนกำหนด Interface พร้อมกับ Data Types ของภาษาโปรแกรม เพื่อให้ AI สุ่มข้อมูลได้อย่างถูกต้อง
ลิงก์สำหรับแชทของ AI: https://chatgpt.com/share/ce4be418-b247-49b7-ae68-6f0ec0c5f421
การสร้างฟังก์ชั่นตามกำหนด
สำหรับหัวข้อนี้จะเป็นเรื่องหนึ่งที่ ผมใช้บ่อยอย่างมาก เพราะเวลาพัฒนาโปรแกรมเราจะต้องคิดถึงเรื่อง Input/Output ซึ่งผมก็สามารถป้อนโจทย์ลงไป พร้อมกับว่าผมต้องการใส่ข้อมูลอะไร และต้องการตัวอย่างผลลัพธ์แบบใด โดย ChatGPT จะทำงานส่วนนี้ได้ดีมาก ทำให้ลดเวลาการทำงานของผม ทั้งการระดมแนวคิดการทำงาน และลงมือเขียนโค้ดลงไป
จากตัวอย่างนี้ โจทย์ก็คือให้สุ่มสร้างข้อมูลรายชื่อสมาร์ทโฟนที่มีอยู่จริง พร้อมรายการ tags
ที่อาจจะบ่งบอกว่า สมาร์ทโฟนนี้เป็นรุ่นอะไร มีคุณสมบัติอะไรบ้าง จากนั้นผมจะสร้างฟังก์ชั่นนับจำนวน tags
ว่ามีอะไรจำนวนเท่าไหร่บ้าง เพื่อแยกแยะว่าสมาร์ทโฟนที่เรามีส่วนมากจะเป็น Android หรือ iOS เป็นต้น โดยผลลัพธ์ก็ ทำได้อย่างถูกต้องครบถ้วน ดังลิงก์แชทด้านล่าง
ลิงก์สำหรับแชทของ AI: https://chatgpt.com/share/34f87fad-c190-4fe9-9e44-5b4624c31ba6
ลิงก์ของโค้ดที่รัน: https://github.com/nakorncode/free-workshops/tree/main/100.introduction/100.ai-impact-programmer/100.create-function
การคาดเดาผลลัพธ์ของโปรแกรม
การเคาเดาผลลัพธ์อาจจะเป็นสิ่งหนึ่งที่ทุกๆ AI ยังทำไม่ดีมากนัก ก็อาจจะบ่งบอกว่า AI ไม่ได้ตรวจทานความถูกต้อง เสมอไป และมีโอกาสผิดพลาดเกิดขึ้นได้เสมอ
ถึงอย่างไรคุณสมบัติบาง AI อย่าง ChatGPT-4o ที่โมเดลจ่ายเงินนี้ จะมีคุณสมบัติ สามารถทดสอบรันโค้ด เพื่อตรวจสอบความถูกต้องได้บ้าง
โดยจากตัวอย่างโค้ด คือเราจะมีข้อมูลสถิติชุดหนึ่ง และต้องการฟังก์ชั่นในการคำนวณค่าเฉลี่ยออกมา และยังสามารถจำแนกตามรายเดือนได้อีกด้วย ซึ่งผลลัพธ์ที่ถูกต้องคือด้านล่าง และสำหรับส่วนนี้ ChatGPT-4o-mini ไม่สามารถคำนวณได้ว่าผลของค่าเฉลี่ยคือเท่าใด แต่ก็ยังสามารถเข้าใจขั้นตอนการประเมินว่า ผลลัพธ์น่าจะเป็นเช่นไรดังตัวอย่างแชทและโค้ดด้านล่าาง
ผลลัพธ์ที่ถูกต้อง:
Average sales (entire period): 5819.611111111111
Average sales (March 2023 to June 2024): 5854.6875
ลิงก์ของโค้ดที่ใช้ทดสอบ: https://github.com/nakorncode/free-workshops/tree/main/100.introduction/100.ai-impact-programmer/200.run-function
ลิงก์สำหรับแชทของ AI (ChatGPT-4o-mini) ตัวนี้ได้ผลลัพธ์ไม่ถูกต้อง: https://chatgpt.com/share/6d0aa01f-c49b-42ce-9441-b4fd6e6d739c
ลิงก์สำหรับแชทของ AI (ChatGPT-4o) ได้ผลลัพธ์ถูกต้อง: https://chatgpt.com/share/3f1ec445-529f-4a90-98b3-492b28d6fa9f
การค้นหาจุดบกพร่องของโค้ด
สำหรับการค้นหาจุดบกพร่องเราสามารถเรียกได้ว่า Debugging ในส่วนนี้ผมจะทดสอบ 3 แบบด้วยกันดังนี้
Syntax Error ทดสอบความผิดพลาดจากการเขียนผิด
กรณีนี้ผมได้สั่งให้ Claude AI สร้างโค้ดที่มีจุด Syntax Error หลากหลายมากดังตัวอย่างโค้ด จากนั้นใช้ ChatGPT-4o-mini ตามเดิมเพื่อทดสอบดูว่าจะสามารถแก้ไขโค้ดได้อย่างถูกต้องหรือไม่
โดยหลังจากได้ทดสอบการแก้ไขโค้ดที่มีจุดผิดพลาดต่างๆแล้ว ก็สามารถ ทำงานได้ถูกต้องอย่างดีเยี่ยม อีกทั้งเมื่อแก้ไขเสร็จแล้วก็พบว่าขาดการสร้างไฟล์ ./types.ts
ไว้ด้วย จึงสั่งให้สร้างไฟล์นี้เพิ่มเติมพร้อมกำหนด Interface ให้ถูกต้อง ก็พบว่าสามารถทำงานได้เช่นกัน
ลิงก์ของโค้ดที่มีความผิดพลาด และถูกแก้ไขแล้ว: https://github.com/nakorncode/free-workshops/tree/main/100.introduction/100.ai-impact-programmer/300.debug-syntax-error
ลิงก์สำหรับแชทของ AI: https://chatgpt.com/share/7c9cd959-d89a-4951-8570-4cc5f15ba3a6
Logic Error ทดสอบความผิดพลาดจากโค้ดที่มีกระบวนการไม่ถูกต้อง
ในส่วนของ Logic Error จะเป็นปัญหาที่โค้ดสามารถรันและทำงานได้ เพียงแต่ผลลัพธ์อาจจะไม่ถูกต้อง โดยปกติสำหรับงานของโปรแกรมเมอร์อย่างเรา ถือเป็นเรื่องที่ยากมากๆ สำหรับการตรวจสอบว่าโค้ดส่วนใดที่ทำให้ได้ผลลัพธ์ไม่ถูกต้อง เพราะมันจะไม่มีการแจ้ง Error ใดๆ สิ่งที่ผิดพลาดคือได้ข้อมูลไม่ถูกต้องซึ่งต้องไล่หาสาเหตุทีละบรรทัด
จากตัวอย่างเราก็ได้ใช้ Claude AI สร้างเช่นเคย โดยโค้ดที่ได้จะเป็นการจำลองระบบธนาคาร ที่มีการเปิดบัญชี ฝาก-ถอนเงินต่างๆ ดังนั้นเราจะมาดูเป็นข้อๆกันว่าโค้ดที่ถูกสร้างขึ้นมา มีปัญหาอะไรบ้าง
- สามารถฝาก-ถอนเงินเลขติดลบได้ เป็นเรื่องอันตราย เพราะหากบัญชีเรามีเงินจำนวน 5,000 บาท หากระบบสามารถฝากเงินเพิ่ม แต่เป็น
-500
ผลลัพธ์ที่ได้แค่เงินเราจะเหลือ 4,500 บาทซะงั้นทั้งๆที่ฝากเพิ่ม เพราะว่า5000 - (-500) = 4500
จึงควรป้องกันไม่ให้มีการฝากเงินเข้าหรือถอนเงินออกเป็นเลขติดลบได้ - ขาดการตรวจสอบจำนวนเงินภายในบัญชีก่อนถอนหรือโอนเงิน เป็นเรื่องอันตรายเช่นกัน เพราะหากจำนวนเงินคงเหลือบัญชีไม่พอแล้ว ก็ไม่ควรจะถอนเงินออกได้ แต่โค้ดนี้ขาดการตรวจสอบเรื่องเหล่านี้ ทำให้แม้ว่าเงินบัญชีเราจะมี 5,000 บาท แต่เราสามารถสั่งถอน 5,000,000 บาทได้เช่นกัน
- การส่งข้อมูลประเภท Mutable Reference เรื่องนี้จะเป็นปัญหาเชิงเทคนิค ถ้าเล่าให้เข้าใจง่ายๆเช่น ข้อมูล A เรียกใช้คัดลอกข้อมูลไปยัง B แต่เมื่อ B แก้ข้อมูล A กลับมีข้อมูลเปลี่ยนแปลงตามกันไปด้วย ซึ่งไม่ควรเกิดขึ้น เพราะมีโอกาสที่จะไปดัดแปลงข้อมูลบัญชีธนาคารมั่วทั้งระบบ จึงต้องส่งข้อมูลในรูปแบบ Immutable แทน
- ขาดการตรวจสอบเลขบัญชีที่ซ้ำกัน กล่าวคือโค้ดตัวอย่างมีการสร้างบัญชี
ACC001
ไปแล้วครั้งหนึ่ง แต่ก็ยังมีการพยายามสร้างใหม่อีกครั้ง ตามหลักการแล้วไม่ควรสร้างใหม่ได้ - โค้ดสามารถแก้ไขวันเวลาของการโอนเงินได้ ซึ่งไม่ควรเกิดขึ้น ตัวอย่างเราโอนเงินเมื่อปี 2024 แต่โค้ดกลับสามารถแก้ไขเงินโอนเหล่านั้นให้เกิดขึ้นในปี 2000 ได้
- การแสดงผลของจำนวนเงินในบัญชีลูกค้าไม่ถูกต้อง เนื่องจากมีโค้ดที่แทรกไว้ว่า หากลูกค้าไม่มีบัญชีใดๆ จะแสดงผลเป็นจำนวนเงิน 1,000 บาท ซึ่งจริงๆต้องเป็นเลข 0 หรือก็คือไม่มีจำนวนเงินคงเหลือ
เชื่อหรือไม่ว่า ChatGPT-4o-mini ที่เป็นตัวฟรีและมีประสิทธิภาพต่ำกว่า ก็ยัง สามารถวิเคราะห์และตรวจสอบโค้ดทั้งหมดพร้อมแก้ไขได้ครบถ้วน ทั้งๆที่เป็นโจทย์ที่ยากขึ้นมาในระดับหนึ่ง และยังสามารถช่วยเหลือตรวจสอบโค้ดในจุดที่ผมเองก็มองข้ามไปได้เช่นกัน นับว่าช่วยเหลือการตรวจสอบโค้ดของเราได้ดีมาก
ลิงก์ของโค้ดที่มีความผิดพลาด และถูกแก้ไขแล้ว: https://github.com/nakorncode/free-workshops/tree/main/100.introduction/100.ai-impact-programmer/400.debug-logic-error
ลิงก์สำหรับแชทของ AI: https://chatgpt.com/share/64126f0a-9439-4620-9726-38649a22e27a
Memory Leak ทดสอบความผิดพลาดจากการจัดการข้อมูลผิดพลาด
Memory Leak คือความผิดพลาดการเขียนโค้ดที่ทำให้เกิดช่องโหว่ สร้างข้อมูลบางอย่างซ้ำๆจนเกิดอาการใช้ทรัพยากรในคอมพิวเตอร์มากเกินความจำเป็น โดยจากตัวอย่างเป็นการยกตัวอย่างเรื่อง Event handling ในการอัปเดต หน้าจอโปรแกรม (UI)
โดยจากปัญหาของโค้ดตัวอย่าง จะเกิดการรัน Updating UI...
แบบซ้ำๆมากเกินไปหากมีการสร้าง Instance หลายครั้ง ซึ่งตามหลักการแล้วควรเกิดขึ้นครั้งเดียว และปัญหานี้ ChatGPT-4o-mini ก็สามารถเข้าใจได้แม้ว่าเราจะไม่ได้บอกใบ้เลยว่าปัญหาโค้ดคืออะไร แค่บอกให้ช่วยตรวจสอบอะไรก็ได้เท่านั้น และมีการแนะนำให้ใช้วิธีแก้ไขด้วย Singleton ซึ่งเป็นแนวทางแก้ไขปัญหาที่ถูกต้อง
ลิงก์ของโค้ดที่มีความผิดพลาด และถูกแก้ไขแล้ว: https://github.com/nakorncode/free-workshops/tree/main/100.introduction/100.ai-impact-programmer/500.debug-memory-leak
ลิงก์สำหรับแชทของ AI: https://chatgpt.com/share/bdf92d44-61cc-4115-9c4d-748b61815267
การปรับปรุงคุณภาพของโค้ด
ส่วนนี้เราสามารถเรียกได้ว่าวิธีการ Code Refactoring เป็นการนำโค้ดชุดนึงปรับปรุงให้ดีกว่าเดิม ในที่นี่คือโค้ดเดิมก็อาจจะใช้งานได้ปกติ แต่อาจจะมีขั้นตอนซับซ้อนเกินไป ลดขั้นตอนลงแต่ยังได้ผลลัพธ์ถูกต้อง หรือดัดแปลงโค้ดให้อ่านง่ายกว่าเดิม
ในกรณีนี้ ChatGPT ก็ยัง ทำหน้าที่ได้ดีเช่นเดิม โดยจากโค้ดตัวอย่างจะมีปัญหาเรื่องการตั้งชื่อตัวแปรแบบย่อซึ่งอ่านเข้าใจยาก แบบคาดเดายากมากๆเพราะเป็นตัวอักษรภาษาอังกฤษโดยย่อแค่คำเดียว แต่แชทเราก็สามารถแก้ไขให้เป็นชื่อเต็มเข้าใจได้ทั้งหมด บ่งบอกว่า AI นั้นสามารถจะคาดเดาได้ด้วยว่าคำแต่ละอย่างมีความหมายว่าอย่างไร
ลิงก์ของโค้ดที่มีความผิดพลาด และถูกแก้ไขแล้ว: https://github.com/nakorncode/free-workshops/tree/main/100.introduction/100.ai-impact-programmer/600.refactoring
ลิงก์สำหรับแชทของ AI: https://chatgpt.com/share/3ab8f2e4-6204-4991-9eca-9331cde43de2
การดัดแปลงภาษาโปรแกรม
เนื่องจาก AI มีความเข้าใจหลายภาษาอยู่แล้ว เราจึงสามารถสั่งให้แปลงจากภาษาโปรแกรมหนึ่ง ไปยังภาษาอื่นๆได้ ถึงแม้ว่าทางผลลัพธ์แล้ว อาจจะยังมีข้อผิดพลาดอยู่บ้าง ที่ทำให้เราต้องแก้ไขโค้ดด้วยตนเองในบางบรรทัดหรือสั่งให้ AI ตรวจสอบซ้ำ แต่หากทดสอบใช้โมเดลที่มีคุณภาพสูงอย่าง ChatGPT-4o อันนี้ผมจะยังไม่พบปัญหาใดๆ
ในด้านนี้จะทำให้เราสะดวกต่อการเรียนรู้ จากภาษาที่เราถนัดอยู่แล้วได้ด้วย เพราะเราสามารถสั่งให้ AI ทำการดัดแปลงจากโค้ดในภาษาที่เรารู้จักดี ให้ทำงานได้ใกล้เคียงกับภาษาใหม่ได้ อย่างไรก็ตามหากมีการใช้ Library เสริมอื่นๆมากเกินไป การเปลี่ยนภาษานั้นก็อาจจะเป็นไปได้ยากขึ้น เนื่องจากมี API ที่แตกต่างกันได้
ลิงก์ของโค้ดตัวอย่างที่ได้รับการแปลงภาษาโปรแกรม: https://github.com/nakorncode/free-workshops/tree/main/100.introduction/100.ai-impact-programmer/700.language-conversion
ลิงก์สำหรับแชทของ AI: https://chatgpt.com/share/3079dc4d-9426-4633-9fcb-ed1942f7bb79
การสร้างชุดทดสอบของโปรแกรม
สำหรับส่วนนี้ก็ยัง สามารถทำได้ดีเช่นกัน เป็นอีกสิ่งหนึ่งที่ผมชอบใช้ AI ในการเขียนโค้ด โดยผมจะเลือกใช้โค้ดเดิมจากข้อข้างบน นำไปสร้างชุดทดสอบกับ Unit Testing ถึงแม้ว่าจะมีผลการทดสอบ เขียนไม่ถูกต้องอยู่ 1 จุด แต่จุดอื่นๆมากกว่า 10 จุดทำถูกต้องทั้งหมด ดังนั้นแล้วเราสามารถใช้ AI ช่วยเหลือในการสร้างชุดทดสอบ เพิ่มความเสถียรภาพให้กับโปรแกรมของเราได้ดี
นอกจากนี้แล้ว AI เองก็ยังสอนวิธีการตั้งค่า Unit Testing ให้กับโปรเจกต์เราที่ยังไม่ได้ติดตั้งระบบนี้อีกด้วย เพราะขั้นตอนการเตรียมระบบทดสอบเช่นนี้มักจะมีขั้นตอนยุ่งยากเสมอ
ลิงก์ของโค้ดตัวอย่างพร้อม Unit Testing: https://github.com/nakorncode/free-workshops/tree/main/100.introduction/100.ai-impact-programmer/800.unit-testing
ลิงก์สำหรับแชทของ AI: https://chatgpt.com/share/037d5941-e49b-4892-bc76-cf91c8c3cdc5
สร้างระบบ Scraping เพื่อเก็บข้อมูลหน้าเว็บ
ในบทนี้จะมีความท้าทายมากขึ้น ทั้งผู้ Prompt และตัว AI เองจะสามารถทำได้หรือไม่ เนื่องจากการทำ Web Scraping จะเป็นการเก็บข้อมูลหน้าเว็บ ซึ่งมีข้อมูลจำนวนมาก และหากเราต้องการ ความซับซ้อน ในการเก็บข้อมูลมากเท่าไหร่ การสั่งงานก็จะยิ่งยากขึ้น เท่านั้น
อย่างไรก็ตามผมได้ยกตัวอย่างโดยใช้เว็บฝึกหัดของ https://books.toscrape.com/ เป็นเว็บระดับเริ่มต้นในการฝึก Web Scraping ทั้งนี้ผมได้เก็บข้อมูลเพียงชื่อหนังสือ และราคา ตามด้วยเรียกตามจำนวนหน้าเพจต่างๆ จึงไม่ได้มีความยากมากนัก
แต่ตัวโค้ดที่ AI สร้างขึ้นมาก็ มีปัญหาเป็นช่วงๆ ที่ทำให้เราต้องคอยให้ข้อมูลเพิ่มเติมเป็นระยะดังตัวอย่างในแชทด้านล่าง ถึงอย่างไรก็ตามแล้วเราก็สามารถสร้าง Web Scraping ได้สำเร็จในระดับหนึ่ง โดยที่ผม แทบจะไม่ได้โค้ดอะไรใดๆเลย แต่ก็ต้องรู้จักและขั้นตอนวิธีการสร้างโปรเจกต์ การใช้งาน และตรวจสอบเพื่อแก้ไขปัญหากรณีที่ได้ข้อมูลไม่ถูกต้อง
ลิงก์ของโค้ดที่ได้จากการทำ Web Scraping: https://github.com/nakorncode/free-workshops/tree/main/100.introduction/100.ai-impact-programmer/900.web-scraping
ลิงก์สำหรับแชทของ AI: https://chatgpt.com/share/bd62fd02-c3ae-47f7-9b85-9eaa6c492e0b
สร้างหน้าเว็บ: โปรไฟล์ของวงดนตรี
สำหรับเรื่องนี้เราอาจจะเริ่ม พบปัญหา กับการใช้ AI ที่ไม่สามารถสร้างเว็บไซต์ให้สวยได้ในคำสั่งเดียว เราอาจจะต้องสั่งหลายๆครั้งอย่างมากเพื่อค่อยๆดัดแปลงทีละจุด และเราเองก็ต้องรู้คำศัพท์ที่เกี่ยวข้องกับการออกแบบเว็บไซต์ด้วย HTML และ CSS
จึงทำให้สุดท้ายเรา เราเองก็ควรดัดแปลงโค้ดเองทั้งหมด หรือสั่งให้ AI สร้างโค้ดเฉพาะส่วนเท่านั้น เพราะหากสั่งให้สร้างทั้งหน้าเว็บในทีเดียว อาจจะพบปัญหาดังตัวอย่างโค้ดได้ ที่ไม่ได้แสดงผลได้อย่างถูกต้อง และยังไม่ได้มีความสวยงาม
และในส่วนนี้เรายังมีเครื่องมือที่ไม่ใช่ AI แต่เป็นการประมวลผลจากการออกแบบด้วยโปรแกรม Figma ดัดแปลงเป็นโค้ด HTML แบบนั้นจะสะดวกกว่ามาก บางเรื่องเราจึงไม่จำเป็นต้องใช้ AI เสมอไป แต่เราอาจจะมีเครื่องมืออื่นๆที่สะดวกอยู่แล้วก็ได้
ลิงก์ของโค้ดที่ได้จากการสร้างหน้าเว็บ: https://github.com/nakorncode/free-workshops/tree/main/100.introduction/100.ai-impact-programmer/1000.webpage-musician
ลิงก์สำหรับแชทของ AI: https://chatgpt.com/share/f4256336-1ab5-4e8f-b234-61ed6f41c533
สร้างหน้าเว็บ: แสดงข้อมูลของสภาพอากาศรายวัน
ในส่วนนี้ ถือว่า น่าพอใจ สำหรับกรณีที่ต้องการให้แอปใช้งานได้โดยพื้นฐาน และไม่เน้นความสวยงามของเว็บ หลังจากที่ผมได้ทดลองใช้คำสั่งอย่างง่ายไป แม้ว่าในครั้งแรก ChatGPT จะเลือกใช้ OpenWeatherMap ซึ่งจะมีปัญหา ไม่ใช่ของฟรี
ผมจึงได้ค้นหาข้อมูลในเน็ตเพิ่มเติมด้วยตนเอง และแนะนำ ChatGPT ไปว่ามี 7Timer จะเป็นของฟรีที่น่าใช้ จากนั้น ChatGPT ของเราก็สามารถแก้โค้ดให้ทำงานได้อย่างถูกต้อง
ลิงก์ของโค้ดที่ได้จากการสร้างหน้าเว็บ: https://github.com/nakorncode/free-workshops/tree/main/100.introduction/100.ai-impact-programmer/1100.webapp-weather
ลิงก์สำหรับแชทของ AI: https://chatgpt.com/share/b736d5fe-ff11-455e-a9c1-01242978ca38
สร้างเว็บแอป: โพลล์ออนไลน์
เนื่องจากการเขียนโค้ดทั้งระบบร่วมกับ AI นั้น เป็นไปได้ยากมาก เพราะ AI จะสร้างโค้ดในจุดที่ใช้วิธีคาดเดา และมีโอกาสมีความผิดพลาดสูง เช่นดังตัวอย่างแชทของเรา เราจะเริ่มสั่งให้สร้างเว็บเกี่ยวกับโพลล์ออนไลน์ โดยใช้ Nuxt 3, Docker, MySQL และ Drizzle ORM ในช่วงแรกก็นับว่าไปได้ดีระดับหนึ่ง ที่สามารถสร้างโปรเจกต์จาก Nuxt 3 ได้ และสร้าง docker-compose.yml
ได้อย่างถูกต้อง
เพียงแต่พอเริ่มต้นในส่วนของ Drizzle ORM ทาง AI จะ เริ่มสับสน เพราะตัวโค้ดการใช้งานนั้นมี API และวิธีการที่เปลี่ยนไปจากเดิมที่ AI เคยทราบ และยังสร้างโค้ดหลายจุดที่ใช้การคาดเดา จนเราต้องไปหาข้อมูลซ้ำ และเมื่อบอก AI ว่ามันเป็นแบบเช่นนี้นะ AI อาจจะดูเหมือนเข้าใจ ใช้คำพูดสวยหรู แต่สุดท้ายก็ใช้วิธีคาดเดา ซึ่งโค้ดก็มีความใกล้เคียงแต่ก็ไม่ถูกต้อง ทำให้เราต้องเสียเวลาตรวจสอบและแก้ไขบางส่วนอีกด้วย เช่น
- การใช้ชื่อตัวแปร
integer
แต่จริงแล้วคือint
- ประกาศใช้
driver
แต่ที่จริงคือdialect
และนอกจากนี้ เราอาจจะเห็นแล้วว่า การสร้างโปรเจกต์สำหรับการพัฒนาโปรแกรม ไม่ใช่ว่าจู่ๆเราจะสั่งการได้เลย มันจะมีคำศัพท์เฉพาะ และการตั้งค่าต่างๆที่แตกต่างกันไป ที่เราจำเป็นจะต้องเปิดศึกษาข้อมูลอย่างตลอดเวลา จึงทำให้ การสั่ง AI สร้างทั้งโปรเจกต์เป็นเรื่องยากอย่างมาก ที่ AI จะมีประโยชน์คือช่วยชี้แนะหรือแก้ไขส่วนเล็กน้อยในโปรเจกต์ของเรา มากกว่าที่จะให้ AI ควบคุมทั้งหมด ดังนั้นส่วนนี้จึงไม่ได้มีโค้ดตัวอย่างออกมา เพราะ AI ทำงานไม่สำเร็จตั้งแต่แรกเริ่มเลย
ลิงก์สำหรับแชทของ AI: https://chatgpt.com/share/9235cbe1-095c-4ca0-afbe-e7c1b1dc763a
บทสรุป
AI Coding นั้นจะ ช่วยลดปริมาณงานของโปรแกรมเมอร์ ทำให้โปรแกรมเมอร์ทำงานได้สะดวกขึ้น จึงเป็นเรื่องจริงที่ AI อาจจะทำให้โปรแกรมเมอร์ตกงานไปบ้าง แต่ก็ไม่หายไปทั้งหมด อาจจะกระทบกับบางส่วนเท่านั้น และอีกทั้ง AI จะช่วยเปิดโอกาสให้เราเป็น โปรแกรมเมอร์ที่มีคุณภาพ มากขึ้น เพราะมีเครื่องมือที่ใช้งานได้สะดวก ทำให้เราสามารถทำงานเหมือนมีหลายคนช่วยเหลือ และเราก็จะต้องเข้าใจวิธีการสั่งงานต่างๆนั้นเอง
- Tags:
- ai
- โปรแกรมเมอร์
- ai-แทนโปรแกรมเมอร์
- ai-กับอาชีพโปรแกรมเมอร์
- โปรแกรมเมอร์ตกงาน
- อนาคตโปรแกรมเมอร์
- ai-ส่งผลโปรแกรมเมอร์
- ai-vs-programmers
- ai-แทนที่มนุษย์
- ai-job-impact
- ai-job-threat
- เทคโนโลยีและงาน
- ai-programming
- งานโปรแกรมเมอร์
- โปรแกรมเมอร์อนาคต
- อนาคตอาชีพ
- ai-ส่งผลอาชีพ
- ai-takeover
- โปรแกรมเมอร์-ตลาดงาน
- ai-และงานโปรแกรมเมอร์
- ai-job-security
- ai-และโปรแกรมเมอร์