Agile,Engineer Pratices,Refinement,Requirement Gathering,Scrum,Visualization

Collaborating in Refinement

มีสิ่งนึงที่ผมประทับใจมากในวันแรกของ Class CSD ที่ได้ไปเรียน ผมเองไปถึงเวลา 9:30 ซึ่งสายมาก ๆ และผ่านจุดที่ Terry เล่าภาพรวมของ Scrum ให้ฟังไปแล้ว และกลับมาเริ่มให้ Product Owner เล่าถึง Product ที่ทีมงานจะทำภายใน 5 วัน ที่จะอยู่ด้วยกัน โดยหลังจากเล่าภาพรวมของ Product แล้วเราจึงเริ่ม Initial Backlog Item (จริง ๆ ก็แค่เขียนมันลงไปใน Card เพราะมี หัวข้ออยู่แล้วในหนังสือ) ซึ่งหลังจากนั้นเราก็เริ่มทำ Backlog Refinement มาถึงจุดนี้มีเวลาให้เราทำกันประมาณ 1 – 2 ชั่วโมงกับการคุยกับลูกค้าเพื่อเริ่มเตรียมงานเข้า Sprint

credit image : www.castlellc.com

ซึ่งส่วนตัวแล้วที่ผมเคยลองใช้กับที่ทำงาน ผมเองมีปัญหาเยอะมากกับเรื่องเวลาของการทำ Refinement เพื่อให้ทุก ๆ คนในทีมเข้าใจ Requirement ตรงกัน บางครั้งผมก็เอาคนทั้งหมดของทีม 6 – 8 คนเข้าคุยกับลูกค้าพร้อม ๆ กัน ใจผมก็คิดอยากให้น้องได้เข้าใจว่าลูกค้าต้องการอะไร และทำไม แถมอยากให้มีโอกาสให้น้องได้พูดได้ถาม สิ่งที่น้องสงสัยจะได้เคลียร์จากต้นทางของข้อมูล แต่ก็จะมีน้องบางคนที่ตามไม่ทันเพราะบางครั้งเราก็ไปกันเร็ว ไปกันลึก น้องใหม่ ๆ มันจะนั่งตาลอย ๆ ซึ่งส่วนตัวผมเองแล้วผู้รู้สึกได้เลยว่า มันไม่ใช่ความผิดของเขา แต่อาจจะเป็นความผิดของผมเอง ที่ไม่เข้าใจวิธีการจริง ๆ ที่เราพยายามอยู่ต่างหาก แถมพี่ ๆ ที่ดูเรื่องเวลา ก็รู้สึกได้ถึง Effort ที่เสียไปเยอะมากเมื่อเทียบกับผลลัพท์ที่ได้ (งานได้เท่าเดิมโดยเสียเวลา และคนไปมากขึ้น) เลยลองอีกแบบโดยการเอาคนที่พอรู้เรื่องไปคุยกับลูกค้า เพื่อลด Effort ที่ใช้ลง แล้วกลับมาประชุมกันภายใน ก็มีปัญหาอีกว่าตอนจะกลับมาอธิบายให้ทีมฟัง คนที่ไปคุยกับลูกค้าเองก็จะเหนื่อยเยอะขึ้นมาก เพราะต้องกลับมาพยายามอธิบายสิ่งที่ตัวเองไปคุยมา แถมบางครั้งเมื่อเจอคนที่ไม่ได้ไป ถามอะไรบางอย่างก็ต้องเอาคำถามวนกลับไปถามลูกค้าอีก แถมยังมีที่กลายเป็นว่าคนอื่น ๆ ทุกคนวนมาถามแต่คน ๆ นี้ตลอดเลย พอมาเจอ Backlog Refinement ที่จัดโดย Terry ก็รู้สึกว่าเหมือนมันตอบโจทย์ของปัญหาที่เจอมา

เริ่ม Refinement

