คำพูดเกี่ยวกับทีมพัฒนาที่มักได้ยินจากฝ่าย Management, Team lead, Product Manager และ ...
คือ ทีมพัฒนาทำงานช้า หรือ ทำงานยังไม่เร็วตามความต้องการ
คำถามคือ ถ้าต้องการให้ทีมพัฒนาทำงานเร็วขึ้นต้องทำอย่างไร ?
คำตอบที่มักจะได้รับคือ
- ตัดเรื่องคุณภาพออกไป หรือ ลดลง
- ทำ OT สิ
- ทำให้มันเร็วขึ้นสิ
- เพิ่มคนสิ
- คุณภาพของ feature และ ระบบมันต่ำลงเรื่อย ๆ
- จำนวนข้อผิดพลาดเยอะขึ้นเรื่อย ๆ
- จำนวน feature ที่ไม่ถูกทดสอบเยอะขึ้นเรื่อย ๆ
- การพัฒนาช้าลงอย่างต่อเนื่อง
- ปัญหาในเรื่องการ integrate ระบบต่าง ๆ เข้าด้วยกันเพิ่มขึ้นเรื่อย ๆ
- การ deploy ระบบใช้เวลานานขึ้นเรื่อย ๆ
- ผู้ใช้งาน และ ลูกค้า เริ่มไม่พอใจขึ้นเรื่อย ๆ
- ฝ่ายบริหารเริ่มไม่พอใจขึ้นเรื่อย ๆ
- ทีมเริ่มถูกกดดันอย่างมาก อาจจะทนอยู่หรืออยู่ทน
คำถามที่ต้องถามตัวเราเอง คือ แนวทางแบบนี้มันคือการเพิ่มความเร็วจริงหรือ ?
หรือว่า มันกลับทำให้เราช้าลงไปกว่าเดิม ? ทั้งในแง่คุณภาพของระบบ ทั้งในแง่คุณภาพของ code ทั้งในแง่การทำงานเป็นทีม ดังนั้น เรามาเรียนรู้จากความผิดพลาดเหล่านี้กัน เพื่อไม่ให้เราผิดซ้ำที่เดิมอีก ก่อนอื่นเราควรมาทำความรู้และเข้าใจกับคำว่า ความเร็ว (Speed) ทีมจะทำงานได้อย่างรวดเร็ว ก็ต่อเมื่อแต่ละคนในทีม- รู้ว่าตัวเองต้องทำอะไร เพื่อให้เป้าหมายของทีมสำเร็จ
- มีความรู้ความเข้าใจในสิ่งที่กำลังทำ
- ต้องมีความชำนาญในสิ่งที่รับผิดชอบ
- รักในสิ่งที่ทำ
- มีความภูมิใจในสิ่งที่ทำ
- ทำงานกันเป็นทีม
ดังนั้นก่อนที่จะทำให้เร็ว ลองหยุด หรือ ทำตัวให้ช้า เพื่อมาเรียนรู้กับที่มาของความเร็วกัน
เรื่องของความเร็ว (Speed) มันประกอบด้วยหลาย ๆ สิ่ง แต่มีส่วนประกอบหลัก 2 อย่างคือ- Throughput
- Cycle time
- Throughput คือ จำนวนงานที่พัฒนาเสร็จในช่วงเวลาหนึ่ง ๆ
- Cycle time คือ จำนวนเวลาของการพัฒนางานหนึ่ง ๆ ให้เสร็จ
คำเตือน !! เราสามารถทำการเพิ่ม Throughput และลด Cycle time ได้ก็ต่อเมื่อ เราเข้าใจมันดีพอแล้วเท่านั้น มิเช่นนั้น แทนที่จะทำให้ดีขึ้น กลับเลวร้ายลงกว่าเดิม หรือเกิดผลกระทบมากมายตามมา
Throughput
ส่วนใหญ่ชอบเทียบด้วยจำนวนรถยนต์ที่วิ่งบนถนน ซึ่งวิ่งจากที่หนึ่งไปอีกที่หนึ่งในเวลาที่กำหนด คำถามเราจะเพิ่มจำนวน Throughput ได้อย่างไร ? เพิ่มจำนวนรถเข้าไปให้ได้มากที่สุด เท่าที่ถนนจะรองรับได้ไงล่ะ ทำการวัดความเร็วจาก จำนวนรถที่วิ่งถึงเป้าหมายในเวลาที่กำหนด ดังนั้นรถทุกคันต้องวิ่งด้วยความเร็วที่สูงขึ้น แต่ลองคิดดูสิว่า รถก็เยอะ วิ่งก็เร็ว แล้วมันจะปลอดภัยหรือ ? จะเกิดอุบัติเหตุบ่อยไหม ? ถ้าเกิดอุบัติเหตุขึ้นมาสักจุดบนถนน การจราจรจะติดขัดมากน้อยเท่าไร ? ดังนั้น การเพิ่มความเร็วของรถ ไม่เพียงทำให้เรากลัวเท่านั้น ยังอาจจะทำให้เกิดการบาดเจ็บ ล้มตาย ยังอาจจะทำให้ระบบหยุดทำงานอีกด้วย สุดท้ายดันไปทำให้ค่าของ Throughput ลดลงไปอีก !! การพัฒนา Software ของทีมก็เช่นเดียวกัน เราต้องการกระบวนการการทำงานที่ปลอดภัย นั่นคือ ต้องมีคำว่าคุณภาพในระดับที่ยอมรับร่วมกันทุกฝ่าย แต่ถ้าตัด หรือ ลด สิ่งเล็ก ๆ ที่เรียกว่า คุณภาพลงไป คุณต้องพบเจอความน่าสะพรึงกลัวมากมายตามมา !! แต่เรากลับพบว่า สิ่งเหล่านี้ มันคือ ความปกติที่เกิดขึ้นอยู่ในทุกทีม ทุกองค์กร !! ดังนั้น เชื่อเถอะว่า คุณไม่ได้เดินอย่างเดียวดาย (You will never walk alone) กลับมาดูว่า สิ่งที่ทำให้เราช้ามีอะไรบ้าง ? ช่วยกันแก้ไข ช่วยกันปรับปรุง ช่วยกันหา way of work ใหม่ ๆ กัน บางคนถามว่า ถ้าเราหยุดเพื่อแก้ไข ปรับปรุง แล้ว มันจะไม่ช้าลงหรือไง ? ตอบได้เลยว่าช้าลงอย่างแน่นอน แต่เฉพาะในช่วงแรกเท่านั้น ต่อจากนั้นคุณจะเร็วขึ้นอย่างต่อเนื่องCycle time
เป็นค่าที่บอกว่า คุณมีความเร็วเท่าไรต่อการทำงานงานหนึ่ง ๆ ให้เสร็จสิ้น หรือความเร็วของทีม ในการตอบสนองต่อสิ่งหนึ่ง ๆ เช่น bug !! ตัวอย่างง่าย ๆ ของ Cycle time คือ การเข้าคิวซื้อและรับของในร้านกาแฟ คุณใช้เวลาเท่าไรในการเข้าคิวกว่าจะได้กาแฟตามที่ต้องการ ถ้าใช้เวลาในการรอนาน ๆ นั่นหมายถึง คุณสร้างประสบการณ์ที่แย่ ๆ ให้กับลูกค้า มันย่อมไม่ใช่สิ่งที่ดีนัก !! ไม่ว่ากาแฟจะรสชาติดีเพียงใด ไม่ว่าคนชงจะเก่งขนาดไหนซึ่งการปรับค่าของ Cycle time ให้ลดลงนั้น ไม่สามารถทำได้ด้วยการเพิ่มคุณภาพ ไม่สามารถทำได้ด้วยการเพิ่มจำนวน Throughput เพราะว่ายิ่งเพิ่มสิ่งต่าง ๆ เหล่านี้เข้าไป ยิ่งทำให้เวลารอนานขึ้นไปอีก
แล้วทำอย่างไรดีล่ะ ?
คุณน่าจะรู้และเข้าใจว่า การเพิ่มจำนวน Throughput ไม่ได้ช่วยเพิ่มความเร็วเลย ดังนั้น สิ่งที่ต้องทำคือ รู้ก่อนว่าตัวเองมีความสามารถเท่าไร ? หรือจำนวนงานเท่าไร ที่สามารถทำให้เสร็จในช่วงเวลาหนึ่ง นั่นคือจงหาค่า Limit Work In Progress (WIP) ซะคำถามคือใครจะบอกได้ล่ะ ? ตอบง่าย ๆ ว่า ทีมที่ทำไงล่ะ จงเรียนรู้ไปด้วยกันส่วน Cycle time ที่ดี ก็คือ ต้องสั้นที่สุดเท่าที่จะทำได้ ถ้าต้องการให้ชงกาแฟเร็วขึ้น วิธีการง่าย ๆ คือ ลดคุณภาพของการชง ซึ่งมันไม่ดีอย่างแน่นอน ทั้งต่อร้าน และ ลูกค้า !! ดังนั้นวิธีการที่เหมาะสมก็คือ
- เพิ่มจำนวนคนชงสิ
- แบ่งขั้นตอนการชงออกมาสิ