더북(TheBook)

3.1 깨지 않았다면 깨버려라

과거 일했던 회사에서 처음 배운 것 중 하나는 어떤 대가를 치르더라도 코드 재작성을 피하는 것이었다. 변경을 거듭할 때마다, 잘 되던 것이 오히려 버그로 회귀할 위험이 있기 때문이다. 버그는 비용이 많이 들고, 그것이 새로운 기능의 일부일 때는 버그를 수정하는 데 시간이 많이 걸린다. 이렇게 회귀하는 것은 버그가 있는 새로운 기능을 릴리스하는 것보다 더 나쁘다. 즉, 한 단계 더 후퇴하는 것이다. 버그가 농구에서 슛을 놓친 것이라면, 회귀는 마치 자기 팀 골대에 골을 넣어 상대 팀에게 점수를 내주는 것과 같다. 시간은 소프트웨어 개발에서 가장 중요한 자원이며, 시간을 잃는 것은 가장 심각한 손해이다. 회귀는 가장 많은 시간을 잃게 만든다. 회귀를 피하고 코드를 지키는 것이 합리적이다.

하지만 코드를 변경하지 않으면 결국 문제가 발생할 수 있다. 새로운 기능을 구현하기 위해서 무언가를 부수고 다시 만들어야 한다면 개발에 방해가 될 수 있기 때문이다. 기존 코드를 그대로 두고 최대한 건드리지 않은 채로 새로운 코드에 모든 것을 추가하는 데 익숙할 수 있다. 하지만 코드를 변경하지 않고 그대로 두면 더 많은 코드가 필요할 수 있으며, 결국 유지보수해야 하는 코드의 양만 증가시킬 뿐이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.