จากบทความเรื่อง Story Weight Reduction Toolkit
ทำการอธิบายวิธีการแบ่งแยกงานใหญ่ ๆ ออกเป็นงานย่อย ๆ
ซึ่งทำให้เราสามารถทำการประเมินได้ง่ายขึ้น
ซึ่งทำให้เราสามารถจัดการได้ง่ายขึ้น
ซึ่งทำให้เราสามารถพัฒนาระบบงานได้ดีขึ้น
จึงนำมาแปลและสรุปสิ่งที่น่าสนใจไว้นิดหน่อย
เริ่มจากสาเหตุหลักของแต่ละงานที่มีขนาดใหญ่ (Bloated Stories) นำพาไปสู่ปัญหามากมาย
ประกอบไปด้วย
- แต่ละงานประกอบด้วยงานต่าง ๆ มากจนเกินไป
- ทีมพัฒนาไม่มีความรู้ในงานนั้น ๆ เพียงพอ
- แต่ละงานต้องพัฒนาอยู่บนเทคโนโลยีใหม่ ๆ ซึ่งไร้ความแน่นอน
- แต่ละงานที่ทำนั้น ลูกค้ายังไม่เข้าใจชัดเจนเลยว่าต้องการอะไรกันแน่
- Split
- Spike
- Stub
- Time box
1. Split
เป็นวิธีการพื้นฐานสำหรับแบ่งแยกงานใหญ่ ๆ ออกเป็นงานย่อย ๆ เนื่องจากในงานใหญ่ ๆ มักจะมี scenario/flow การทำงานต่าง ๆ มากมาย ทั้ง normal case และ special case โดยปกติเรามักจะรวมสิ่งต่าง ๆ เหล่านี้ไว้ในเพียงงานเดียว !! ดังนั้นแนะนำให้แยกซะ งานที่แยกออกมานั้นมันต้องมีคุณค่าทาง business ด้วยนะ ซึ่งเรื่องของการ Split งานนั้นมันคือสิ่งที่ต้องเรียนรู้และปรับปรุงอย่างต่อเนื่อง เพื่อให้ได้งานที่เหมาะสมกับทีมพัฒนา2. Spike
ในแต่ละงานนั้นจะมีรายละเอียดมากมาย รวมทั้งสิ่งที่เราไม่รู้ ไม่เข้าใจ หรือไม่รู้จักมาก่อน ทั้งเรื่องทาง business domain ต่าง ๆ ทั้งเรื่องของ techical skill ต่าง ๆ ดังนั้นสิ่งที่ต้องทำก่อนคือ Spike สิ่งต่าง ๆ ที่เราไม่รู้ เพื่อช่วยทำให้การประเมิน และ วางแผนงานง่ายและชัดเจนขึ้น เพื่อช่วยทำให้สามารถแยกงานใหญ่ออกมาเป็นงานย่อย ๆ ได้ดีขึ้น Spike คือ การทดลองศึกษาและลงมือทำ สิ่งต่าง ๆ ที่เราไม่รู้จัก ไม่เข้าใจ ไม่เคยลงมือทำ ในกรอบเวลาที่ชัดเจน เพื่อช่วยทำให้เราเข้าใจมากขึ้นสิ่งที่ต้องรู้ก่อนคือ มีอะไรบ้างที่คุณไม่รู้
3. Stub
ในบางส่วนของงานต่าง ๆ นั้น เราอาจจะไม่สามารถควบคุมการทำงานได้ เช่นระบบการทำงานรอบข้างที่ต้องทำงานด้วย ระบบเกี่ยวกับเวลา ระบบเกี่ยวกับการ random ค่า จากการทำงานมาพบว่าเป็นปัญหาที่ทีมพัฒนา software เจอเยอะมาก ๆ ดังนั้นสิ่งที่ต้องทำคือ การจำลองสิ่งเหล่านั้นขึ้นมา จะเรียกว่า การ Stub และ Fake เพื่อทำให้การพัฒนาทำได้ง่ายขึ้น เพื่อทำให้เราสามารถแบ่งงานได้ง่ายขึ้น แต่ถ้ายังไม่รู้ว่าจะทำอย่างไร ก็ให้ทำการ Spike ก่อนก็ได้ แต่ก็อย่าใช้ Stub เพียงอย่างเดียว ดังนั้นในการวางแผนงานและการแยกงาน ต้องมีส่วนการ integrate เข้ากับระบบงานจริง ๆ ด้วยนะ ห้ามลืม ห้ามพลาดโดยเด็ดขาด4. Time box
ในบางครั้งคุณต้องการวางแผน ในบางครั้งคุณต้องการแยกงานใหญ่เป็นงานเล็ก ๆ ในบางครั้งคุณต้องการ Spike งานบางอย่าง ซึ่งสิ่งต่าง ๆ เหล่านี้ควรทำอยู่ภายในกรอบเวลาที่กำหนด เพื่อทำให้เรารู้ และ เข้าใจในสิ่งที่กำลังทำ ว่ามันเป็นอย่างไร ว่ามีปัญหาอะไร ว่าต้องการอะไร ว่าต้องปรับปรุงอะไรเพิ่มเติม ทำให้เราเห็น progress ของการพัฒนา ทำให้เราเห็นจริง ๆ ว่าสิ่งที่กำลังพัฒนามันใช่หรือไม่โดยรวมแล้วเราจำเป็นต้องใช้ทั้ง 4 วิธีด้วยกัน ซึ่งจะช่วยทำให้เราสามารถแบ่งงานใหญ่ ๆ ออกเป็นงานย่อย ๆ ได้ดีขึ้นReference Websites http://agilecoach.typepad.com/agile-coaching/2010/09/ideas-for-slicing-user-stories.html http://blog.odd-e.com/yilv/2015/07/split-work-and-people.html