Kanban ฉบับย้อย่อ

Kanban คืออะไร

Kanban คือ วีธีการบริหารการเปลี่ยนแปลง โดยเน้นการจัดการงานให้อยู่บนหลักการตามข้างล่างนี้

  • Visualize Work ทำให้เห็นแผนภาพของงานทุกๆขั้นตอน ในห่วงโซ่แห่งคุณค่า(Value Chain)จากแนวคิดที่คลุมเคลือ ไปสู่การส่งมอบผลงานที่มีคุณค่า
  • Limit Work-In-Progress (WIP) กำหนดขีดจำกัดที่ชัดเจนกับปริมาณของงานที่ได้รับอณุญาติทำได้ในแต่ละขั้นตอน
  • Make Policies Explicit สร้างนโยบายที่ชัดเจน ที่คุณจะต้องประฏิบัติตาม
  • Measure and Manage Flow การวัดผลและจัดการ การไหลของกระบวนการ นำไปสู่การใช้ข้อมูลเพื่อการตัดสินใจ และทำให้เห็นภาพผลลัพย์ที่จะเกิดขึ้นตามมา
  • Identify Improvement Opportunities สร้างวัฒนธรรมไคเซ็น(Kaizen)ให้เกิดขึ้น เพื่อการพัฒนางานให้ดีขึ้นยิ่งๆขึ้นไป อย่างต่อเนื่องอยู่เสมอกับงานของทุกคน

ข้างล่างนี้เป็นคำนิยาม Kanban จากผู้ริเริ่มครับ

”…Kanban (capital K) is the evolutionary change method that utilizes
a kanban (small k) pull system, visualization, and other tools to catalyze
the introduction of Lean ideas into technology development and IT operations”

David J. Anderson, Kanban 2010

ภาพต่อไปนี้เป็นตัวอย่างของ Kanban board ที่เป็นกระดานแสดงกระบวนการทำงานทั้งหมด ของการจัดการ projects ซอฟแวร์หนึ่ง โดยประยุกต์ใช้ Kanban

อธิบายกระดาน Kanban กันหน่อย

  • คุณจะเห็นว่าบนกระดาน Kanban นั้น แสดงให้เห็นแผนภาพของกระบวนการพัฒนาซอฟแวร์ทั้งหมดของระบบ(Visualize Work)
  • WIP limit ได้ถูกเขียนแสดงไว้ที่หัวกระดานในแต่ละคอลัม
  • นโยบายถูกทำให้ชัดเจน(Policies Explicit) เพื่อให้เกิดคุณภาพของงานที่ยอมรับสำหรับ กระบวนการถัดไปดึงไปทำต่อได้ และที่คอลัมแรกมีการจัดลำดับของงาน(Prioritize) โดยงานที่อยู่บนสุดจะถูกดึงไปทำก่อน เพราะสำคัญสุด
  • งานที่ไหลไปอยู่บนกระบวนการพัฒนาซอฟแวร์ใดๆในระบบ จะถูกคำนวณ(Measure flow) อยู่เสมอที่กระบวนการทำงานตรงคอลัมสุดท้าย
  • ที่หัวของคอลัมสุดท้ายคุณจะเห็นว่า ไม่ได้กำหนดค่า WIP limit ไว้ แต่ได้เขียนเวลาจริงๆที่ทีมได้ตกลงร่วมกันแล้วไว้ว่าพร้อมส่งมอบผลงาน ทุกๆวันอังคาร เวลา บ่าย 3 โมง เป็นปกติเสมอ ซึ่งหมายความว่าทุกๆชิ้นงานจะถูกทำให้เสร็จสิ้น และจะถูกส่งมอบในเวลานั้น

