TDD Misconception (Continue…)

Chris
Chris’ Dialogue
Published in
1 min readApr 2, 2017

เขียนภาคต่อจาก TDD Misconception เดิม

ในบทความแรกผมเขียนว่าปัญหาของการทำ TDD ที่ผมเคยเจออย่างหนึ่ง คือการพยายามเขียนให้ครอบคลุมมากเกินไป หรือมีความกลัว จนทำให้ไม่สามารถ Productive ได้หลังจากเริ่มทำเทส แล้วก็เลยมองว่า Test เสียเวลา

แต่ผมว่าปัญหามันอาจจะลึกกว่านั้น

การที่ไม่สามารถ Encourage ให้สร้าง Automated test หรือเขียนเทสเนี่ยอาจจะเป็นแค่เสียงสะท้อนเล็กๆ ของปัญหาที่ใหญ่กว่านั้นก็ได้นะครับ

เช่น ถ้าทีมต่างคนต่างทำงาน ต่างคนต่างไม่ได้พร้อมจะช่วยแก้โค้ดของกันและกันอยู่แล้ว นั่นโค้ดฉัน นี่โค้ดคุณ ไม่ได้ไว้ใจกันในทีมมากพอ

พอเทสพัง ทีมที่ไม่ช่วยกันก็จะเริ่มเบลมว่า “น่าเบื่อ ต้องมาแก้งานคนอื่น เนี่ย มีเทสเยอะๆ เสียเวลา”

พอมี Bug ทีมที่ไม่ช่วยกันก็จะเริ่มเบลมว่า “ทำไมคุณไม่เขียนเทสให้ครอบคลุม เขียนให้มันเยอะๆ สิ พอมีบั๊กมันเดือดร้อนคนอื่นเค้า”

ในสภาพแบบนี้คงไม่มีใครในทีมมีแรงจูงใจให้เขียนเทส

ในสภาพแบบนี้การทำ TDD ล้มเหลวเป็นแค่เสี้ยวเล็กๆ ของปัญหาที่ใหญ่กว่านั้นมาก

ปัญหาแท้จริงคือ ทีมคุณไม่เชื่อใจกันตั้งแต่แรกแล้วไง ซึ่งนั่นนะ Critical กว่า

และเราควรจะเรียกความมั่นใจของทีมกลับมาให้ได้โดยเร็ว ก่อนที่จะนำ Process เข้ามา

การสร้างเทสไม่สำเร็จ ทำให้โปรแกรมเมอร์เขียนเทสไม่ได้ ผมว่าส่วนมากเลย (เชื่อเลยว่าเกิน 70%) เป็นเพียงแค่ยอดภูเขาน้ำแข็งเท่านั้นแหละ ใต้ภูเขาน้ำแข็งมันอาจจะมีปัญหาที่ลึกลับซับซ้อนกว่านั้นอยู่อีกเยอะ

แต่สำคัญมากคือ ถ้าทีมไม่เชื่อใจกัน ไม่ว่าจะในทีมเอง หรือบริหารไม่เชื่อใจทีม ผมว่ามันแก้ไม่ได้ด้วย Process เสมอไปอ่ะนะ (แม้แต่การเขียนเทสก็ตาม) โอเค มันอาจจะช่วยได้บ้างแหละ แต่ระยะยาวผมว่าไม่ใช่

อยากให้นึกถึงคู่รักที่กลัวแฟนเจ้าชู้เลยตั้ง Process ว่าให้ฉันเช็คไลน์ทุกๆ ชั่วโมง กลับบ้านห้ามเกิน 6 โมง ต้องให้เช็คตำแหน่งได้ทุกวันทุกเวลา

เขาคิดว่าจะแก้ปัญหาความไม่เชื่อใจได้ด้วย Process

น่าแปลกมั้ย ที่หลายครั้ง มันก็ยังนอกใจได้อยู่ดี ส่วนคนที่ไม่ได้กะจะนอกใจ ก็มักจะทนไม่ไหวเลิกกันอยู่ดี

ผมจะชี้ว่า บางครั้งการพยายามแก้ปัญหาที่ลึกกว่าด้วย Process หรือแม้แต่ด้วย มันไม่ใช่คำตอบตั้งแต่แรกแล้ว

ที่ผ่านมาผมเขียนว่า คนเราเขียนเทสเพื่อให้ลดความกลัวในการเขียนโค้ด

แต่จุดนี้ ผมจะบอกว่าถ้าความกลัวในการเขียนโค้ดของทีมงานคุณ ไม่ได้เกิดจากการกลัวบั๊ก ไม่ได้เกิดจากการไม่มีเทสครอบคลุม แต่เกิดจากตัวทีมเอง ไม่ว่าจะฝั่งบริหาร หรือภายในทีมเอง

การเขียนเทส ทำเทส มันแทบจะไม่ช่วยอะไรเลยนะครับ

และมันก็มีแนวโน้มจะล้มเหลวเยอะมาก

เพราะมัน “ไม่มีประโยชน์” และ “สิ้นเปลือง” จริงๆ นั่นแหละครับ ในกรณีนี้

--

--

Chris
Chris’ Dialogue

I am a product builder who specializes in programming. Strongly believe in humanist.