การประมาณการโครงการซอฟต์แวร์: การแยกย่อยงาน
- ในการวางแผนโครงการซอฟต์แวร์ การกำหนดรายการงานให้ชัดเจนเป็นสิ่งสำคัญ
- กระบวนการแยกย่อยงานอาจดูเป็นเรื่องที่ใช้สัญชาตญาณ แต่จำเป็นต้องผ่านขั้นตอนที่เป็นรูปธรรม
- กระบวนการแยกย่อยงานรวมถึงการแบ่งโครงการออกเป็นงานย่อยที่ประกอบกันเป็นโครงการ และกำหนดรายละเอียดของแต่ละงาน
การแยกย่อยงานผ่านตัวอย่าง
- แสดงกระบวนการแยกย่อยงานผ่านตัวอย่างการสร้างตัวติดตามสตรีกสำหรับใช้งานส่วนตัว
- ตัวติดตามสตรีกนี้ใช้ติดตามกิจกรรมกลางแจ้ง คล้ายกับแอป Streaks แต่มีตัวเลือกกิจกรรมกลางแจ้งที่หลากหลายกว่า และมีฟีเจอร์ 'streak freeze' แบบเดียวกับ Duolingo
ความพยายามครั้งแรก
- เริ่มจากสเก็ตช์เพื่อมองภาพสิ่งที่จะสร้างในเชิงภาพ
- สำหรับโปรเจกต์ส่วนตัว สเก็ตช์แบบง่ายอาจเพียงพอ แต่หากต้องมอบหมายงานให้ผู้อื่นหรือต้องประเมินเวลา ก็จำเป็นต้องแยกย่อยงานให้ละเอียดกว่านี้
ความพยายามครั้งที่สอง
- วางแผนโดยขยายงานเดี่ยวออกเป็นองค์ประกอบต่าง ๆ และพิจารณาความสัมพันธ์พึ่งพากัน แต่ยังไม่กังวลกับขนาดหรือขอบเขตของแต่ละขั้นตอน
- จัดทำรายการงาน เช่น การทำ data modeling, มุมมองปฏิทิน, ปฏิทินแบบโต้ตอบ, การคำนวณและแสดงสตรีกปัจจุบัน, และการทำ streak freeze
ความพยายามครั้งที่สาม
- แบ่งขั้นตอนที่ใหญ่กว่าออกเป็นองค์ประกอบย่อยที่เล็กลงและเพิ่มรายละเอียด
- กำหนดงานอย่างละเอียดมากขึ้น เช่น data modeling, มุมมองปฏิทินแบบคงที่, มุมมองปฏิทินรายสัปดาห์แบบไดนามิก, การคำนวณและแสดงสตรีก, และ streak freeze
กระบวนการแยกย่อยงาน
- การแยกย่อยงานเป็นกระบวนการแบบโต้ตอบ โดยเริ่มคิดจากงานใหญ่แล้วบันทึกโดยแยกออกเป็นขั้นตอนเล็ก ๆ
- ตรวจสอบว่าแต่ละงานถูกนิยามไว้อย่างเพียงพอหรือไม่ หากยังไม่พอ ก็วนทำขั้นตอนเดิมเพื่อแยกย่อยให้ละเอียดขึ้น
งานคืออะไร?
- งานหมายถึงสิ่งที่ถูกนิยามไว้อย่างเพียงพอ มีความครบถ้วนในตัวเอง และก่อให้เกิดการเปลี่ยนแปลง
- งานที่ 'นิยามไว้อย่างเพียงพอ' ต้องมีภาพรวมที่ชัดเจน และงานที่ 'ครบถ้วน' ต้องครอบคลุมงานที่จำเป็นทั้งหมด
งานที่นิยามไว้อย่างเพียงพอคืออะไร?
- ผู้ที่ลงมือทำงานนั้นต้องเข้าใจการเปลี่ยนแปลงที่ต้องการ เข้าใจว่าคำว่า 'เสร็จแล้ว' มีลักษณะอย่างไร และสามารถนิยามทุกขั้นตอนที่นำไปสู่ 'เสร็จแล้ว' ได้
นี่คือทักษะและต้องอาศัยการฝึกฝน
- การแยกย่อยงานเป็นทักษะที่พัฒนาได้ผ่านการฝึกฝน
- สำหรับนักพัฒนาที่มีประสบการณ์มากอาจรู้สึกว่าเป็นเรื่องใช้สัญชาตญาณ แต่สำหรับผู้มีประสบการณ์น้อยอาจเป็นเรื่องยาก
- สิ่งสำคัญคือการขอให้มีการวางแผนโครงการในสภาพแวดล้อมการเรียนรู้ที่ปลอดภัย ให้มีการแยกย่อยงาน และให้ข้อเสนอแนะ
สรุปอัลกอริทึมการแยกย่อยงาน
- เริ่มจากรายการงาน สเก็ตช์ หรือไอเดียตั้งต้น
- ตัดสินใจว่าแต่ละรายการถูกนิยามไว้อย่างเพียงพอหรือไม่ และถ้า 'ไม่' ก็แยกย่อยงานนั้นต่อ
- ทำซ้ำจนกว่างานทั้งหมดจะถูกแยกย่อยอย่างเพียงพอ
โบนัสเรื่องการประมาณโครงการ
- เนื่องจากซีรีส์นี้ว่าด้วยเรื่องการประมาณ จึงสรุปการประมาณของโครงการนี้ด้วย
- ปริมาณงานจริงอาจถูกประเมินสูงเกินไป อาจต้องทำดีไซน์ให้ง่ายขึ้น และอัลกอริทึม 'freeze' อาจยังมีบั๊กอยู่
ความเห็นของ GN⁺
- การแยกย่อยงานเป็นทักษะหลักในด้านการจัดการโครงการและการพัฒนาซอฟต์แวร์ และบทความนี้ช่วยให้วิศวกรซอฟต์แวร์ระดับเริ่มต้นเข้าใจความสำคัญและวิธีการของการแยกย่อยงานได้
- การแยกย่อยงานเป็นสิ่งจำเป็นต่อการกำหนดขอบเขตโครงการให้ชัดเจน และการจัดการเวลาและทรัพยากรอย่างมีประสิทธิภาพ
- บทความนี้อธิบายกระบวนการแยกย่อยงานแบบเป็นขั้นตอน จึงเป็นตัวอย่างที่ดีสำหรับใช้อ้างอิงเมื่อนำไปใช้กับโครงการจริง
- ความแม่นยำของการแยกย่อยงานอาจส่งผลอย่างมากต่อความสำเร็จของโครงการ และสิ่งสำคัญคือการลดข้อผิดพลาดหรือสิ่งที่ตกหล่นให้น้อยที่สุดในกระบวนการนี้
- เครื่องมือจัดการโครงการที่มีฟีเจอร์คล้ายกัน ได้แก่ Jira, Trello และ Asana ซึ่งสามารถใช้เพื่อทำให้กระบวนการแยกย่อยงานมองเห็นภาพและจัดการได้ง่ายขึ้น
ยังไม่มีความคิดเห็น