[เสพแล้วเล่า] ตอนที่ 2 — Agile Software Development By Siam Chamnankit (SCK)

Nat Ketwadee
4 min readAug 17, 2023

--

ตอนที่ 2 นี้จะบอกเล่าต่อถึงเรื่องของการทำงานเป็น Sprint นั้นต้องทำอย่างไร มีวิธีและขั้นตอนอย่างไรบ้าง รวมถึงการเตรียมการก่อนเริ่ม Sprint ด้วย และทั้งหมดที่เขียนขึ้นในบทความนี้ เกิดขึ้นจากการเรียนรู้ผ่าน youtube ของสยามชำนาญกิจในหัวข้อเรื่อง Agile Software Development ค่ะ

warning! — บทความนี้เกิดขึ้นจากการทำความเข้าใจด้วยตัวของผู้เขียนเองเท่านั้น

จากตอนที่ 1 เราให้ความหมายของ The Sprint ไว้ดังรูป

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 ช่วงดำเนิน Project/Release

ถัดมาจะกำหนดสิ่งที่ต้องทำระหว่าง Sprint ในวันที่ 2 — วันที่ 8 (9) ของ Sprint

  • Potentially Releasable Product Increment
  • Useable
  • Done (Definition of Done)
การคำนวน Sprint และกำหนด 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 (Artifact)

ตัวอย่างการทำ 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

ตัวอย่างการทำ Product Backlog Refinement

นี่คือสิ่งที่จะต้องเตรียมการก่อนเข้า 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 Items ไว้ล่วงหน้าประมาณ 2 Sprints

ตัวอย่าง 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”

  1. หาว่ามีเงื่อนไขทางธุรกิจอะไรบ้าง?

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 วิธีการ/รูปแบบที่ ขอใช้งาน ข้อมูล จากระบบอื่น ๆ เพื่อการนำมาประมวลผล และ วิธีการ/รูปแบบที่ ส่ง ข้อมูล ไปให้ระบบอื่น ๆ เพื่อการนำไปใช้งานต่อ
ตัวอย่างการ Adding Detail

Action ที่ 2 : Estimate

เราจะแตก Task งานออกมา จากการทำ Adding Detail ที่ได้มาทั้งหมด และ Estimate ชั่วโมงการทำงาน ออกมาในทุก Task จะเรียกว่า Work Break Down

ตัวอย่างการ Estimate

และอย่าลืมคิดถึง DoD ที่เราได้กำหนดไว้ในตอนแรก ว่าเราควรจะทำอะไรให้เสร็จหรือผ่านบ้าง ต้องใส่ Task งานส่วนนี้เข้าไปด้วย

ตัวอย่างการ Estimate

เราจะได้ ผลรวมของจำนวนชั่วโมงทำงาน ที่เกิดจากการประมาณการ (Estimate) และจะทำให้เรารู้ว่าถ้าจะต้องทำให้เสร็จทั้งหมด PBI นี้ ใช้เวลากี่ Sprint ที่จะส่งมอบ

จากการคำนวณผลรวมจำนวนชั่วโมงทำงาน แล้วรู้ว่าไม่ได้จบได้ภายใน 1 Sprint เราจำเป็นต้องไปทำ Action ต่อไป นั่นคือ Ordering

Action ที่ 3 : Ordering

ยกตัวอย่างเช่น จะต้องใช้เวลา 2 Sprints ที่จะส่งมอบ เนื่องจากรายละเอียดเยอะ

เราต้องมาจัดเรียงลำดับความสำคัญว่าจะเริ่มทำส่วนไหนก่อนหลัง และให้งานทั้งหมดอยู่ภายใน 2 Sprints ที่ได้คำนวณมาจาก Action-Estimate

ขอบคุณทุกคนที่อ่านจนถึงตอนจบนะคะ แล้วพบกันใหม่ EP หน้านะคะ

--

--

Nat Ketwadee

𝚂𝚘𝚏𝚝𝚠𝚊𝚛𝚎 𝚃𝚎𝚜𝚝𝚎𝚛 👩🏻‍💻˖ ۫ ּ