Kanban คืออะไร? ช่วยควบคุม flow งานให้ทีมทำงานได้ดีขึ้นได้อย่างไร? by heha
Dec0
ตามที่เกริ่นไว้จากบทความเดือนที่แล้ว “การสร้างวัฒนธรรมการทำงานเป็นทีมที่มีประสิทธิภาพ” ซึ่งเป็นการเล่าถึงการสร้างสภาพแวดล้อมของทีมที่น่าทำงานด้วยกันขึ้นมาระหว่างเรากับเพื่อนร่วมงาน ครั้งนี้มาเป็นรูปธรรมเอาไว้ช่วยให้ Process เดินไวขึ้นครับ แน่นอนว่าถ้าเราดันไม่กินเส้นกับเพื่อนร่วมงาน หรือมีการเมืองในองค์กร มีการโทษกันไปมา บทความนี้คงจะไม่มีประโยชน์อะไร ต้องไปอ่านบทความที่แล้วให้ดีซะก่อนครับ
Kanban ที่มาเริ่มต้นมาจากระบบการทำงานของ Toyota ซึ่งประสบความสำเร็จอย่างมากจนทำให้สามารถผลิตรถออกมาได้ไวกว่าคู่แข่งทั่วโลกจนครองตลาดไปได้มาก สำหรับวงการ Software ได้ถูก David J. Anderson จับนำมาปรับปรุงให้เข้ากับ Software Development เพื่อการพัฒนา Software ได้อย่างรวดเร็วที่สุดด้วยเช่นกัน และสุดท้ายถูกนำไปเป็นส่วนหนึ่งของ Lean Software Development รวมไปถึงถูกจัดให้เป็น Agile อีกแบบหนึ่งนอกเหนือไปจาก Scrum อีกด้วย
Kanban มีกฎอยู่แค่ 3 ข้อ (Scrum มี 9)
- Visualize the workflow – แสดง flow การทำงานของระบบให้ออกมาให้เห็นภาพอย่างชัดเจน สามารถบอกได้ว่าขณะนี้งานไปติดขัดที่จุดไหน อย่างไรให้ชัดเจน
- Limit Work In Progress (WIP) – จุดหลักของ Kanban เลยคือการ limit งานต่อหนึ่งหน่วยย่อย เช่นงานสำหรับ Development ห้ามถือเกิน 2 งานเพื่อป้องกันไม่ให้งาน Overload มากเกินไป และจะทำให้สูญเสียเวลาไปมากกว่าที่ควรจะเป็น
- Measure the lead time – วัดผลการทำงานและปรับปรุงให้ดียิ่งขึ้นไปอีก ตรงนี้จะเรียกว่า Cycle time หรือค่าเฉลี่ยที่ Card 1 อันจะอยู่บนบอร์ดตั้งแต่เริ่มต้นไปจนถึงขึ้นบน production จริง
ข้อดีของ Kanban
- เหมาะกับการทำงานหลายๆ project พร้อมกันมากกว่า Scrum
- เหมาะกับการทำงาน Maintain, Support ระบบแก้ bug ที่โผล่มาแบบปัจจุบันทันด่วนไปพร้อมๆ กับการพัฒนา feature มาก เพราะสามารถเปลี่ยนแปลงได้เกือบตลอดเวลา ไม่ต้องรอให้จบ sprint
- เหมาะกับทีมงานที่มี Specialist อยู่ในทีม และต้องการการ share resource จาก specialist คนนี้พร้อมๆ กัน โดยที่ไม่ทำให้ specialist คนนี้มีงาน overload เกินไป
- แน่นอน หากเป็นงาน backend, frontend แยกกันและไม่สามารถฝึกให้คนในทีมเขียนได้ทั้งสองอย่างพร้อมๆ กันได้ Kanban จะช่วยตรงจุดนี้ได้ในแง่การจัดการ flow เช่นงาน backend เสร็จแล้ว รอ frontend หยิบไปทำต่อ ในขณะที่ backend ก็ทำงานใหม่หลังจากส่งงานต่อให้ frontend แล้วทันที ทำให้ไม่มีการว่างงานเกิดขึ้น
- หากงานใหญ่ไม่สามารถซอยให้เล็กลงได้แล้วจริงๆ ก็ไม่ใช่ปัญหาสำหรับ Kanban เพราะไม่มี sprint เป็นตัวจำกัดอีกแล้ว
- เสริมสร้างความช่วยเหลือระหว่างคนในทีม เนื่องจากแค่มองบอร์ดจะรู้ทันทีว่าตอนนี้งานติดอยู่ที่ใครมากที่สุด (เป็น bottleneck ของ flow ในขณะนั้น) เพื่อนร่วมงานที่เหลือก็จะเข้าไปช่วยกัน เพื่อทำให้ bottleneck ของงานหายไปโดยเร็วที่สุด และสุดท้ายจะสามารถทำงานงาน flow ต่อไปได้ ทำให้งานโดยภาพรวมเสร็จสิ้นมากขึ้น
- ช่วยแก้ปัญหา “ทำงานโน่นนิด นี่หน่อย เยอะมาก แต่ไม่เสร็จซักกะงาน” ได้เป็นอย่างดี ด้วย WIP
ตัวอย่าง Kanban Board
จากรูปจะเห็นว่า Selected มี (2) ต่อท้าย หมายถึงช่องนี้สามารถรับงานได้แค่ 2 งานเท่านั้น ห้ามยัดมามากกว่านี้ ส่วน Develop จะเป้น (3) ก็คือรับทำงานพร้อมกันไม่เกิน 3 งาน ส่วนของ Deploy ว่างอยู่ซึ่งสามารถดึง A (Done แล้ว) ไปทำต่อได้ และ Live! ก็คือขึ้นบน Production สำเร็จนั่นเอง 1 cycle time คือ card 1 ใบที่วิ่งผ่านตั้งแต่ selected ถึง live! ใช้เวลาทั้งหมดเท่าไรนั่นเอง
จริงๆ ยังมีรายละเอียดอีกมาก แต่ไปอ่านเพิ่มเติมได้ที่
http://www.infoq.com/minibooks/kanban-scrum-minibook
ปล. ขอบคุณพี่กรที่มาแบ่งปันเรื่อง Kanban ให้ผมและคนอื่นๆ รู้ครับ
ปล 2. Practice ต่างๆ อย่าง TDD, Pair Programming, Code Review, Retrospective, Standup Meeting ก็ยังหยิบมาใช้ได้ แค่ว่าจะไม่ fix ว่าต้องทำเมื่อไหร่ อาจ set ให้มีเฉพาะเวลาที่จำเป็นเท่านั้น ไม่ใช่ว่าห้ามทำ