What I Learned | 레거시를 다르게 바라보기

레거시(Legacy), ‘(과거의)유산’ 이란 단어다. IT 업계에서는 이 레거시라는 단어가 특히 더 부정적으로 사용된다. 과거의 확장성이 부족한 코드, 정책 등을 가리키면서 레거시란 단어를 사용한다. 또 개발자, PM 등의 프로덕트 직군으로부터 “레거시 때문에 힘들다”, “레거시가 있어서 쉽지 않다”, “레거시 먼저 제거를 해야 한다” 등의 말을 심심치 않게 들을 수 있다.
물론 레거시가 어떤 새로운 일을 하는데 있어 발목을 잡는다는 건 백번 이해하고, 공감한다. 나 역시 레거시 때문에 하지 못한 것도 많았고, 레거시를 고치기 위해 많이 노력도 하고 그랬으니까. 그럴 때 마다 “아 레거시 어렵네..”를 혼자 중얼거리기도 하고.
레거시 위에 무엇을 쌓아 올리는 것은 쉽지 않다. 완전 처음부터 아무 것도 없는 상태에서 코드와 정책을 짜지 않는 이상, 우리는 누군가가 만든 레거시 위에서 새로운 것을 쌓아 나가야 한다. 그래서 레거시를 좀 다르게 볼 필요도 있다. 레거시가 좋지 않은 것은 맞지만, 현실적으로 레거시가 없을 수 없기 때문에.
레거시는 “과거에 열심히 노력한 산물”이자 “그때 당시 최선의 선택”으로 봐야 한다. 그때는 맞고 지금은 틀릴 수 있지만, 레거시는 그 상황에서 최선의 선택을 내린 결과물이다. 누구도 나중에 이 코드가, 이 정책이 나중에 새로운 것을 만들기 어렵게 하는 레거시가 되도록 만들어야지 하는 사람은 없다. 모두들 각자의 상황에서 최선의 선택을 내린다.
레거시가 없다는 건 결국 한 게 없다는 뜻이기도 하다. 무언가를 도전하고 만들었으니까 레거시가 생기는 것이다. 그러므로 레거시를 만든 모두는 직접 손에 흙 묻혀 가면서 어떤 문제를 해결하고, 어떤 작업을 했다는 것이다(물론 미래 생각 안하고 오늘만 바라보고 사는 정책이나 코드를 짜면 안되는 건 맞다).
“이 때 왜 이걸 이렇게 만든거야” 하는 건 결과론 적인 이야기에 지나지 않는다. 그 상황, 그 자리에 있었다면 더 안좋은 판단을 내렸을 수도 있고, 그게 최선의 판단이 아니란 것을 알지만 차악 혹은 차선의 판단을 내릴 수 밖에 없던 상황일 수도 있다.
뉴욕에 가면 거의 한 블럭 건너 한 블럭 꼴로 많은 건물들이 보수 공사를 하고 있다. 또한 새롭게 짓는 곳도 많고. 왜냐면 뉴욕은 100년 넘는 건물도 많고 해서 계속해서 보수 공사를 해줘야 한다. 현재 뉴욕에서는 과거의 건물들이 레거시인 셈이다. 어떤 레거시는 보완하기도 하고, 어떤 레거시는 완전히 없애서 새로운 것을 짓기도 하고. 물론 뉴욕 사는 사람들은 이런 보수공사 때문에 생기는 비계 등을 별로 안 좋아하겠지.
IT 프로덕트를 뉴욕의 건물들과 완전히 동일시 할 수는 없지만, IT 프로덕트가 건물 짓기, 도시 개발과 비슷하다는 생각을 한다. 그냥 레거시를 있는 그대로 받아들이고, 고칠 부분은 고치면 된다. 싫어한다고 달라지는 건 없다. 물론 레거시 때문에 생각했던 완벽한 방법을 구현하지 못할 수 있다. 그러면 레거시를 고치면서 그 방법을 구현하거나, 차선의 방법을 선택하면 된다. 문제 상황 속에서 어떻게든 해결 방법을 찾아내는 것이 해야 할 일이니까.
내가 지금 하는 선택, 짜는 정책 혹은 코드는 미래 언젠가는 레거시가 되고 만다. 그러니 과거의 레거시에 대해서 너무 가혹하거나 비판적으로 대하지 말고, 내가 만든 결과물이 항상 진리처럼 미래 어떤 상황에도 옳을 것이라고 생각하지 말고 겸손해야 한다.
blog by ash에서 더 알아보기
구독을 신청하면 최신 게시물을 이메일로 받아볼 수 있습니다.