จากการสอน และ แบ่งปันเรื่อง TDD (Test-Driven Development) มา
สิ่งหนึ่งที่ผมมักจะถามไปยัง developer ก็คือ
- ชอบ code แบบไหน ?
- ไม่ชอบ code แบบไหน ?
คำตอบที่ได้รับกลับมานั้น ก็ดูแปลกๆ เนื่องจากพบว่า
สิ่งที่ developer ไม่ชอบ กลับกลายเป็นสิ่งที่ชอบทำกัน !!
ทำไมถึงเป็นอย่างนั้นล่ะ ?
ตัวอย่าง code ที่ developer ไม่ชอบ เช่น
- code ที่อ่านไม่รู้เรื่อง
- code ที่ซับซ้อน
- code ที่ไม่มีเอกสารอธิบาย
- code ที่ไม่มี test
- และอื่นๆ อีกมากมาย
แล้วทำไม developer ถึงทำสิ่งที่ไม่ชอบล่ะ ?
หรือว่า developer เป็นพวกโรคจิตนะ !!
จากการสอบถาม และ พูดคุย ก็พอสรุปความได้ว่า
มันมีที่มาที่ไปดังต่อไปนี้
- ได้รับความกดดันจากระดับหัวหน้า ที่มาพร้อมกัน ขอบเขตงาน และ deadline ที่กำหนดมาแล้ว ดังนั้นก็ปั่นงานกันอย่างเดียว
- งานเยอะ งานแทรก … สรุปแล้วจะทำอะไรดี … โดยสรุปเอาทุกอย่าง …
- process การพัฒนา software ที่ไม่ดี
- process การพัฒนาที่เยอะเกินไป
- requirement มันไม่ชัด (ส่วนใหญ่จะเป็นส่วนที่พัฒนาไม่ทัน หรือ ไม่เสร็จ)
- มีแนวคิดว่าต้องทำให้เสร็จ (Get it done) โดยไม่มีการทดสอบ หรือ ทดสอบไม่ครอบคลุม
- มีแนวคิดว่า On the job training มันดี … แต่จริงๆ แล้วมันเป็นอย่างไรกันนะ ?
- developer ไม่ชอบการทดสอบ
- developer ชอบการ debug ซึ่งมักใช้เวลาเยอะ
- developer ไม่ชอบสิ่งที่เรียกว่ามาตรฐาน ซึ่งบางอย่างมันเก่าไป ไม่ยอมเปลี่ยนแปลง
- develeoper ไม่มีโอกาสในการออกแบบสิ่งที่จะพัฒนาเลย ต้องทำตามคำสั่งอย่างเดียว
- developer ไม่ชอบการ maintenance code หรือระบบงาน เพราะว่าอะไรล่ะ ?
- developer ไม่ชอบทำเอกสาร !!
- developer เองไม่ได้สนใจพัฒนาตัวเองเลย วันๆ สนใจแต่เรื่องหุ้น
- เวลาในการ build software นานมากๆ
- ระบบมักจะหา bug ยากมากๆ และใช้เวลานาน
- Environment ในแต่ละส่วนต่างกันมากๆ ตั้งแต่ developer, development, testing, staging และ production
- code ในระบบที่เรียกว่า Legacy code มันแย่มากๆ
- code ของระบบมันแย่มากๆ ดังนั้น เขียนแย่ๆ กันต่อไป
- เอ่อ … มันพูดยากนะ คือว่า แบบว่า … ก้มหน้าทำกันต่อไป ..
แล้วคุณคิดว่ามันมีอะไรอีกล่ะ ?
และจะปรับปรุงกันอย่างไรดีหนอ ?