Rubber Duck Debugging

--

เคยไหม.. เวลาเขียนโปรแกรมอยู่แล้วมันเจอบั๊ก หรือมันติดอะไรสักอย่างที่ไม่รู้ว่ามันคืออะไร

Photo by Rostyslav Savchyn on Unsplash

สิ่งแรกสำหรับชาวเดเวลอปเปอร์อย่างเราต้องทำก็คือ ไล่โค้ด นั่งอ่าน นอนอ่านโค้ดที่ไม่ว่าจะเป็นเราเขียนเองหรือเพื่อนๆ ในทีมเขียน เพื่อทำความเข้าใจสิ่งที่เกิดขึ้น รวมถึงทำไมต้องทำแบบนี้ กระดาษ ปากกาต้องพร้อม วาด flow การทำงานกันไป (ipad ที่ซื้อมาต้องได้ใช้ประโยชน์แล้ว ณ จุดนี้)​ บางครั้ง (แต่อาจไม่บ่อยครั้ง)​ เราจะสามารถแก้บั๊กยากๆ หรือโจทย์ยากๆ ได้อย่างกับอยู่ในทุ่งลาเวนเดอร์ แต่บางครั้ง (อันนี้หลายครั้ง)​ เราก็ติด ติด ติด… วดฟ! อิหยังวะ!? จนต้องลากเพื่อนในทีมมาช่วยกัน solve

จังหวะนี้แหละ เพื่อนที่เพิ่งเข้ามาใน context ของเราครั้งแรก ก็คงจะยังไม่เข้าใจว่า ปัญหาคืออะไร เกิดอะไรขึ้นบ้าง เราเองผู้ซึ่งอยู่กับปัญหามาซักพัก และผ่านกระบวนท่าต่างๆ มาบ้างแล้ว ก็อธิบายปัญหา เล่า context เล่า flow ที่มันเกิดขึ้น แต่ก็ยังไม่รู้นะ ว่าตรงไหนทำให้บั๊ก อยู่ๆ ในระหว่างทางการเล่าให้เพื่อนฟังนั้น เราอาจจะเคย ปิ๊ง! หลอดไฟสว่าง เห้ย เรารู้แล้ว! ว่าทำไมมันบั๊ก แถมแก้ด้วยวิธีที่ปิ๊งไปเมื่อกี๊ ก็ทำให้ผ่านได้ด้วย ในขณะที่เพื่อนยังเกาหัวแกร่กๆ อยู่เลย

Photo by Luis Tosta on Unsplash

สมัยฝึกงาน เราเองยังไม่เคยได้ยิน หรือรู้จักกับ rubber duck debugging ก็เลยคิดว่า “เป็นบารมีของพี่เค้า อยู่เฉยๆ เราก็แก้บั๊กได้” 555555

Rubber duck debugging คืออะไร

จากเรื่องที่อ่านก่อนหน้านี้ หลายคนจะสังเกตได้ว่า ตอนเราลากเพื่อนในทีม มาอธิบาย context หรือ flow ต่างๆ ให้เพื่อนฟัง เพื่อมาช่วยกัน solve แล้วอยู่ๆ เราก็หาทางแก้บั๊กได้เอง ในขณะที่เพื่อนอาจจะยังงงอยู่เลยนั้น เพื่อนเราเองที่ยังไม่รู้เรื่องอะไรเลย แล้วก็ยังไม่เอ่ยปากบอก solution อะไรด้วย ก็เปรียบเสมือนกับเราเอา rubber duck หรือเป็ดยางมาตั้ง พูดกับเราไม่ได้ ฟังอย่างเดียว เดี๋ยวแกก็คิดหาทาง solve โจทย์ออกเองแหละ

ทำไมถึงเราถึงคิดออก

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

Photo by Brett Jordan on Unsplash

สุดท้าย

หลายคนอาจจะสงสัยว่า ถ้าไม่มี rubber duck ใช้อย่างอื่นแทนได้ไหม? คำตอบคือ ได้! จะใช้อะไรก็ได้ จะเป็นขา แขน น้องหมา น้องแมว ขวดน้ำ ปากกา หรืออะไรก็ได้ตามสะดวก สิ่งสำคัญคือตัวเราเองได้ค่อยๆ เรียบเรียงเรื่องราวเองได้หรือเปล่า เคล็ดลับก็คือ ค่อยๆ พูดสิ่งที่เกิดขึ้นออกมา บางทีถ้าคิดอยู่คนเดียวในหัว มันอาจจะพันๆ กัน แก้ไม่ค่อยออกก็ได้

ท้ายสุด

ใครเคยลองทำแล้ว มาลองแชร์กันได้นะคะ ว่าตัวเองเคยใช้ rubber duck เป็นตัวอะไรกันบ้าง? หรือว่าลองทำแล้ว เวิร์ค ไม่เวิร์คสำหรับตัวเอง

ฝาก blog ต่างๆ ที่อยู่ใน wordpress ด้วยค่าาา.. ยังไม่ได้ migrate มาเลย https://gatukgl.wordpress.com/

--

--