[เสพแล้วเล่า] ตอนที่ 2 — Agile Software Development By Siam Chamnankit (SCK)
ตอนที่ 2 นี้จะบอกเล่าต่อถึงเรื่องของการทำงานเป็น Sprint นั้นต้องทำอย่างไร มีวิธีและขั้นตอนอย่างไรบ้าง รวมถึงการเตรียมการก่อนเริ่ม Sprint ด้วย และทั้งหมดที่เขียนขึ้นในบทความนี้ เกิดขึ้นจากการเรียนรู้ผ่าน youtube ของสยามชำนาญกิจในหัวข้อเรื่อง Agile Software Development ค่ะ
warning! — บทความนี้เกิดขึ้นจากการทำความเข้าใจด้วยตัวของผู้เขียนเองเท่านั้น
จากตอนที่ 1 เราให้ความหมายของ The Sprint ไว้ดังรูป
คำนวน Sprint และกำหนด Definition of Done ตอนไหน?
ระยะเวลาของ Project หรือ Release (ยกตัวอย่างเช่น กำหนด 8 เดือน) ประกอบด้วย
ช่วงต้น Project หรือ ช่วงต้น Release (2 เดือน)
ช่วงดำเนิน Project หรือ ช่วงดำเนิน Release (5 เดือน)
ช่วงท้าย Project หรือ ช่วงท้าย Release (1 เดือน)
เราจะเริ่ม Sprint ที่ช่วงต้น Project หรือ ก่อนเริ่มช่วงต้น Project ก็ได้ (แนะนำว่าก่อนเริ่มช่วงต้น Project ดีที่สุด) ซึ่งเราจะเริ่มคำนวณจำนวน Sprint และกำหนดจำนวน Sprint ที่ก่อนเริ่มช่วงต้น Project/Release และกำหนด 1 Sprint == ระยะเวลา 10 วันทำการ
ช่วงดำเนิน Project หรือ ช่วงดำเนิน Release (5 เดือน) จะมีกี่ Sprint?
จาก 1 เดือน == 20 วันทำการ
จะได้ 5 เดือน == 100 วันทำการ
และ 1 Sprint == ระยะเวลา 10 วันทำการ
ดังนั้น 100 วันทำการ หารด้วย ระยะเวลาต่อ Sprint 10 วัน == 100/10 == 10
ช่วงดำเนิน Project จะมีทั้งหมด 10 Sprints
ถัดมาจะกำหนดสิ่งที่ต้องทำระหว่าง Sprint ในวันที่ 2 — วันที่ 8 (9) ของ Sprint
- Potentially Releasable Product Increment
- Useable
- Done (Definition of Done)
แล้วใครเป็นคนกำหนดสิ่งเหล่านี้? → คำตอบคือ Product Owner และ Development Team ทั้งการกำหนด Sprint และกำหนดสิ่งที่ต้องทำระหว่าง Sprint ทั้งหมด
แต่ถ้า Product Owner และ Development Team ทำไม่เป็น ไม่รู้ว่าจะต้องกำหนดขึ้นมายังไง ดังนั้นจะเป็นหน้าที่ของ Scrum Master
หน้าที่และความรับผิดชอบของ Scrum Master
ให้ความรู้ + ทำให้ดูเป็นตัวอย่าง + พาทำ + นำพา + ให้คำปรึกษา
และถ้าเราจะต้องทำการผลิตอะไรสักอย่างออกมาให้ได้ ในบริบทของ Scrum ทำงานเป็น Sprint จะโยน Requiremens เข้าไปหนึ่งบรรทัดเข้าไปใน Sprint แล้วจะได้ของออกมาเลยมันเป็นไปไม่ได้ จึงต้องมีการเตรียมการก่อน ซึ่ง Scrum ถูกออกแบบมาให้เป็นแบบนี้
การเตรียมการก่อนเริ่ม Sprint
จากการศึกษาของ Jeff Sutherland ที่บริษัท Toyota ใน Line การผลิตรถยนต์ พบว่า การที่ปลายทางจะได้รถยนต์ออกมา พวกเขาจะต้องเตรียม Blueprint ชิ้นส่วนหรืออะไหล่ต่าง ๆ ก่อนที่นำเข้าไปใน Line การผลิตรถยนต์ เปรียบเทียบกับ Scrum ทำงานเป็น Sprint ได้ดังรูป
ดังนั้น เราจะเปรียบได้ว่า Blueprint ชิ้นส่วนหรืออะไหล่ต่าง ๆ (สีดำ) คือ การเตรียมการก่อนจะเริ่มแต่ละ Sprint นั่นคือต้องมีการเตรียมความพร้อมของ ความต้องการ (Requirements) และ สิ่งที่ใช้ในแต่ละขั้นตอนการเปลี่ยนไปเป็นซอฟต์แวร์ (Software Development Blueprint) ซึ่งใน Scrum จะมี Workshop หนึ่งตัวที่เรียกว่า Product Backlog Refinement Workshops โดยมีการกำหนดกรอบระยะเวลาไว้ที่ 10% ของความยาว Sprint
Timebox ของ Product Backlog Refinement (PBR) Workshops
จาก 1 Sprint == ระยะเวลา 10 วันทำการ
10% ของความยาว Sprint คือ (10/100)*10 เท่ากันกับ 1 วันทำการ
ดังนั้น 1 วันทำการ เท่ากันกับ 8 ชั่วโมงทำงาน
Product Backlog (Artifact) คือ ที่เก็บทุกสิ่งอย่างที่เราจะผลิตซอฟต์แวร์หรือผลิตภัณฑ์ขึ้นมา ประกอบด้วย Product Backlog Item หลาย ๆ ตัวรวมกัน
Product Backlog Item จะต้องมีรายละเอียดทั้งหมด คือ
- Description คำอธิบาย หรือ รายละเอียด
- Value == Outcome ต้องรู้ว่าทำไปแล้วจะได้ประโยชน์อะไร
- Estimate การประมาณการระยะเวลาในการผลิต
- Order/Priority กำหนดว่าทำอะไรก่อนหลัง
การทำให้ Product Backlog Item มีรายละเอียดครบทั้ง 4 ข้อ
โดยใน Scrum ระบุไว้ว่าจะต้องทำให้เกิดขึ้นใน Product Backlog Refinement Workshops แล้วถึงจะนำรายละเอียดทั้งหมดกลับเข้าไปแทนที่ที่ Product Backlog Item แสดงความสัมพันธ์ดังรูป
ตัวอย่างการทำ Product Backlog Refinement
Action ที่ 1 : Adding Detail → จะได้ Description + Value == Outcome
Action ที่ 2 : Estimate → จะได้ Description + Value == Outcome + Estimate
Action ที่ 3 : Ordering → Description + Value == Outcome + Estimate + Order/Priority
นี่คือสิ่งที่จะต้องเตรียมการก่อนเข้า Sprint ที่จะต้องผลิตในระยะเวลา 2–8(9) วัน และโดยส่วนใหญ่เขาจะแนะนำให้จัดเตรียม Product Backlog Items ไว้ล่วงหน้าประมาณ 2 Sprints เสมอ ดังนั้นเราควรจะเตรียมการไว้ทีช่วงต้นของโครงการทั้ง Sprint ที่ 1 และ Sprint ที่ 2 ซึ่งหมายความว่า ถ้าเริ่มเข้า Sprint ที่ 1 เราก็ต้องจัดเตรียม Product Backlog Items ของ Sprint ที่ 3 และ Sprint ที่ 4 ไว้นั่นเอง ดังนั้นเราจะจัดเตรียมของอย่างนี้ไปเรื่อย ๆ จนครบทุก Product Backlog Items
ตัวอย่าง Product Backlog Refinement Workshop
สมมติว่ามีข้อมูล Product Backlog Item (PBI) ตั้งต้นมาให้ดังนี้
Product Backlog Item (PBI) คือ ลูกค้าสามารถฝากเงินสดที่ร้านสะดวกซื้อผ่านทาง Mobile Application
Value == Outcome คือ เพิ่มยอดการฝากเงินสดต่อวัน + 30% คิดเป็นจำนวนที่เพิ่มขึ้น 300 รายการต่อวัน จากร้านสะดวกซื้อ 20 สาขา
Action ที่ 1 : Adding Detail
จาก “ลูกค้าสามารถฝากเงินสดที่ร้านสะดวกซื้อผ่านทาง Mobile Application”
- หาว่ามีเงื่อนไขทางธุรกิจอะไรบ้าง?
2. ออกแบบ Test Scenarios ที่ใช้ในการตรวจรับ End-to-End Biz Process Tests (Functional Tests)
- End-to-End Biz Process Test Scenarios ฝากเงินสำเร็จ
- End-to-End Biz Process Test Scenarios ฝากเงินไม่สำเร็จ
3. ออกแบบ Test Scenarios ที่ใช้ในการตรวจรับ Non Functional Tests
- Performance Test Scenarios
- Security Test Cases หรือ Test Scenarios
4. จะได้ End-to-End Biz Process
- User Interface (UI) วิธีการ/รูปแบบที่ ข้อมูล ถูกนำเข้ามาประมวลผล และถูกนำเสนอ
- APIs วิธีการ/รูปแบบที่ ข้อมูล ถูกส่งออกไปใช้งาน
- Logic วิธีการ/รูปแบบที่ ข้อมูล ถูกประมวลผล
- Data Stored วิธีการ/รูปแบบที่ ข้อมูล ถูกจัดเก็บ
- External Services วิธีการ/รูปแบบที่ ขอใช้งาน ข้อมูล จากระบบอื่น ๆ เพื่อการนำมาประมวลผล และ วิธีการ/รูปแบบที่ ส่ง ข้อมูล ไปให้ระบบอื่น ๆ เพื่อการนำไปใช้งานต่อ
Action ที่ 2 : Estimate
เราจะแตก Task งานออกมา จากการทำ Adding Detail ที่ได้มาทั้งหมด และ Estimate ชั่วโมงการทำงาน ออกมาในทุก Task จะเรียกว่า Work Break Down
และอย่าลืมคิดถึง DoD ที่เราได้กำหนดไว้ในตอนแรก ว่าเราควรจะทำอะไรให้เสร็จหรือผ่านบ้าง ต้องใส่ Task งานส่วนนี้เข้าไปด้วย
เราจะได้ ผลรวมของจำนวนชั่วโมงทำงาน ที่เกิดจากการประมาณการ (Estimate) และจะทำให้เรารู้ว่าถ้าจะต้องทำให้เสร็จทั้งหมด PBI นี้ ใช้เวลากี่ Sprint ที่จะส่งมอบ
จากการคำนวณผลรวมจำนวนชั่วโมงทำงาน แล้วรู้ว่าไม่ได้จบได้ภายใน 1 Sprint เราจำเป็นต้องไปทำ Action ต่อไป นั่นคือ Ordering
Action ที่ 3 : Ordering
ยกตัวอย่างเช่น จะต้องใช้เวลา 2 Sprints ที่จะส่งมอบ เนื่องจากรายละเอียดเยอะ
เราต้องมาจัดเรียงลำดับความสำคัญว่าจะเริ่มทำส่วนไหนก่อนหลัง และให้งานทั้งหมดอยู่ภายใน 2 Sprints ที่ได้คำนวณมาจาก Action-Estimate
ขอบคุณทุกคนที่อ่านจนถึงตอนจบนะคะ แล้วพบกันใหม่ EP หน้านะคะ