ช่วงเย็น ๆ เห็นบทสัมภาษณ์ของ Uncle Bob จากเว็บของ TypeMock
อ่านครบ 3 จบ จึงสรุปเรื่องที่น่าสนใจไว้นิดหน่อย
อ่านไปขำไป
อ่านไปยิ้มไป
ลองมาดูกันว่ามีคำถามคำตอบอะไรบ้าง
ภาษาโปรแกรมที่ยังใช้อยู่ มีอะไรบ้าง ?
- Java
- Clojure
- Go
- Python
- Ruby
- C, C++
ส่วนเหตุผลลองไปอ่านกันดู
แต่ที่น่าสนใจคือ การเขียนหลากหลายภาษานั่นเอง
วันนี้ developer เขียนกี่ภาษา และ ทำไมถึงเขียน ?
ลองตอบกันดูนะ
Passion ใน programming มีอะไรบ้าง ?
- Keeping the code simple
- Keeping the code clean
- Keeping the code well structured
- Keeping the code well tested
ไม่น่าจะต้องแปลอะไร
แล้ว developer แต่ละคนมีอะไรบ้าง ?
อะไรที่ไม่ควรมีใน programming เลย ?
ตอบสั้น ๆ ว่า SQL
ถ้าจะให้หนักกว่าก็ต้อง Store procedure นะ
สิ่งสำคัญที่ developer ต้องมีคืออะไร ?
ตอบสั้น ๆ อีกว่า Care
คือความใส่ใจใน code ที่เขียนขึ้นมา
ไม่ใช่รีบเร่งเขียนให้มันเสร็จ ๆ ไป
ซึ่งแทนที่จะเร็วกลับทำให้ช้ากว่าเดิมอย่างมาก
จากนั้นต้องอดทน และ ความเป็นมืออาชีพในสิ่งที่ทำ
เพราะว่ามันคืออาชีพของเรา
สิ่งที่ต้องตระหนักคือ
เราเขียน code เพื่อให้คนอ่านเข้าใจได้ง่าย
และง่ายต่อการเปลี่ยนแปลง
โดยคนที่มีความสามารถเหล่านี้กลับมีน้อยมาก ๆ
เป็นเรื่องที่แปลกแต่จริงนะ
จะโน้มน้าวให้ Manager เข้าใจหรือยอมรับกับ TDD ?
ตอบแบบตรง ๆ คือ ไม่ต้องทำ
เพราะว่ามันไม่ใช่หน้าที่อะไรของ Manager เลย
ต้องมาเข้าใจ หรือ รู้ว่าคุณทำอะไร
แต่มีคุณเท่านั้นที่รู้และเข้าใจว่า
ถ้าต้องการให้งานหรือ code ออกมาดี
จะต้องทำอะไรบ้าง
คำถามจริง ๆ ที่ต้องถามคือ
จะโน้วน้าวคนในทีมหรือเพื่อร่วมงานของคุณมาเขียน unit test
หรือปฏิบัติตามแนวคิด TDD อย่างไรมากกว่า ?
ถ้าคุณเชื่อและลงมือทำแล้ว
แต่ไม่มีใครเชื่อหรือทำตามคุณเลย
หลาย ๆ คนก็จะเลิกทำ !!
แต่สิ่งที่คุณต้องทำคือ อย่าละทิ้งแต่ให้ทำต่อไปเรื่อย ๆ
ถ้าคุณอยู่ในทีมที่ไม่เขียนและไม่เห็นคุณค่าของมัน
สิ่งที่ควรทำคือ เปลี่ยนทีมดีกว่า
แต่ถ้าคนส่วนใหญ่ในทีมเห็นคุณค่าและปฏิบัติแล้ว
คนบางส่วนไม่สนใจ
สิ่งที่ควรทำคือ เอาคนที่ไม่สนใจออกไปจากทีม
สำหรับการฝึกฝน TDD ชอบโจทย์หรือ Kata อะไรบ้าง ?
- Video Store
- Bowling game
- Prime factor
- Word wrap
- Stack
สิ่งที่ขาดไม่ได้สำหรับการทำงานในแต่ละวัน ?
Unit testing framework ดี ๆ กับ IDE แจ่ม ๆ เช่น Jetbrains
มีคำแนะนำแจ่ม ๆ อะไรบ้างที่เคยได้รับ ?
เข้าใจ business ของสิ่งที่กำลังทำก่อน
จะทำให้เขียน code และแก้ไขปัญหาได้ดีและตรงมากยิ่งขึ้น
ไม่ใช่แค่เลือกภาษาแจ่ม ๆ และเทคโนโลยีแจ่ม ๆ เพื่อสนองความต้องการของตนเอง
สุดท้ายแล้ว เหตุใดคุณภาพในอุตสาหกรรมการพัฒนา software มันจึงแย่เอามาก ๆ ?
เลือกวิธีการผิด
คิดว่าสิ่งที่เลือกจะทำให้ไปได้เร็วหรือพัฒนาได้เร็ว แต่คิดผิด
เราไม่สามารถไปได้เร็ว ถ้าทำแบบรีบเร่ง
แต่เราสามารถไปได้เร็ว ถ้าคุณสนใจและใส่ใจในสิ่งที่ทำ ทำให้มันออกมาให้ดี
ตามแนวคิดของ TDD คือ ทำดีดี !!
อ่านจบแล้วก็เขียน code กันเถอะครับ