มาถึง Terry ก็จับ Product Owner มาเล่าภาพรวมของ Product ให้เราฟัง แล้วก็ให้เราร่วมกันสร้าง Card ขึ้นมา คุยร่วมกันกับ Product Owner เพื่อเรียงลำดับ Card ตามที่ Product Owner ต้องการ ซึ่งก็เหมือนกับที่ผมเคยทำมาปกติ แต่สิ่งที่ Surprise ผมมาก ๆ คือ อยู่ ๆ  Terry ก็บอกให้แบ่งกลุ่มคนทั้ง 10 ออกเป็น 2 กลุ่ม กลุ่มละ 5 คน แล้วก็จับ Card ใบแรก (ตาม Priority) ให้กลุ่มที่ 1 บอกว่าให้เอาไปยืนคุยกับหน้าบอร์ดนุ่นเลย … ยังไม่พอแกเอา Card ใบที่ 2 ส่งให้กลุ่มที่ 2 บอกให้ไปคุย Requirement ในอีกบอร์ดที่เตรียมไว้ แน่นอนว่าถึงแม้ผมจะขัดใจเล็กน้อยกับการแบ่งกลุ่มเพื่อคุย Requirement (แล้วกูจะรู้ไหมว่า Card 1 ให้ทำอะไร – ผมอยู่กลุ่ม 2) แต่ผมก็ยอมทำตามแต่โดยดี และเริ่มที่จะลุยคุยกันในกลุ่มถึง Card ที่เราได้มา ซึ่งระหว่างการคุย Terry ก็มีมาช่วยเราอยู่บ้างแต่สิ่งที่ผมจำได้แม่น ๆ ก็คือ

Refinement ไม่ได้ทำกันเอง : เป็นคำพูดที่ Terry ย้ำเสมอ และตลอดการพูดคุยกันในกลุ่ม มีอะไรสงสัย หรือมีอะไรไม่มั่นใจ ให้เรียก PO มาเลยไม่ใช่แค่ คุยกันเอง

เราไม่ได้ต้องการ Clearly Requirement แต่เราต้องการ Confirm : Terry ย้ำด้วยว่าก่อนหน้านี้เราพยายาม Clearly Requirement ซึ่งมันมีความสุ่มเสี่ยงมาก ที่ Clearly ของเรากับของลูกค้าจะไม่เท่ากัน สิ่งที่เราต้องการจริง ๆ คือการ Confirm ว่าสิ่งที่เราคิดตรงกับสิ่งที่ลูกค้าต้องการไหม ซึ่งใช้เทคนิคที่ชื่อว่า Specification By Example เรื่องนี้จัดได้อีก Blog ใหญ่ ๆ เลย

บางอย่างละไว้บ้างก็ได้มันมี Rule ของมันอยู่แล้ว : กลุ่มที่ผมคุยอยู่มีเรื่องการ Send Email หา Recipient ซึ่งจำเป็นต้องกรอก Email List ของ Recipient เข้าไปและต้อง Validate ให้ด้วยว่า Email ถูกต้องไหม ซึ่งกลายกลุ่มผมใช้เวลานานมากกับการคุยกันว่า Valid Email คืออะไร และ  Invalid คืออะไร แถมยังมีหน้าไปถาม PO อีกว่า อันนี้ อันนั้น ถือว่า Valid ไหม จน PO เริ่มถามกลับประมาณว่า Valid, Invalid คืออะไรผมจะรู้เหรอ … ถึงตอนนี้ Terry น่าจะพอจับอารมย์ออก (คุยภาษาไทย Terry แอบฟังอยู่) จึงเข้ามาถามประมาณว่าต้องคุยเรื่องนี้กันตอนนี้เหรอ (อ้าว ไม่คอนเฟริ์มตอนนี้ จะทำตอนไหนฟร่ะ) แล้วถามประมาณ Valid, Invalid เนี่ยมันต้อง PO รู้เหรอ มันหาจากไหนได้ไหม (ประมาณนี้อะจำได้ไม่แม่นแล้ว) เราจึงคุยกันต่อว่าเดี๋ยวเราไปหาอีกที แล้วระบบเราก็รับแต่ Valid Email แล้วกัน … จบเลย