ในความคิดของผม Kanban มันคือเครื่องมือที่จะเข้ามาช่วยบริหารการเปลี่ยนแปลงของงานในกระบวนการพัฒนาซอฟแวร์เดิมของเรา ถ้านำ Kanban เข้ามาใช้ ก็จะต้องปรับกับกระบวนการพัฒนาซอฟแวร์ที่ทีมใช้อยู่แล้ว (เช่น XP, Scrum, Waterfall, UP) ให้เข้ากันกับหลักการของ Kanban หรือง่ายๆก็คือทำกระบวนการพัฒนาซอฟแวร์ที่เราใช้อยู่ขณะนี้ ให้แสดงไปอยู่บนกระดาน Kanban แบบตัวอย่างนั้นให้ได้เท่านั้นเองครับ โดยมีขั้นตอนดังนี้

1. Visualize your workflow: เริ่มต้นทำความเข้าใจการไหลของงานในกระบวนการพัฒนาซอฟแวร์ตั้งแต่ต้นจนถึงขั้นตอนส่งมอบซอฟแวร์ของคุณก่อน จากนั้นนำมาวาดเป็นแผนภาพการไหลของงาน แล้วแบ่งคอลัม บนกระดาน Kanban ออกเป็นจำนวนให้เท่ากับกระบวนการทำงานของคุณ แล้วนำชื่อของกระบวนการนั้นมาเขียนเป็น title บนกระดาน Kanban อีกทีเป็นอันเสร็จขั้นตอนนี้ ดูภาพตัวอย่างข้างล่างนี้ครับ

2. Limit Work in Progress (WIP): หลังจากได้กระดาน Kanban ที่มีคอลัมของกระบวนการทำงานแล้ว ต่อจากนี้ก็ให้กำหนดข้อจำกัด(limit) ของ WIP ที่ยอมให้แต่ละกระบวนการดึงงาน(pull)เข้ามาทำได้ WIP ก็คือจำนวนงานที่กำลังทำอยู่ในระบบของเรา หรือจำนวนงานที อยู่ระหว่างทำในแต่ละคอลัมบนกระดาน Kanban รวมกันนั่นเอง ดูตัวอย่างกำหนดขีดจำกัด WIP บนกระดาน Kanban ตามรูปตัวอย่างข้างล่างนี้ (รูปตัวอย่างนี้ ได้กำหนดขีดจำกัด WIP เป็นจำนวน slot ว่างไว้ในคอลัมเลย แทนที่จะเขียนไว้ที่หัวคอลัมเหมือนตัวอย่างกระดาน Kanban ภาพแรก)

3. Make Policies Explicit: กำหนดนโยบาย QA และทำให้มันเห็นได้ชัดเจน เช่น ผลผลิตที่ออกมาในแต่ละคอลัมนั้น ที่จะเรียกว่าเสร็จแล้ว(Done) จะต้องมีอะไรบ้าง ขั้นตอนทำงานนี้กำหนดว่าจะต้องใช้เทคนิค TDD จะต้องเขียน unit test มี code coverage เท่าไรถึงยอมรับได้ ทำ code analysis มั้ย มี document ใน code กี่เปอร์เซน ใช้ pattern อะไรออกแบบ แบบนี้เป็นต้น ดูภาพกระดาน Kanban ที่ได้เติมนโยบาย QA ลงไปแล้ว

4. Measure and Improve Flow: ที่นิยมใช้คำนวณเพื่อทำให้เห็นสุขภาพของกระบวนการทำงานทั้งระบบของทีมนั้นก็คือ Cumulative Flow Diagram(CFD) ซึ่งใช้แทน burn down charts ที่นิยมใช้ในกระบวนการแบบ Agile ทั่วๆไป Diagram นี้จะแสดงปริมาณงานสะสมของแต่ละกระบวนการ ในแต่ละวัน ข้างล่างนี้เป็นตัวอย่าง CFD ครับ

