![asplitworkswork_logo]()
![asplitworkswork_logo]()
จากบทความเรื่อง
Story Weight Reduction Toolkit
ทำการอธิบายวิธีการแบ่งแยกงานใหญ่ ๆ ออกเป็นงานย่อย ๆ
ซึ่งทำให้เราสามารถทำการประเมินได้ง่ายขึ้น
ซึ่งทำให้เราสามารถจัดการได้ง่ายขึ้น
ซึ่งทำให้เราสามารถพัฒนาระบบงานได้ดีขึ้น
จึงนำมาแปลและสรุปสิ่งที่น่าสนใจไว้นิดหน่อย
เริ่มจากสาเหตุหลักของแต่ละงานที่มีขนาดใหญ่ (Bloated Stories) นำพาไปสู่ปัญหามากมาย
ประกอบไปด้วย
- แต่ละงานประกอบด้วยงานต่าง ๆ มากจนเกินไป
- ทีมพัฒนาไม่มีความรู้ในงานนั้น ๆ เพียงพอ
- แต่ละงานต้องพัฒนาอยู่บนเทคโนโลยีใหม่ ๆ ซึ่งไร้ความแน่นอน
- แต่ละงานที่ทำนั้น ลูกค้ายังไม่เข้าใจชัดเจนเลยว่าต้องการอะไรกันแน่
ดังนั้นในบทความจึงแนะนำวิธีการเพื่อช่วยลดปัญหาเรียกว่า
SSST
ทำให้ขนาดของแต่ละงานมีขนาดเล็กลง
นั่นคือทำให้สามารถประเมินและจัดการได้ดีขึ้น
โดยที่
SSST ประกอบไปด้วย
- 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