Refactor ชีวิต
วันก่อนใน Architect Suffer Clubhouse พี่ดีนพูดเรื่องสกิลในการ Refactor Legacy ว่าเป็นความสามารถที่สำคัญมากสำหรับ Software Architect
วันนี้ได้เห็นเพจนึงพูดเรื่อง บางคนมีแต่แนวคิดใหม่ๆ แต่ไม่ลงมือทำ ผมก็ถามตัวเองว่าทำไมมันยากนักที่จะทำกันนะ
มันทำให้ผมก็นึกขึ้นมาได้ว่าชีวิตของเรามันก็เหมือนโค้ด มันมี Legacy ติดตัวตลอดเวลา
เวลาเราจะเอาแนวคิดใหม่ๆ เข้ามาปฏิบัติในชีวิต มันก็เหมือนกับเวลาเราปรับปรุงซอฟต์แวร์ ถ้าเราไม่จัดที่จัดทางให้มันดีๆ ไม่ Refactor ระบบเก่าให้รับของใหม่ได้ เวลาเราปรับปรุงมัน เราก็จะเจอแรงต้านจาก Legacy system แล้วแรงต้านนั้นมักจะเป็นสาเหตุที่ทำให้การทำ Legacy modernization พังบ่อยครั้ง
ชีวิตก็เหมือนกัน เมื่อเราพยายามจะปรับปรุงชีวิตตัวเองโดยไม่ Refactor ของเก่าให้มันสะอาดเรียบร้อย แต่จะเอาของใหม่ๆ เข้ามาเพิ่มอัดๆ มันเข้าไปเรื่อยๆ เราก็จะเจอแรงต้านจาก Legacy ต่างๆ ของชีวิต อาจจะเป็นทรอม่าวัยเด็ก ชุดความเชื่อและชุดคุณธรรมที่ล้าสมัย นิสัยเดิม ความสำเร็จเก่าๆ ที่ติดตาจนเป็นอีโก้ ความรู้ที่บูดเน่าไม่ได้รับการอัพเดท สิ่งต่างๆ เหล่านี้ก็เหมือน Legacy code ที่จำเป็นจะต้องถูกจัดวางให้เชื่อมต่อกับสิ่งใหม่ๆ ได้ ซึ่งการจัดวาง Refactor นี้ก็อาจจะครอบคลุมไปถึงการทำความเข้าใจ Legacy ทำการอัพเดทมัน ทำการปรับโครงสร้างให้สามารถเชื่อมโยง Interface ได้ (น่าจะเทียบได้กับการร้อยเรื่องราว Self Narrative ระหว่างอดีตกับปัจจุบัน) หรือแม้แต่ตัดสินใจลบทิ้งออไปเมื่อไม่ใช้มันแล้ว
ซึ่งผมเชื่อว่ามนุษย์ที่รับอะไรใหม่ๆ เข้ามาได้ยากไม่ว่าจะตั้งใจขนาดไหน อาจจะเป็นได้ว่าไม่ได้ทำการ Refactor Legacy Life ให้พร้อมสำหรับสิ่งใหม่ที่จะเข้ามา จนทำให้ Legacy มันออกแรงต้านการปรับปรุงโดยที่อาจจะรู้ตัวหรือไม่รู้ตัว และทำให้ปรับปรุงเป็นไปได้ยากและติดขัด
การทำงานกับ Legacy สำคัญมากทั้งกับชีวิตและซอฟต์แวร์ และเช่นเดียวกับ Software Architect ใน Clubhouse ว่าไว้ว่า เราไม่สามารถออกแบบระบบที่ดีงามบนกระดาษแล้วดีดนิ้วเปรี้ยงเดียวเปลี่ยนได้ เราต้อง Migrate จาก Legacy ออกมา เราต้องทำงานกับ Legacy จนกว่ามันจะปรับไปเป็นของใหม่ที่ดีขึ้น
เช่นกัน เราก็ไม่สามารถอ่านแนวคิดดีๆ เจ๋งๆ ออกแบบชีวิต แล้วดีดนิ้วเปรี้ยงชีวิตเปลี่ยนได้ เราต้องทำงานกับ Legacy ของชีวิตเราเสมอ
เราจะบอกว่าฉันไม่ชอบชีวิตเก่าและ ดีดนิ้วเปรี้ยงเปลี่ยนชีวิตใหม่เลยดีกว่า มันก็จะสำเร็จได้ยากพอๆ กับคนที่พยายามทำ Legacy Modernization โดยไม่สนใจ Legacy system นั่นแหละ คือน้อยมากๆ ที่ทำแบบนั้นแล้วจะเวิร์ค ตัว Legacy Code, Legacy Life เนี่ย ถ้าคิดจะปรับปรุงมันแล้วละก็ คุณจะไม่ชอบยังไงมันก็หนีไม่พ้น
การ Refactor จึงเป็นสกิลที่สำคัญกับซอฟต์แวร์ข้ามไปถึงชีวิต