คำถามที่น่าสนใจเกี่ยวกับ software
เป็นไปได้ไหม ที่เราจะทำให้ code ในระบบที่ทำงานซับซ้อน
ให้มันอ่านง่าย
ให้มันแก้ไขได้ง่าย
เหมือนกับระบบที่ง่ายๆ
คำตอบคือ ไม่มีทาง !!
แย่ล่ะสิ …
มาดูหน่อยสิว่า ระบบง่ายๆ มี code อย่างไร ?
เป็น code ที่อ่านง่าย
เป็น code ที่เปลี่ยนแปลงได้ง่าย
ตัวอย่างเช่น
ดังนั้น
ถ้าระบบที่พัฒนามี code ไม่เกิน 50 บรรทัด แล้ว
แน่นอนว่า คุณสามารถดูได้ว่า
แต่ละตัวแปรเก็บค่าอะไร ทำงานอย่างไร
และแน่นอนว่า มันง่ายต่อการอ่าน และ การเปลี่ยนแปลง
แต่ในโลกของการพัฒนา software นั้น
จำนวน code มันเป็นหลักพัน หลัก หมื่อ หรือ แสนบรรทัด
แล้ว code ชุดข้างบนอยู่ในนั้น
คำถาม
คุณยังคิดว่า code นั้นยังจะอ่าน และ เปลี่ยนแปลงได้ง่ายอีกไหม ?
คุณยังคิดว่า if-else ใน code ยังมีความหมายเช่นเดิมไหม ?
คุณคิดว่าว่า code ส่วนนี้มันต้องไปทำงาน หรือ ส่งผลต่อส่วนอื่นๆ ไหม ?
คำตอบ
ไม่เลยนะ มันอ่านยากมากๆ เข้าใจยากด้วยสิ !!
ระบบงานมันโตขึ้นทุกวัน
ก็ยิ่งเพิ่มความซับซ้อน และ เพิ่ม dependency ต่างๆ
ทำให้จาก ตัวอักษร กลายเป็นประโยค
จากประโยค กลายเป็น statement
จากหลายๆ statement กลายเป็น method
จากหลายๆ method กลายเป็น class
จากหลายๆ class กลายเป็น module
จากหลายๆ module กลายเป็น program
จากหลายๆ program กลายเป็น system
และแน่นอนว่า ขึ้นชื่อว่า system หรือระบบงานนั้น
มันย่อมมีความซับซ้อนเสมอ
ยากต่อการทำความเข้าใจ
ยากต่อการอ่าน
ยากต่อการเปลี่ยนแปลงเสมอ
ดังนั้น สิ่งที่ควรจะถามก็คือ
คุณทำการแบ่ง method ใหม่ๆ ออกเป็น method ย่อยๆ ไหม ?
คุณทำการลด code ที่มันซ้ำซ้อนลง หรือ กำจัดออกไปไหม ?
คุณทำการแบ่งส่วนการทำงานต่างๆ บ้างไหม ?
เพื่อทำให้มันอ่านง่าย และ แก้ไขได้ง่าย
หรือว่าคุณ
ปล่อยให้ method และ class มันใหญ่โตขึ้นไปทุกๆ วัน
ปล่อยให้ code มันซ้ำซ้อนกันเยอะขึ้นไปทุกๆ วัน
ซึ่งทุกๆ คำถามนั้น คำตอบที่ได้
มันจะสะท้อนถึงตัวคุณ ทีมของคุณ และรวมไปถึงองค์กรที่คุณอยู่ ว่าเป็นอย่างไร
คำถาม
โต๊ะทำงานของคุณเป็นอย่างไร ?
ลองเอามาโชว์หน่อยสิ
จากรูป
เป็นห้องสมุดที่มีการเรียงหนังสือเป็นนระเบียบมากๆ
และเป็นสถานที่ที่สวยงามมากๆ
คำถาม
ลองคิดดูสิว่า ถ้าเป็นคนอ่านหนังสือหน้าใหม่ ที่ไม่เคยเข้ามาในห้องสมุดนี้เลย
ถ้าให้ทำการหาหนังสือสักเล่มล่ะ คิดว่าต้องใช้เวลานานไหม ?
คำตอบ
ต้องใช้เวลาในการหานานมากแน่นอน
เพราะว่าไม่เคยเข้ามาใช้ห้องสมุดเลย
ดังนั้น จะต้องเข้าไปหาบรรณารักษ์ หรือ ไปดูระบบจัดเก็บหนังสือ
ว่าหนังสือที่เราต้องการอยู่ที่ไหน อย่างไร
เปรียบได้กับ สมาชิกใหม่ในทีม หรือ องค์กร
ก็ต้องการเวลาในเรียนรู้ระบบเช่นกัน
เพื่อทำการเรียนรู้ และ ศึกษาองค์กรนั้นๆ
และมันไม่ง่ายเลยนะ
แต่สิ่งที่ดีคือ มันเป็นระเบียบและมีจุดหรือระบบที่บอกทางเรา
ลองคิดดูสิถ้าระบบมี code เป็นหมื่นบรรทัด
มันจะยากเพียงใด ?
ลองกลับไปดูสิว่า code ของคุณเป็นอย่างไร ?
คุณทำให้ code ดีขึ้นหรือยัง ?
หรือยิ่งเขียน code ก็ยิ่งเขียน code ที่มันแย่ๆ ออกมา
Reference Websites
http://blog.cleancoder.com/uncle-bob/2015/04/15/DoesOrganizationMatter.html