นักพัฒนาถกเถียงการใช้ LLM ขณะที่ความสุขในการเขียนโปรแกรมกลับคืนมาผ่านโปรเจกต์ส่วนตัว

ทีมชุมชน BigGo
นักพัฒนาถกเถียงการใช้ LLM ขณะที่ความสุขในการเขียนโปรแกรมกลับคืนมาผ่านโปรเจกต์ส่วนตัว

ชุมชนนักเขียนโปรแกรมกำลังมีความสนใจที่เพิ่มขึ้นในความสุขของการเขียนโค้ดผ่านโปรเจกต์ส่วนตัวเพื่อความสนุก พร้อมกับต่อสู้กับคำถามว่าเครื่องมือปัญญาประดิษฐ์ควรมีบทบาทอย่างไรในกระบวนการเรียนรู้ การอภิปรายล่าสุดได้เน้นย้ำทั้งประโยชน์ของการสร้างซอฟต์แวร์เพื่อความเพลิดเพลินอย่างแท้จริง และการถกเถียงที่ยังคงดำเนินต่อไปเกี่ยวกับการใช้ LLM ในการศึกษาการเขียนโปรแกรม

LLM ในฐานะเครื่องมือค้นหา เทียบกับ ตัวสร้างโค้ด

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

อย่างไรก็ตาม ชุมชนยังคงแบ่งแยกในเรื่องว่า LLM ช่วยหรือขัดขวางกระบวนการเรียนรู้ บางคนโต้แย้งว่าการให้ AI สร้างโค้ดพื้นฐานช่วยเร่งการพัฒนาและขจัดอุปสรรคที่น่าเบื่อ โดยเฉพาะในพื้นที่ที่อยู่นอกความเชี่ยวชาญของพวกเขา เช่น การจัดรูปแบบ CSS หรือ shell scripting คนอื่นๆ กังวลว่าการพึ่พาโค้ดที่สร้างขึ้นมากเกินไปจะป้องกันไม่ให้นักพัฒนาเข้าใจแนวคิดพื้นฐานอย่างแท้จริง และทำข้อผิดพลาดที่หลีกเลี่ยงไม่ได้ซึ่งนำไปสู่การเรียนรู้ที่ลึกซึ้งยิ่งขึ้น

รูปแบบการใช้งาน LLM ที่พบบ่อยในหมู่นักพัฒนา:

  • ทดแทนเครื่องมือค้นหา: ใช้คำสั่งเช่น "ข้อดีและข้อเสียของ X เทียบกับ Y" พร้อมขอข้อมูลอ้างอิง
  • สร้างโค้ดพื้นฐาน: สร้างเลย์เอาต์ CSS ไฟล์การตั้งค่า และการเชื่อมต่อ API
  • อธิบายแนวคิด: ขอภาพรวมระดับสูงที่เน้น "ทำไม" มากกว่า "อย่างไร"
  • ผู้ช่วยแก้ไขข้อผิดพลาด: ขอความช่วยเหลือเกี่ยวกับข้อความแสดงข้อผิดพลาดและ API ที่ไม่คุ้นเคย
  • การสอนแบบ Socratic: ขอการเรียนรู้แบบมีคำแนะนำแทนการให้คำตอบที่สมบูรณ์
  • ตรวจสอบสถาปัตยกรรม: ขอข้อเสนอแนะเกี่ยวกับการตัดสินใจออกแบบระบบ

กลยุทธ์การจัดการเวลา:

  • หนึ่งสัปดาห์ต่อโปรเจกต์สูงสุดเพื่อป้องกันการขยายขอบเขต
  • เซสชันเขียนโค้ด 2-3 ชั่วโมงต่อวันเพื่อความก้าวหน้าที่ยั่งยืน
  • กฎ "สามครั้ง": เริ่มเซสชัน LLM ใหม่หลังจากพยายามล้มเหลวสามครั้ง
  • มุ่งเน้นวัตถุประสงค์การเรียนรู้เดียวต่อโปรเจกต์

คุณค่าของการพัฒนาแบบจำกัดข้อกำหนด

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

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

โปรเจกต์ส่วนตัว เทียบกับ ซอฟต์แวร์ที่ใช้งานจริง

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

การทำงานกับจักรยานของคุณเป็นเรื่องสนุก การทำงานกับจักรยานที่คุณต้องใช้ปั่นไปทำงานพรุ่งนี้เป็นเรื่องเครียด

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

การสร้างความเข้าใจผ่านการนำไปใช้

การอภิปรายเสริมคุณค่าทางการศึกษาของการนำโซลูชันที่มีอยู่มาใช้ตั้งแต่เริ่มต้น แทนที่จะเน้นไปที่การสร้างซอฟต์แวร์ใหม่ นักพัฒนาจำนวนมากพบว่าการสร้างเครื่องมือที่คุ้นเคยใหม่ เช่น text editor ฐานข้อมูล ห或ือ game engine ให้ข้อมูลเชิงลึกที่ลึกซึ้งเกี่ยวกับวิธีการทำงานของระบบเหล่านี้จริงๆ แนวทางนี้ช่วยให้นักพัฒนาเข้าใจการตัดสินใจในการออกแบบและการแลกเปลี่ยนที่ไม่ชัดเจนเมื่อเพียงแค่ใช้เครื่องมือที่มีอยู่

ชุมชนเน้นย้ำว่าโปรเจกต์ส่วนตัวทำหน้าที่เป็นก้าวย่างไปสู่งานที่ซับซ้อนมากขึ้น ความรู้ที่ได้จากการนำ parser หรือ physics engine ง่ายๆ มาใช้มักพิสูจน์ให้เห็นคุณค่าเมื่อต้องรับมือกับความท้าทายที่คล้ายกันแต่ซับซ้อนกว่าในสภาพแวดล้อมมืออาชีพ โปรเจกต์เหล่านี้สร้างรากฐานของความเข้าใจเชิงปฏิบัติที่สามารถนำไปใช้ในบริบทและเทคโนโลยีที่แตกต่างกัน

หมวดหมู่โปรเจกต์ Toy ยอดนิยมแบ่งตามระดับความยาก (ประมาณการของผู้เขียน):

ประเภทโปรเจกต์ ความยาก (1-10) ประมาณการเวลา พื้นที่การเรียนรู้หลัก
Hash Map 4/10 1.5 วัน โครงสร้างข้อมูล, อัลกอริทึม
CHIP-8 Emulator 3/10 3-6 วัน สถาปัตยกรรมคอมพิวเตอร์, ชุดคำสั่ง
Chess Engine 5/10 2-6 วัน ทฤษฎีเกม, อัลกอริทึมการค้นหา
Physics Engine 5/10 1 สัปดาห์ คณิตศาสตร์, การตรวจจับการชน
Text Editor 5/10 2-6 สัปดาห์ ส่วนติดต่อผู้ใช้, การประมวลผลข้อความ
NES/Gameboy Emulator 6/10 2 สัปดาห์ การจำลองฮาร์ดแวร์, กราฟิก
Programming Language Interpreter 6/10 1-2 สัปดาห์ การแยกวิเคราะห์, การออกแบบภาษา
OS Kernel 7/10 2 เดือน การเขียนโปรแกรมระบบ, ฮาร์ดแวร์
C-like Compiler 8/10 3-6 สัปดาห์ คอมไพเลอร์, การสร้างโค้ด
GUI Toolkit 8/10 2-3 สัปดาห์ การออกแบบส่วนติดต่อผู้ใช้, กราฟิก

บทสรุป

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

อ้างอิง: Writing Toy Software Is A Joy