clever-code
จากหนังสือ Practice of an Agile Developer
มีคำแนะนำเกี่ยวกับวิธีการปรับปรุงความสามารถของ developer มากมาย
ทั้ง soft skill และ technical skill
แต่มีประโยคหนึ่งในหนังสือเล่มนี้ที่น่าจะโดนมาก ๆ คือ

Write clear code, NOT clever code

เป็นความสามารถที่สำคัญมาก ๆ ของ developer ควรจะมีไว้

ผมคิดว่า developer ส่วนใหญ่

มักชอบปรับปรุง code ให้ดีขึ้นกว่าเดิม
ทั้ง code ที่เขียนขึ้นมาใหม่
ทั้ง code เดิมที่มีอยู่แล้ว
เช่น

  • ลดจำนวนบรรทัดของ code
  • ลดความซับซ้อนลอง code
  • ตั้งชื่อให้เหมาะสม

ซึ่งผลที่ออกมาเราก็คิดว่ามันดีแล้วนะ

แต่สิ่งที่แปลกก็เกิดขึ้นมาจากทีม !!

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

เมื่อไปถามคนในทีมเกี่ยวกับ code เหล่านี้พบว่า

code ที่เขียนขึ้นมานั้น perfect มาก ๆ
code ที่เขียนขึ้นมานั้นมี pattern ที่ดีมาก
code ที่เขียนขึ้นมานั้นทำงานได้อย่างถูกต้อง

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

ดังนั้นสิ่งที่ควรคิดเมื่อต้องเขียน code คือ

สมาชิกทีม หรือ คนที่จะมาดูแลต่อไปจะเข้าใจได้ง่ายหรือไม่ ?
แน่นอนว่า อย่าคิดเอง เออเอง
แต่เอา code เหล่านั้นให้คนอื่น ๆ ในทีม review ซะ

ถ้าทีมไม่เข้าใจก็มีอยู่ไม่กี่ทางที่ทำได้เช่น

  • สอน
  • ปรับเปลี่ยน
  • ลบมันทิ้งไปซะ

สุดท้ายแล้ว เราไม่ได้ต้องการ code ที่สมบูรณ์แบบ

แต่เราต้องการ code ที่ชัดเจน
นั่นหมายถึงคนในทีมสามารถเข้ามาดูต่อได้ง่ายนะครับ

If you love writing code– really, truly love to write code– you’ll love it enough to write as little of it as possible.

จาก codinghorror.com

Reference Websites
http://blog.teamtreehouse.com/tips-for-writing-better-code
https://medium.com/@mikesherov/writing-clear-code-not-clever-code-d6b90353a3c5#.c0vqy7l6b
http://www.codethinked.com/dont-be-clever
https://www.quora.com/How-do-I-learn-to-write-simpler-more-efficient-code-with-fewer-lines
https://www.quora.com/What-are-some-of-your-personal-guidelines-for-writing-good-clear-code
https://blog.codinghorror.com/the-best-code-is-no-code-at-all/