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

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

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

การประมาณเวลาจุดประกายความไม่เห็นด้วยครั้งใหญ่

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

แม้แต่โปรเจกต์ที่ดูเหมือนพื้นฐานก็ยังถูกวิพากษ์วิจารณ์เรื่องการประมาณเวลา นักพัฒนาคนหนึ่งตั้งคำถามว่าทำไมการสร้าง hash map ถึงใช้เวลาเต็มหนึ่งสัปดาห์ โดยสังเกตว่าใน C มันซับซ้อนกว่าการสร้าง growable array เพียงเล็กน้อยเท่านั้น ในทำนองเดียวกัน ข้อเสนอแนะที่ว่า POSIX shell สามารถทำเสร็จได้ในสามวันก็ทำให้ผู้ที่คุ้นเคยกับความซับซ้อนของ shell ต้องขมวดคิ้ว

โปรเจกต์โปรแกรมมิ่งสำหรับฝึกฝนยอดนิยม จัดอันดับตามความยาก (จากการอพยพของชุมชน)

ประเภทโปรเจกต์ ความยากเดิม เวลาเดิม ความเห็นจากชุมชน
Hash Map 4/10 1 สัปดาห์ "ยากกว่า growable array ใน C เพียงเล็กน้อยเท่านั้น"
GameBoy Emulator 6/10 2 สัปดาห์ มีการตั้งคำถามเปรียบเทียบกับความซับซ้อนของ compiler
Simple Compiler 8/10 3 เดือน หลายคนคิดว่าง่ายกว่า emulator
POSIX Shell 4/10 3 วัน "องค์ประกอบของความยากและเวลากระจัดกระจายไปหมด"
CHIP-8 Emulator 3/10 3 วัน ที่ชื่นชอบของชุมชนสำหรับผู้เริ่มต้น

ชุมชนแบ่งปันไอเดียโปรเจกต์ทางเลือก

นอกจากการวิพากษ์วิจารณ์รายการเดิมแล้ว นักพัฒนายังมีส่วนร่วมในการแบ่งปันโปรเจกต์เพื่อความสนุกที่พวกเขาชื่นชอบ การเพิ่มเติมที่ได้รับความนิยมรวมถึง game bot แบบ GUI การพัฒนา Raft consensus algorithm, ray casting engine และระบบจัดเก็บข้อมูล B-tree หรือ LSM-tree CHIP-8 emulator ยังคงได้รับการยกย่องว่าเป็นโปรเจกต์ที่เหมาะสำหรับผู้เริ่มต้น โดยสมาชิกชุมชนเน้นย้ำถึง test suite ที่มีอยู่ซึ่งช่วยตรวจสอบการพัฒนาได้อย่างรวดเร็ว

สิ่งที่ฉันชอบเกี่ยวกับโปรเจกต์เหล่านี้คือคุณสามารถทำให้มันง่ายหรือซับซ้อนได้ตามที่ต้องการ

ไอเดียโปรเจกต์เพิ่มเติมจากชุมชน:

  • บอทที่มีส่วนติดต่อผู้ใช้แบบกราฟิกสำหรับวิดีโอเกม
  • การพัฒนาอัลกอริทึม Raft consensus
  • เอนจิน Ray casting
  • เอนจินจัดเก็บข้อมูลแบบ B-tree หรือ LSM-tree
  • Behavior trees สำหรับ AI
  • การสร้างภูมิประเทศแบบ Procedural
  • การรวมเข้ากับเอนจินสคริปต์ ( Lua )
  • เอนจินเกม RPG แบบผู้เล่นหลายคนในระบบ 2D
  • เกมฟิสิกส์แบบไม่มีผู้เล่น

การประยุกต์ใช้ในโลกจริงขับเคลื่อนความสนใจ

โปรแกรมเมอร์หลายคนแบ่งปันเรื่องราวว่าโปรเจกต์เพื่อความสนุกของพวกเขาพัฒนาไปเป็นเครื่องมือที่ใช้งานได้จริงอย่างไร นักพัฒนาคนหนึ่งอธิบายการดูแล backup script แบบกำหนดเองมา 20 ปี ซึ่งเดิมทีได้แรงบันดาลใจจากข้อมูลเชิงลึกเกี่ยวกับการใช้ rsync และ hard link สำหรับ snapshot backup แม้จะมีทางเลือกอื่นที่มีอยู่แล้ว แต่ความพึงพอใจส่วนบุคคลและโอกาสการเรียนรู้อย่างต่อเนื่องทำให้โปรเจกต์นี้ยังคงมีชีวิตและมีประโยชน์

การอภิปรายเผยให้เห็นรูปแบบทั่วไปที่นักพัฒนาเริ่มต้นด้วยการพัฒนาแบบง่ายๆ และค่อยๆ เพิ่มความซับซ้อน ไม่ว่าจะเป็น 2D multiplayer RPG engine ที่รวมระบบหลายระบบเข้าด้วยกัน หรือการจำลองฟิสิกส์ที่เติบโตขึ้นเป็นปีๆ โปรเจกต์เหล่านี้ทำหน้าที่เป็นห้องปฏิบัติการเรียนรู้อย่างต่อเนื่อง

บริบทที่กว้างขึ้นของความสุขในการเขียนโปรแกรม

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

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

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