Sharing Knowledge

มาถึงจุดนี้ Terry บอกให้เราสลับคนจาก กลุ่มที่ 1 และ 2 โดยให้ยังมีคนอยู่ที่กลุ่มเดิมครึ่งนึง อีกครึ่งไปอยู่อีกกลุ่ม แล้วให้คนที่อยู่ที่เดิมเล่าให้ฟังว่าคุยอะไรกันไว้บ้าง และให้เวลาสำหรับคุยกันกันระยะนึง ผมเองเป็นคนที่ร่อนไปยังกลุ่มใหม่ และมีคนมาเล่าให้ฟังว่า ที่เขาคุยกันไว้เป็นยังไงบ้าง แน่นอนผมมันพวกพูดมากหลังจากทำความเข้าใจผมเลยเริ่มซักถาม ว่าแล้วเคสนั้น แล้วเคสนี้หล่ะจะทำยังไง หรือทำไมเคสนั้นถึงเป็นแบบนั้น ถึงเป็นแบบนี้ ซึ่งก็เริ่มรู้สึกว่า แถมบางครั้งยังได้มีโอกาส Confirm กับ PO ในจุดต่าง ๆ ของ Card ใหม่ด้วย ผมก็ได้เริ่มรู้สึกแล้วว่าวิธีการนี้มันก็ดีเหมือนกันแห๊ะ พอหมดเวลา Terry จึงให้แต่ละกลุ่มมาเล่าให้อีกกลุ่มฟังว่าเราคุยอะไรกันกับ PO บ้าง ซึ่งคนที่ไม่เคยได้เข้าร่วมกลุ่มนี้ก็มีโอกาสสักถามว่ามันคืออะไร แต่รู้สึกได้ว่าคนสงสัยเริ่มน้อยลง เพราะหลาย ๆ คนเคยอยู่กลุ่มนี้มาแล้ว แถมคนที่เคยอยู่ก็สามารถรู้ได้ว่ามีอะไร Update บ้าง มาถึงตรงนี้ผมเริ่มเห็นประสิทธิภาพของวิธีนี้แล้ว ถึงแม้นเราจะใช้เวลามากขึ้นเมืื่อเทียบกับการเอาคน 10 คนมาคุยการ์ดเดียวกัน และคุยกันได้ Card เดียว เราคุยกันได้ประมาณ 2 Card พอหมดเวลาเราทุกคนก็เห็นภาพเดียวกันเกือบทั้งหมด

Split กลุ่มย่อยลงไป หมุนเวียนกันมากขึ้น

เริ่ม Card ที่ 3 คราวนี้ Terry ลาก Board มาเพิ่มอีก 1 อันแล้วให้แบ่งเป็น 3 กลุ่มเพื่อแยกไปคุยกัน ผมรู้สึกได้เลยว่าการคุยกันด้วยคนประมาณ 3 – 4 คนมันได้รสชาติ มากกว่ารอบแรก พอสมควร เพราะรอบแรก ๆ ยังเห้นว่าใน 5 คน จะมีคนที่ยืนอยู่หลัง ๆ ไม่สามารถแทรกตัวเข้ามาได้อยู่ประมาณ 1 – 2 คนเสมอ Terry ให้เวลากับรอบนี้น้อยลง แล้วเริ่มกระบวนการสลับอีกครั้ง โดยคราวนี้ตั้งกฏว่า ให้มี 2 คนอยู่ที่ Board เดิมอธิบาย แล้วให้คนที่เหลือไปที่ Board ใหม่ เริ่มการคุยกันใหม่ แล้วก็จับเวลา หมดเวลาก็สลับอีกโดยให้ เหลือแค่คนเดียวอยู่ที่ Board เดิม แถมยังเป็นคนที่ไม่ได้อยู่มาแต่แรก ที่เหลือก็เวียนไป (ประมาณนี้อะนะ ช่วงนี้เริ่มมึน ๆ งานเข้าโทรศัพท์ดังตลอด) มาถึงจุดนี้ผมเริ่มรู้สึกถึงโมเมนต์ตั้ม ของทีมแล้วว่าทุกคนเริ่มเป็นภาพของ Product ชัดขึ้นมาก ๆ โดยที่ความเข้าใจของทุกคนเกือบ ๆ จะเท่ากันจบ Session นี้ Terry ก็มาสรุปให้ประมาณว่า

