요즘 내가 작성한 코드가 너무 별로인 것 같다. 설명은 어렵지만 감각적으로 느껴지는 것들이 있다. 요즘 패턴이나 습관을 이리저리 바꿔보는 중이라 그럴 수도 있다. 실험하며 바꾸려는 이유가 있으면 좋겠다. 그래서 코드에는 ‘한계 수명’이 있어서 그런 것이라고 이유를 붙였다.
많은 개발자들은 영원불멸한 코드를 꿈꾼다. 요구사항과 특이사항을 모두 만족하고, 건드리지 않아도 잘 돌아가는 그런 코드. 그런데 영원불멸한 코드가 좋은 것인지 한 번 즈음은 생각해볼 필요가 있다.
영혼불멸을 위해서는 무제한의 수명이 필요하다. 수명은 환경과 상황에 영향을 받는다. 그 두 가지를 생각한다면 영혼불멸의 코드는 불가능하다. 새로운 개념이 제시되고, 언어와 기술 기반이 계속 바뀐다. 오래 가는 비즈니스는 드물고, 작은 회사라면 매일이 만들고 지우는 일의 연속이다. (코드의 입장에서는 가만히 있는데 못 살게 구는 느낌이 들지 않을까)
그 외에도 코드의 수명이 깎일 수 있다. 정확히는 코드를 짠 개발자가 깎이고, 본인에게 실망하고, 무뎌지는 과정이다. 서로 하는 이야기가 달라서 어느 장단에 코드를 짜야할지 모를 때. 제대로 짰다고 생각했음에도 버그나 장애가 발생할 때. 누군가가 코드가 아닌 다른 이유를 가지고 나를 인격적으로 짓이길 때.
어쩌면 그래서 ‘내구도’라는 표현을 쓰고 싶지 않았던 것 같다. 코드 자체의 내구도가 올라가도 만들고 다듬는 사람이 지쳤다면 이미 죽은 코드가 아닌가. 한계라고 생각하는 코드를 어떻게든 살려서 쓰고, 또 살려서 쓰고, 그러면서 더 알게 된 내용을 토대로 리팩토링하고. 실패하고. 그게 우리의 일이고, 그래서 수명, 그것도 ‘한계 수명’이라는 단어에 꽂힌 것 같다.
그럼에도 나는 여전히 오래 갈 수 있는 코드를 꿈꾼다. 한 번을 할 때 제대로 하고 싶고. 돌아가는 코드들을 새 환경, 새 방식에 올려 잘 돌아가게 만들고 싶다. 당연히 그러려면 나도 새로운 것을 공부하고, 실험하고, 또 깨져봐야한다.
한계 수명을 늘리려는 마음은 어디서 왔을까. 본능에서 이유와 원리를 찾는 것은 언제나 나의 한계를 인식하기 위함에 있다.