users-programmers
จากการสอน และ แบ่งปันเรื่อง 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 ของระบบมันแย่มากๆ ดังนั้น เขียนแย่ๆ กันต่อไป
  • เอ่อ … มันพูดยากนะ คือว่า แบบว่า … ก้มหน้าทำกันต่อไป ..

แล้วคุณคิดว่ามันมีอะไรอีกล่ะ ?
และจะปรับปรุงกันอย่างไรดีหนอ ?