PO ไม่ให้เวลา cleanup code เลย…

เมื่อทีมขออนุญาตทำงานตามจรรยาบรรณ

Chokchai Phatharamalai
odds.team
2 min readApr 2, 2020

--

https://www.wallpaperflare.com/man-wearing-surgical-suit-near-mirror-man-wearing-grey-shirt-washing-his-hand-near-grey-stainless-steel-faucet-and-mirror-inside-room-wallpaper-zmgck

บ่อยครั้งที่ผมได้ยิน IT deparatment, Scrum master หรือทีมแชร์ความอึดอัดใจเวลาอยากเน้นความสำคัญเรื่อง technical debt ให้ product owner ได้ยิน บ่อยครั้งผมมักจะได้ยินคำตัดสินว่า PO ไม่ค่อย prioritize การ cleanup code, refactor หรือการทำ automate unit test ซึ่งเป็นการลงทุนระยะยาวให้กับ product ซักเท่าไหร่ ส่วนใหญ่จะ focus ที่การลงทุนระยะสั้นกับของที่อยู่ตรงหน้า ซึ่งทำให้ technical debt สูงขึ้นเรื่อย ๆ

photo by: Chokchai Phatharamalai

ช่วงที่ผ่านมาผมได้เชิญ Viktor Grgić มาสอน Certified LeSS Practitioner ระหว่างนั่ง observe อยู่ใน workshop ในฐานะผู้จัดงาน ผมก็ได้ยิน Viktor เจาะรายละเอียดของเวลาที่ใช้เขียนโค้ดว่ามันแบ่งเป็น 1. เวลาที่หาว่าโค้ดนี้มันทำอะไรของมันนะ กับ 2. ทำไมโค้ดฉันไม่เวิร์คนะ (3. เวลาพิมพ์ อันนี้จั๊วะเติมเอง วิกเตอร์ไม่ได้พูด)

ผมตกผลึกว่ามันเป็น abstraction ที่มีประโยชน์มากกว่าที่ผมเคยใช้มากมายมหาศาลเลย เมื่อก่อนผมเคยแบ่งเวลาที่ใช้เขียนโค้ดเป็น 1. เวลาที่ใช้เขียนของใหม่ กับ 2. เวลาที่ใช้แก้ของเก่าให้มันดี ซึ่งจริง ๆ แล้วการแบ่งแบบนี้มันเป็นหลุมพรางมาก ๆ เลยสำหรับ PO ที่กำลังไฟลนก้น ให้ตัดส่วนที่ใช้แก้ของเก่าให้มันดีทิ้ง ซึ่งถามว่าจริง ๆ PO มี information พอจะตัดสินใจไหม? คำตอบคือไม่ และในสกรัม เราก็ให้ทีมมี final say เรื่อง how กับ how much อยู่แล้ว

พอตกผลึกได้แบบนี้ กลับไปนึกถึงตัวเองที่แบ่งเวลาเขียนโค้ดซื่อ ๆ แต่ไม่มีประโยชน์ แล้วมานั่งตัดพ้อเหมือนนางเอกบ้านทรายทองว่า PO ไม่ priritize ให้ผม cleanup code เลย เป็นเรื่องทั้งเศร้าทั้งขำจริง ๆ

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

หมอ: จะต้องรีบผ่าตัดแล้วเนี่ย ด่วนมากเลย คนไข้อยากให้หมอล้างมือไหม?

ฉันใด

โปรแกรมเมอร์ก็ไม่ควรถาม PO ว่า

ปกม: โค้ดเก่าเละมากเลย ขอ refactor โค้ดหน่อยได้ไหม?

ฉันนั้น

เราแค่บอกว่าตรงนี้ใช้เวลานานหน่อยนะ ของเก่ามันเละมาก จบ

ต่อไปนี้ ผมจะเลิกแบ่งเวลาในการเขียนโค้ดแบบเดิม ๆ (แบบเดิมไม่ผิดนะ แค่ไม่มีประโยชน์ และบ่อยครั้งมีโทษด้วย) และแบ่งเวลาการเขียนโค้ดใหม่เป็น

  1. เวลาที่ร้องว่า พระสงฆ์! โค้ดนี้มันทำอะไรของมัน
  2. เวลาที่ร้องว่า พระสงฆ์! ทำไมโค้ดฉันไม่เวิร์ค
  3. เวลาที่ใช้พิมพ์

และลองจับเวลาดูจริง ๆ ว่าเราใช้เวลากับตรงไหนเท่าไหร่ ผมเชื่อหมดใจเลยว่า PO จะบอกว่า เวลา 1. และ 2. เป็น waste เราทำอะไรได้บ้างเพื่อลดเวลานั้น? ซึ่งคำตอบจากไขสันหลังผมตอบตามนี้

  1. เวลาที่ร้องว่า พระสงฆ์! โค้ดนี้มันทำอะไรของมัน << refactor สิ
  2. เวลาที่ร้องว่า พระสงฆ์! ทำไมโค้ดฉันไม่เวิร์ค << ทำ TDD สิ
  3. เวลาที่ใช้พิมพ์ << ฝึกพิมพ์สัมผัสสิ

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

บทความที่เกี่ยวข้อง

--

--