asplitworkswork_logo
จากบทความเรื่อง Story Weight Reduction Toolkit
ทำการอธิบายวิธีการแบ่งแยกงานใหญ่ ๆ ออกเป็นงานย่อย ๆ
ซึ่งทำให้เราสามารถทำการประเมินได้ง่ายขึ้น
ซึ่งทำให้เราสามารถจัดการได้ง่ายขึ้น
ซึ่งทำให้เราสามารถพัฒนาระบบงานได้ดีขึ้น
จึงนำมาแปลและสรุปสิ่งที่น่าสนใจไว้นิดหน่อย

เริ่มจากสาเหตุหลักของแต่ละงานที่มีขนาดใหญ่ (Bloated Stories) นำพาไปสู่ปัญหามากมาย
ประกอบไปด้วย

  • แต่ละงานประกอบด้วยงานต่าง ๆ มากจนเกินไป
  • ทีมพัฒนาไม่มีความรู้ในงานนั้น ๆ เพียงพอ
  • แต่ละงานต้องพัฒนาอยู่บนเทคโนโลยีใหม่ ๆ ซึ่งไร้ความแน่นอน
  • แต่ละงานที่ทำนั้น ลูกค้ายังไม่เข้าใจชัดเจนเลยว่าต้องการอะไรกันแน่

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

  1. Split
  2. Spike
  3. Stub
  4. 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