Card Priority สำคัญ : เขาบอกว่าเขาให้เวลาในการทำ 2 Card แรกเยอะกว่า Card หลัง อย่างนึงเพราะเรายังไม่รู้จักทั้ง Product และ PO จำเป็นต้องคุยกันเยอะ เพื่อทำความรู้จักทั้งทุกอย่างที่ว่ามา ส่วน Card หลัง ๆ ให้เวลาน้อยลงเพราะเราจะเริ่มจับ Pattern ของการคุยได้แล้ว และถ้าเวลาไม่ทันอย่างน้อยเราก็ลง Detail ของ 2 Card แรกจนสามารถทำงานได้

สลับ Pair : จริง ๆ ผมเคยได้ยินเรื่อง Collective Ownership มาเยอะมากจากการทำ Pair Programming และการสลับคู่ Pair เพื่อให้ลายมือของ Coding ออกมาในแนวทางเดียวกัน แต่พึ่งเห็นว่าจริง ๆ เรื่องเหล่านี้มันเป็นหลักการที่ประยุกต์กลับอะไรก็ได้ (T-T รู้สึกว่าตัวเองตื้นเขินยิ่งนัก)

Card Dependency : จุดนึงที่ผมได้เห็นตอนสลับกันไปมา คือเมื่อทุกคนเห็น Card ทั้งหมด บางครั้งมันก็ทำให้เราเห็น Card Dependency ด้วย เพราะบางทีถ้าเรามองแค่ Card ใบเดียวเราอาจจะหลุดในสิ่งสำคัญไป การได้เห็นการ์ดหลาย ๆ ใบย่อมทำให้เราเข้าใจ Product มากขึ้น หรือถ้าเรามีอะไร Concern จาก Card ใบอื่น ๆ เราก็สามารถ ถาม PO ได้เลยนะตอนนั้น

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

เหลือคนไว้อธิบายคนเดียว : อันนี้ผมจำไม่ได้ว่า Terry พูดไว้ไหม (คิดว่าพูดนะ) แต่ผมรู้สึกได้อย่างนึง ตอนที่ผมต้องไปยังกลุ่มใหม่ซึ่งมีคน ๆ นึงเหลืออยู่เพื่ออธิบายว่า Card นั้นมีความเป็นมายังไง และต้องทำอะไรได้บ้าง ผมรู้สึกได้ว่าคนที่อยู่เดิมนั้นต้องใช้ความพยายามอย่างมาก ๆ ในการอธิบายให้คนมาใหม่ฟัง ซึ่งผมรู้สึกว่าคน ๆ นั้นจะได้ฝึก Skill ในการอธิบายสิ่งที่ตัวเองรู้ให้กับอีกคนนึงด้วย

หลังจากสรุป เราก็มี Product Backlog Item ที่พร้อมจะเริ่มลุย โดยที่เป็น Backlog Item ที่ทุกคนในทีมร่วมกันสร้างขึ้นมา แถมทุกคนยังมี Knowledge ในทุก ๆ Card ซึ่งถึงแม้จะไม่เท่ากันซะทีเดียวนัก แต่ก็เห็นภาพรวมของกันและกัน เอาเป็นว่าเราไปลุยกันต่อได้เลย …

 

 

 

Advertisements

2 thoughts on “Collaborating in Refinement

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s