Scrum by Doing :: Agile Software Development

วันนี้ผมขอ Blog เรื่อง Process นะครับ ...
เราจะพูดถึง Process อีก Paradigm นึงที่เข้ามาแก้ปัญหาที่เกิดขึ้นกับการทำงานแบบ Waterfall

นั่นคือ Agile Software Development โดยมีหลักการ 4 ข้อดังนี้

Individuals and interactions over processes and tools 
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on
the right, we value the items on the left more.

สามารถอ่านรายละเอียดเต็มๆ ได้ที่ http://agilemanifesto.org/
(มีคนแปลเป็นภาษาไทยให้แล้วที่ => http://agilemanifesto.org/iso/th/)

โดย Agile นั้นเหมือนเป็น Principle (ผมเปรียบมันเป็น Abstract Class แล้วกัน :)
ก็เลยมีคนเอาหลักการ 4 ข้อของ Agile ไป Implementation ให้เหมาะสมมากขึ้น
โดย Software Process ที่เป็นที่นิยมมีอยู่ 3 อย่าง นั่นคือ

  1. XP (eXtreme Programming)
  2. Scrum
  3. Kanban
Blog นี้เราจะมาพูดถึง Scrum กันครับ

** โดย Scrum เนี่ยขอบอกว่า "ศัพท์มันเยอะมาก" ผมไม่รู้ทั้งหมดหรอก รู้บ้างนิดหน่อยเท่านั้น แต่ Opendream ให่้ผมได้เจอ ได้ทำสิ่งเหล่านี้เกือบทั้งหมดเลย :)

Blog นี้ผมจะแชร์สิ่งที่เจอ 
ในฝึกงานที่ Opendream ว่า Scrum เป็นยังไง ประกอบด้วยอะไร ทำอะไรบ้าง ในแต่ละวัน

ใน Project Scrum จะประกอบด้วย
  • Scrum Master       -- คนที่อยู่ตรงกลางระหว่าง Product Owner และ Team Member 
  • Product Owner     -- มีหน้าที่คล้าย Proxy ของลูกค้า หรือเป็นตัวลูกค้าซะเอง ก็ได้
  • Team Member      -- มีหน้าที่ทำ Product ให้ได้ตามที่ Product Owner ต้องการ


จากภาพด้านบนนี่คือทั้งหมดของ Scrum Process ครับ ...
งั้นมาดูในทางปฏิบัติบ้าง ... Scrum ต้องทำอะไรบ้าง

Stand up meeting 
โดยเราจะพูดคุยกันแค่ 3 เรื่องเท่านั้น คือ
  1. เมื่อวานทำอะไร ?
  2. วันนี้จะทำอะไร ?
  3. เกิด/มี ปัญหาอะไรบ้าง ?


User Story
เป็น Practice หนึ่งที่จะทำให้ Team และ Product Owner เข้าใจกันมากขึ้น
โดยจะมีลักษณะเป็น กระดาษแผ่นนึง ที่เขียนงานที่จะทำออกมาเป็น Feature Based 
ที่ User อยากจะทำ ออกมาเป็น Module เล็กๆ เช่น ตัวอย่างเช่น User Login, User Management

** 1 User Story มักถูกเรียกว่า 1 การ์ด 




Scrum Board
จะเป็น Board ที่เอาไว้ Track งานเล็กๆ แต่ละงาน ว่าการ์ดมีสถานะอะไรอยู่ตอนนี้ (User Story) 
ซึ่งจะ Scrum Board โดยมากแล้วจะประกอบไปด้วย Column ดังนี้คือ
  • Product Backlog -- ที่เก็บ User Story ทั้งหมด
  • Not Check-in      -- ที่เก็บ User Story ที่ Product Owner เลือกว่าอยากให้เราทำอะไรก่อน
  • Develop              -- ตรงตัวนะ ก็กำลังทำอันนี้อยู่
  • Test                     -- Feature เสร็จแล้ว ขึ้นเขียงรอ Tester สับๆๆๆๆ
  • Done                   -- ผ่านการ Test Feature นี้ใช้ได้
  • Bug & Issue        -- กรณี Test แล้ว เกิด Bug ก็จะเขียนไว้ที่นี่

Burn down Chart
เป็น Chart ที่แสดงถึงความคืบหน้าของงานเทียบกับเวลา
ซึ่งงานจะ Represent ออกมาในรูปของ Point (คะแนน) ที่ Product Owner หยิบเข้ามาให้ทำ
โดยจะมีแกน Y เป็น Point และแกน X เป็นเวลา (โดยมากแล้วคือ 1 Sprint ประมาณ 2 weeks)


Estimation :: Sprint Planning
การประเมินงาน ซึ่งสมาชิกในวงจะประกอบไปด้วย Scrum member ทั้งหมดที่กล่าวในข้างต้น
ซึ่งจะมานั่งประเมินกันว่า งานแต่ละงานมีอะไรบ้าง ... งานแต่ละงานยากแค่ไหน
โดยจะประเมินให้อยู่ในรูปของ "คะแนน" ไม่ใช่ "เวลา"

เนื่องจากว่า ตามธรรมชาติของมนุษย์เนี่ย จะเป็นการยากที่เราจะประเมินอะไรได้เป๊ะๆ เป็นเวลาที่แน่นอน
ดังนั้นวิธีการประเมินที่ดี คือ "การเทียบ" ในการ Estimation เราจะหา "คะแนนตั้งต้น" ของ การ์ด สักใบ แล้วเทียบว่า การ์ด อีกใบ เป็นกี่เท่าของอีกใบ

พี่รูฟ (@roofimon) บอกว่า การประเมินแบบนี้มันถูกจริต และ ตรงกับความรู้สึกของมนุษย์มากกว่า ...



Planing Poker
เป็น Practice หนึ่งที่เหมาะกับการทำ Estimation User Story ซึ่งจะใช้ไพ่ที่มีเลขเป็นลำดับ Fibonacci
ซึ่งเป็นเกมส์ที่จะหยิบ User Story มาทีละใบ แล้วให้ทุกคนโหวตว่า การ์ดนี้ จะมี "ความยาก" กี่ "แต้ม"
ผลลัพธ์จะได้จาก การที่ทุกคนโหวตได้เท่ากันทุกคน ถ้าไม่เท่าต้องคุยกันว่า "ทำไมเธอให้เท่านั้น/เท่านี้"



Retrospective
พูดคุยหลังจากจบงาน ซึ่งจะมาถกกันเรื่องปัญหาต่างๆ ที่เกิดขึ้นระหว่างการทำงาน
ใครมีข้อข้องใจอะไร ปัญหาทุกเรื่องที่เกิดขึ้น ไม่ว่าจะเรื่องคน, งาน และอื่นๆ
จะได้เป็นบทเรียนเอาไว้ใช้ใน Project ต่อๆ ไป


รู้สึกว่าเป็น Blog ที่เขียนยากมากกกก ...
ขอไว้แค่นี้ก่อนแล้วกัน ถ้ามีอะไรเพิ่มเติมจะมา Edit นะครับ
ข้อมูลได้มาจากการ Lecture ของ Scrum Master @roofimon
( แอบอัดเสียงไว้ :P )

Popular posts from this blog

[Android Dev] การติดตั้ง Eclipse+AndroidSDK เพื่อพัฒนาโปรแกรมบน Android

12 วิธี การบริการและดูแลลูกค้าในร้าน Starbucks

5 TED Talk ที่จะช่วยให้คุณทำงานดีขึ้น