25 คะแนน โดย GN⁺ 2025-02-19 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

> “คิดว่าสร้างสิ่งนั้นจะใช้เวลานานแค่ไหน?”

  • นี่คือคำถามที่นักพัฒนาซอฟต์แวร์ทั้งกลัวและไม่ชอบ และเครื่องซักผ้าของผมก็ช่วยเตือนให้ผมกลับมาคิดเรื่องนี้อีกครั้ง
  • ความยากของการประเมินความพยายามของซอฟต์แวร์ (Software Effort Estimation) ที่เครื่องซักผ้าสอนให้รู้
    • ระหว่างย้ายเข้าบ้านใหม่ การติดตั้งเครื่องซักผ้ากลับใช้เวลานานกว่าที่คาดไว้มาก
    • ปกติเป็นงานที่น่าจะเสร็จได้ใน 10 นาที แต่ครั้งนี้กลับใช้เวลา 4 ชั่วโมง
    • มีอุปสรรค (blocker) ที่คาดไม่ถึงเกิดขึ้นล่วงหน้าไม่ได้ ทำให้การติดตั้งล่าช้า
    • ระหว่างกระบวนการนี้จึงได้ตระหนักว่าสิ่งนี้คล้ายกับเหตุผลที่ทำให้การประเมินความพยายามในการพัฒนาซอฟต์แวร์เป็นเรื่องยาก
  • อุปสรรคและวิธีแก้
    • อุปสรรค 1: ไม่มีรูสำหรับต่อไฟ จึงไม่สามารถเสียบเครื่องซักผ้าเข้ากับแหล่งจ่ายไฟได้
      • วิธีแก้ 1: ซื้อโฮลซอขนาด 60 มม. จากร้านฮาร์ดแวร์เพื่อเจาะรู
    • อุปสรรค 2: สว่านสำหรับผู้บริโภคทั่วไปไม่สามารถใช้กับโฮลซอได้
      • วิธีแก้ 2: ยืมสว่านที่แรงกว่ามาใช้
    • อุปสรรค 3: สายระบายน้ำและสายจ่ายน้ำสั้นกว่าที่คาดไว้เมื่อใช้กับบ้านใหม่
      • วิธีแก้ 3: ตั้งใจจะซื้อสายต่อเพิ่มแบบขยายได้ แต่กลับพบว่าสายเดิมไม่สามารถต่อขยายได้ จึงต้องกลับไปซื้อสายใหม่อีกครั้ง
    • อุปสรรค 4: ฝาโลหะที่ยึดแน่นอยู่กับก๊อกน้ำถอดไม่ออก
      • วิธีแก้ 4: ซื้อประแจที่ใหญ่ขึ้นเพื่อถอดฝาออก
    • อุปสรรค 5: spigot ของท่อระบายน้ำถูกผนัง PVC ปิดกั้นอยู่
      • วิธีแก้ 5: ใช้สว่านเจาะผนัง PVC แล้วต่อสายระบายน้ำเข้าไป
    • หลังจากไปร้านฮาร์ดแวร์ทั้งหมด 5 รอบและทำงานอยู่ 4 ชั่วโมง ก็สามารถติดตั้งเครื่องซักผ้าได้ตามปกติ
  • ทำไมการประเมินความพยายามในการพัฒนาซอฟต์แวร์จึงยาก
    • แม้จะเป็นงานที่คุ้นเคย แต่หากสภาพแวดล้อมต่างออกไป ก็มีโอกาสสูงที่จะเกิดตัวแปรที่ไม่คาดคิด
    • เหตุผลที่การประเมินจากประสบการณ์ในอดีตมักผิดพลาด ก็เพราะมี “สิ่งไม่รู้ที่เราไม่รู้ (Unknown Unknowns)” อยู่
    • ตัวอย่างบางส่วน:
      • ไลบรารีที่ตั้งใจจะใช้ไม่ได้รับการบำรุงรักษาอีกต่อไป จนต้องลงมือแก้เอง
      • เครื่องมือพัฒนาอัปเดตแล้ว ทำให้วิธีเดิมใช้ไม่ได้อีกต่อไป
      • เมื่อเวอร์ชันของ OS เปลี่ยนไป dependency เดิมอาจทำงานไม่ปกติ
      • มีการเพิ่มคอมโพเนนต์ใหม่ในอินฟราสตรักเจอร์ แต่พฤติกรรมจริงกลับไม่เป็นไปตามที่คาด
  • บทสรุป
    • ประสบการณ์ในบ้านใหม่ครั้งนี้แสดงให้เห็นว่าการประเมินความพยายามในการพัฒนาซอฟต์แวร์นั้นยากเพียงใด
    • ก่อนเริ่มพัฒนา เราควรตรวจสอบความต้องการให้ละเอียดที่สุดเท่าที่ทำได้ แต่การเกิด blocker ที่ไม่คาดคิดก็เป็นสิ่งหลีกเลี่ยงไม่ได้
    • แม้โปรเจกต์ซอฟต์แวร์จะดูเหมือนงานที่คุ้นเคย แต่ในสภาพแวดล้อมใหม่ก็อาจเกิดความท้าทายที่แตกต่างไปอย่างสิ้นเชิง
    • ดังนั้นจึงจำเป็นต้องปรับตารางเวลาและทรัพยากรอย่างยืดหยุ่นโดยคำนึงถึงตัวแปรเหล่านี้

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

 
GN⁺ 2025-02-19
ความคิดเห็นบน Hacker News
  • การประเมินงานซอฟต์แวร์ก็เหมือนเรื่องตลก เพราะไม่มีบทลงโทษสำหรับการประเมินต่ำเกินไป

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

    • ลูกค้าอาจไม่รู้ว่าตัวเองต้องการอะไรจริง ๆ ต่อให้ถามล่วงหน้ามากแค่ไหนก็อาจไม่ได้ข้อมูลนี้
    • ควรปฏิเสธอย่างเด็ดขาดไม่ให้คิดเงินเป็นรายชั่วโมงแต่เรียกเก็บแบบเป็นโปรเจกต์
  • โปรเจกต์ DIY ก็เป็นแบบนี้เสมอ

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

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

    • ไม่ใช่ว่า 90% เป็นงานง่าย แต่ 90% คือการหลงทาง
    • บ่อยครั้งเป็นการทำงานเรื่องเดิมซ้ำ ๆ สำหรับผลิตภัณฑ์เดียวกันในหลายบริษัท
  • ทำให้นึกถึงคำพูดที่ว่า "ความจริงมีรายละเอียดที่น่าทึ่ง"

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

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

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

    • เหตุผลที่ช่างประปาคิด 300 ดอลลาร์ทั้งที่ใช้เวลาไม่กี่นาทีในการต่อเครื่องซักผ้า ก็เพราะเขารู้วิธีเจาะรูที่ท่อน้ำทิ้ง
  • ถ้าไม่รู้ว่าจะต้องถามคำถามอะไรบ้างก่อนเริ่มโปรเจกต์ซอฟต์แวร์ ควรทำอย่างไร?

    • ฉันไม่ได้คัดค้านการมองงานสำรวจเป็นแบบฝึกหัดในการเก็บ requirement
    • ถ้าไปร้านฮาร์ดแวร์สักรอบแล้วได้ลิสต์ของที่ต้องซื้อก้อนใหญ่พร้อมชุดคำถามปลายเปิด ก็จะทำงานต่อได้มีประสิทธิภาพและง่ายขึ้นมาก