ทำไมซอฟต์แวร์ถึงช้าลงทุกปี

ระบบไม่ได้แก่ลงเหมือนเครื่องจักร แต่มันรกขึ้นทุกครั้งที่เราเพิ่มของโดยไม่เคยเก็บกวาด
ผู้บริหารคนหนึ่งถามทีมพัฒนาด้วยความหงุดหงิดว่า ทำไมฟีเจอร์ที่เมื่อสามปีก่อนใช้เวลาหนึ่งสัปดาห์ ตอนนี้กลับใช้เวลาหนึ่งเดือน ทีมไม่ได้ขี้เกียจลง คนก็ยังเก่งเหมือนเดิม แต่ทุกการเปลี่ยนแปลงเล็ก ๆ กลับต้องระวังมากขึ้นเรื่อย ๆ เพราะไม่มีใครมั่นใจอีกแล้วว่าการแก้ตรงนี้ จะไปทำให้อะไรพังตรงไหน
คำตอบไม่ใช่เรื่องของคน แต่เป็นเรื่องของแรงโน้มถ่วงตามธรรมชาติของซอฟต์แวร์ทุกตัว ที่ค่อย ๆ ดึงมันให้ซับซ้อนขึ้นเสมอ ถ้าไม่มีใครออกแรงต้านมัน
ความรกที่สะสมทีละนิด
ทุกครั้งที่เราเพิ่มฟีเจอร์ใหม่ เรากำลังเพิ่มเส้นทางใหม่ให้ข้อมูลไหลผ่าน เพิ่มกรณีพิเศษ เพิ่มเงื่อนไข แต่ละอย่างดูเล็กน้อยในตอนนั้น เหมือนการวางของชิ้นเดียวบนโต๊ะที่ยังว่าง แต่เมื่อทำซ้ำเป็นร้อยเป็นพันครั้งโดยไม่เคยจัดเก็บ โต๊ะที่เคยโล่งก็กลายเป็นกองที่ไม่มีใครกล้าขยับ เพราะกลัวว่าทั้งกองจะถล่ม
นี่คือสิ่งที่คนในวงการเรียกว่าหนี้ทางเทคนิค มันไม่ใช่ความผิดพลาด แต่เป็นการยืมความเร็วในวันนี้ มาแลกกับความช้าในวันหน้า และเหมือนหนี้ทุกชนิด มันมีดอกเบี้ย ยิ่งปล่อยไว้นาน ดอกเบี้ยยิ่งทบต้น จนวันหนึ่งคุณจ่ายแต่ดอกเบี้ยโดยไม่ได้แตะเงินต้นเลย
ความเย้ายวนของการเพิ่มอย่างเดียว
การเพิ่มฟีเจอร์ใหม่เป็นสิ่งที่มองเห็นได้และวัดได้ มันได้รับคำชม ได้ขึ้นสไลด์ในการประชุม ส่วนการกลับไปจัดระเบียบโค้ดเก่านั้นมองไม่เห็นจากภายนอก ลูกค้าไม่รู้สึกถึงมัน และมันไม่มีฟีเจอร์ใหม่ให้อวด ดังนั้นเมื่อต้องเลือกระหว่างของใหม่ที่จับต้องได้ กับการเก็บกวาดที่ไม่มีใครเห็น ธุรกิจส่วนใหญ่จึงเลือกเพิ่มเสมอ
ปัญหาคือ การเลือกเช่นนั้นซ้ำ ๆ ในที่สุดจะทำให้คุณเพิ่มของใหม่ไม่ได้เลย เพราะระบบรกจนการขยับใด ๆ กลายเป็นเรื่องเสี่ยง ความเร็วที่คุณรักษาไว้ในระยะสั้น กลับมาเก็บค่าตอบแทนในรูปของความช้าถาวร
- เรารู้ไหมว่าเวลาของทีมหายไปกับการเพิ่มของใหม่กี่ส่วน และไปกับการระวังของเก่าไม่ให้พังกี่ส่วน
- ครั้งสุดท้ายที่เราอนุญาตให้ทีมจัดระเบียบโค้ดโดยไม่ต้องมีฟีเจอร์ใหม่ติดมาด้วยคือเมื่อไหร่
- เราวัดความเร็วในการส่งมอบของทีมเทียบกับปีก่อนหรือไม่ หรือเรารู้สึกแค่ว่าทุกอย่างช้าลง
วินัยที่ต้านแรงโน้มถ่วงนี้
ทีมที่รักษาความเร็วได้นานหลายปี ไม่ได้เก่งกว่าทีมอื่นโดยกำเนิด พวกเขาเพียงถือวินัยข้อหนึ่งอย่างจริงจัง คือการเก็บกวาดเป็นส่วนหนึ่งของงานปกติ ไม่ใช่โครงการพิเศษที่รอวันว่าง ทุกครั้งที่แตะโค้ดส่วนใด พวกเขาทิ้งมันไว้ในสภาพที่ดีกว่าตอนที่เจอ ทีละนิด สม่ำเสมอ จนความรกไม่มีโอกาสสะสม
ในฐานะเจ้าของ คุณไม่ต้องเข้าใจโค้ด แต่คุณต้องเข้าใจว่าการเก็บกวาดนี้คือการลงทุน ไม่ใช่ค่าใช้จ่ายที่ตัดทิ้งได้ เพราะมันคือสิ่งเดียวที่ทำให้ปีหน้าคุณยังขยับได้เร็วเท่าปีนี้
บริการที่เกี่ยวข้อง
รับพัฒนาเว็บแอปพลิเคชัน
สร้างเว็บแอปที่รองรับการเติบโตและเชื่อมกับระบบอื่นได้
WhaleScope
ดูโครงสร้างตลาดของธุรกิจซอฟต์แวร์ สื่อ และไอที บน WhaleScope
รายชื่อบริษัท ผู้เล่นรายใหญ่ อัตราคงอยู่ และการกระจายรายจังหวัดของหมวดการจัดทำโปรแกรมคอมพิวเตอร์ — จากข้อมูลจดทะเบียน 2 ล้านนิติบุคคล
อ่านต่อ

AI สร้างระบบได้ แต่ใครจะดูแลอีก 10 ปี?
ระบบที่สร้างเสร็จในสองสัปดาห์ต้องอยู่กับธุรกิจอีกหลายปี บทความนี้ชวนคิดเรื่องการดูแลรักษา ความเป็นเจ้าของความรู้ และวันที่คนเขียนมันจากไป

เมื่อ AI ทำให้ Technical Debt โตเร็วกว่าที่คิด
ความเร็วในวันนี้มีราคาที่ทบต้นในวันหน้า บทความนี้ชวนมองว่า AI เร่งทั้งการสร้างและการสะสมหนี้ทางเทคนิคไปพร้อมกันอย่างไร

ระบบที่ดูใช้งานได้ แต่ดูแลไม่ได้
ระบบที่ใช้งานได้ในวันส่งมอบ กับระบบที่ยังแก้ไขต่อยอดได้ในอีกสองปี เป็นคนละสิ่งกัน และความต่างนั้นมักเงียบจนกระทั่งสายเกินไป

ระบบที่สร้างเร็ว อาจแพงที่สุดในระยะยาว
ความเร็วในวันแรกมักถูกแลกด้วยทางลัดที่สะสมเป็นต้นทุนในวันที่เราไม่ได้นับ
