ราคาของความฉลาด: คู่มือความเรียบง่ายเชิงกลยุทธ์
เจาะลึกมุมมองวิศวกร backend เกี่ยวกับกับดักโค้ดซับซ้อนเกินจำเป็นที่สร้างต้นทุนด้านมนุษย์และความยุ่งยากในยามวิกฤต

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- วิศวกร backend มักผ่านช่วงเวลาที่ภูมิใจกับการย่อโค้ดให้สั้นและซับซ้อน
- โค้ดที่ฉลาดเกินไปมักแก้ปัญหาหนึ่งแต่แถมปัญหาอื่นให้อีกสามข้อ
- ต้นทุนที่แท้จริงคือต้นทุนด้านมนุษย์และการซ่อมบำรุงยามวิกฤต
- ความเรียบง่ายและความชัดเจนช่วยให้ระบบยั่งยืนกว่าความซับซ้อน
ช่วงเวลาหนึ่งในเส้นทางอาชีพของวิศวกร backend หลายคนมักมีความรู้สึกตื่นเต้นเมื่อได้เขียนโค้ดให้สั้นลง ฉลาดขึ้น และใช้การ abstraction มากขึ้น ความรู้สึกประหยัดโค้ดจาก 200 บรรทัดให้เหลือเพียง 15 บรรทัด หรือการสร้าง generic layer เผื่ออนาคตที่ยังไม่มีใครเรียกร้อง ทำให้รู้สึกเหมือนได้ยกระดับวงการวิทยาศาสตร์คอมพิวเตอร์ไปอีกขั้น

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ทว่าความจริงมักปรากฏเมื่อระบบพ่วงโปรดักชันเกิดล่ม บันทึกเหตุการณ์ (logs) ไร้ประโยชน์ และปัญหาซ่อนอยู่หลังชั้น indirection ถึงสามชั้น โค้ดที่เคยสวยงามจึงกลายสภาพเป็นเรื่องตลกขบขันในยามวิกฤต บัญชีต้นทุนของความฉลาดมักต้องชำระเสมอ บางครั้งจ่ายด้วยความซับซ้อนที่เพิ่มขึ้นทันที หรือบางครั้งต้องจ่ายในอีกหลายเดือนต่อมาเมื่อมีเพื่อนร่วมทีมคนใหม่เข้ามาเปิดดูซอร์สโค้ดด้วยความมึนงง
"โค้ดที่ฉลาดมักแก้ปัญหาหนึ่งเรื่องโดยการแอบแถมปัญหาให้อีกสามเรื่อง คุณได้ความยืดหยุ่น ความเร็ว และความสง่างาม แต่ต้องแลกกับความชัดเจน ความง่ายในการแก้บั๊ก และบางทีก็คือวันหยุดสุดสัปดาห์ของคุณเอง"
วิศวกร backend ผู้เขียนบทความ
แม้ว่าความฉลาดจะเป็นสิ่งจำเป็นในบางสถานการณ์ เช่น การจัดการระบบใกล้ระดับฮาร์ดแวร์ ปริมาณทราฟฟิกมหาศาล หรือข้อจำกัดด้านความหน่วง (latency) ที่โหดหิน ซึ่งเทคนิคขั้นสูงและการปรับแต่งแบบสุดโต่งถือเป็นเรื่องของการเอาตัวรอด แต่วิศวกรส่วนใหญ่ไม่ได้กำลังสร้างระบบฐานข้อมูลในถ้ำ พวกเขากำลังสร้าง API บริการภายใน ระบบชำระเงิน แดชบอร์ด และคิวงานที่ขับเคลื่อนธุรกิจในแต่ละวัน
ในมุมมองเชิงวิเคราะห์ การออกแบบซอฟต์แวร์มักติดกับดัก "การเตรียมพร้อมสำหรับอนาคต" จนเกินพอดี บริษัทที่ขายรองเท้ากลับสร้างแพลตฟอร์มที่รองรับทุกอุตสาหกรรมบนโลก ปัญหาไม่ได้อยู่ที่ตัวเทคโนโลยี แต่เป็นการสร้างตำนานและสถาปัตยกรรมที่ซับซ้อนเกินกว่าตัวธุรกิจจริง จนทำให้ระบบกลายเป็นภาระที่ทีมต้องคอยดูแลแทนที่จะเป็นเครื่องมือช่วยทำงาน
การพูดคุยทางเทคนิคมักวนเวียนอยู่กับต้นทุนของเครื่องจักร เช่น ซีพียู หน่วยความจำ และความหน่วง แต่ในระบบ backend ทั่วไป ความเจ็บปวดที่แท้จริงมักตกอยู่ที่ต้นทุนของมนุษย์ คำถามสำคัญคือวิศวกรใหม่ใช้เวลานานแค่ไหนในการแก้ไขโค้ดอย่างปลอดภัย หรือวิศวกรเข้าเวร (on-call) จะทำความเข้าใจระบบตอนตีสามเพื่อระงับวิกฤตได้ทันหรือไม่ เครื่องจักรไม่มีความรู้สึกและรันโค้ดอ่านยากได้สบาย แต่ความอดทนของมนุษย์มีขีดจำกัด

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ปรากฏการณ์นี้ทำให้ระบบหลายแห่งสร้าง "ฮีโร่ประจำองค์กร" ขึ้นมาเงียบๆ คือบุคคลเพียงคนเดียวที่เข้าใจกลไกทั้งหมดของระบบ จนกระทั่งการลาพักร้อนของคนๆ นั้นกลายเป็นความกังวลระดับองค์กร ซึ่งสิ่งนี้ไม่ใช่สัญญาณของความเป็นเลิศทางสถาปัตยกรรม แต่เป็นจุดอ่อนเดี่ยว (single point of failure) ที่สวมแว่นตาทำงาน หากระบบสามารถแก้ไขได้อย่างปลอดภัยโดยคนที่ประดิษฐ์มันขึ้นมาคนเดียวเท่านั้น ปัญหาที่แท้จริงจึงไม่ใช่เรื่องกำลังคน แต่คือเรื่องของการออกแบบ
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น