อธิบาย CFD กันนิดหน่อย

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

  • ถ้าความสูงที่เป็นส่วนหนึ่งใน WIP เพิ่มสูงขึ้นแสดงว่าเกิด ปัญหาคอขวดขึ้นในระบบ
  • ถ้าระดับพื้นที่ของเส้น Backlog ชันกว่า ระดับพื้นที่ของเส้น Done แสดงว่าคุณได้ เพิ่มงานเข้าระบบมากเกินไป กว่าความสามารถทำงานได้ของระบบคุณ
  • เราสามารถประมาณเวลาที่จะปิดโครงการนี้ง่ายๆ ได้โดยลากเส้นแนวโน้มบนเส้น Backlog และ Done  ให้เส้นสองเส้นมาบรรจบกัน แล้วลากเส้นตั้งฉากตรงจุดตัดนั้นจนถึงแกนนอน จุดบนแกนนอนนั้น สามารถประมาณได้ว่านั่นคือวันส่งงานครั้งสุดท้าย

ก็จบแล้วละครับ สำหรับขั้นตอนการปรับกระบวนการพัฒนาซอฟแวร์ของทีมคุณเพื่อติดตั้ง Kanban

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

กระบวนการของ Agile ที่ผมเข้าใจ จะกำหนดบทบาทใหม่ๆขึ้นมาทำหน้าที่บางอย่าง เพื่อให้กระบวนการดำเนินไปได้ พอนำมาใช้ก็จะต้องฝึก หรือค้นหาบุคลากรเพื่อรับหน้าที่บทบาทนั้นๆเพิ่มเข้ามาในทีม ซึ่งมันก็เลยทำได้ยากที่จะเอาเข้ามาใช้ในทีมที่เป็นอยู่ในปัจจุบัน หากเราไม่ใช่ projects manager หรือเจ้าของบริษัทซะเอง

แต่ในกรณีที่เอา Kanban เข้ามาปรับใช้นี่ผมคิดว่า ง่ายกว่ากันเยอะเลย เพราะมันเป็นแค่เครื่องมือ ที่จะเข้ามาช่วยให้ทีมประสานงานกันผ่านกระดาน Kanban ที่ทำให้ทั้งทีมเห็นภาพขั้นตอนการทำงานได้ชัดเจนขึ้นเพื่อ จัดการวางแผนงานร่วมกัน รู้เข้าใจตรงกันมากขึ้น และต้องปฏิบัติตามนโยบายของ QA ตลอดทุกๆกระบวนพัฒนา สามารถประเมิณผลงานได้ ซึ่งนั่นจะนำไปสู่การปรับปรุงกระบวนการทำงานอย่างต่อเนื่อง(continuous improvement) ได้ต่อไปเลยทีเดียว

และสุดท้าย อย่าลืมหลักการหนึ่ง ที่สำคัญมากๆของ Kanban เลย นั่นก็คือ ทุกๆคนในทีมจะต้องติดตั้งหัวใจแห่ง Kaizen ลงไป หรือไม่ก็ติดตั้งหัวใจแห่ง Agile ก็ได้เหมือนกัน เพราะทั้งสองหลักการนี้นั้น มีสิ่งที่คล้ายๆกันอยู่แล้ว

ฝากไว้ครับกับ Kanban ฉบับย้อย่อ หวังว่าบทความนี้ จะจุดประกายให้คุณนำ Kanban นี้ไปประยุกต์ใช้กับทีมของคุณให้ได้นะ มันต้องแจ่มเจ๋งอย่างแน่นอนครับ

ขอบคุณครับ

#:P

เพิ่มเติม:

  • สำหรับซอฟแวร์ที่จะนำมาใช้เป็นกระดาน Kanban ผมแนะนำ kanbanery
  • หนังสือที่จะทำให้คุณเข้าใจ Kanban แบบครบถ้วนจริงๆจังๆกันไปเลย ต้องอ่านนี่ Kanban: Successful Evolutionary Change for Your Technology Business
  • อ่านน้อยๆหน่อย แต่เข้าใจแล้ว Kanban มาลองใช้ได้เลย ต้องอันนี้ Priming Kanban

 

Advertisements

#agile-software-development, #kanban