read

11/1 일 아침이 되자 이메일로 알림이 하나 날아왔다. 알림 제목은 '코드 상태 재확인 하기'.  3개월 전의 코드 리뷰에서 파생된 것이었다.

몇 달 전, 코드리뷰과정에서 dead code 에 대한 지적을 했는데, reviewee 가 짧은 미래 안에 그 사용이 확실시 된다는 말을 하며 체크인을 했던 부분이다. dead code 의 내용은, default value 를 가진 파라메터였는데, 어떤 caller 도 해당 파라메터를 사용하지 않고 있지 않았다.

정말 예측대로 사용되고 있는지 확인하기 위해서, 3개월 뒤에 알림을 추가해뒀다. 사실 지금 생각해보니, 이때 알림을 추가했던 행동이 감정적이었음을 인정한다. '어디 한번 나중에 가서 정말 쓰이는지 보자' 라는 심보였다. 어쨋든 지금 가서 확인해보니, 해당 파라메터는 여전히 쓰이지 않고 있다.

지금은 그런 감정이 없으니, 순수히 이 경험에서 무엇을 배울 수 있는지 살펴보는 게 좋을 것 같다. 일단 2가지 질문이 떠오른다. reviewee 가 언급했던 '짧은 미래' 가 아직 오지 않은 것인가? 아니면 '사용이 확실시 된다' 는 예측이 어긋난 것인가? 라는 것. 즉, 왜 예측이 어긋났는가? 라는 질문이다.

여기에 대한 내 대답을 말하자면, '예측이란 원래 그런 것이다. 우리는 미래를 알 수 없다.' 되겠다. 조금 덧붙이자면, '코딩에서 미래를 예측하는 노력을 할 필요는 없다.'

미래에 쓰일지도 모를 코드를 작성하는 일이 왜 문제가 되는가? 그것은 리스크와 관련이 있다. 미래의 효용성을 지금 고려하는 것은 결과적으로 리스크를 떠안는 꼴이다. 지금은 아니지만 쓰일지도 모를 코드를 미리 만들어두면, 유지보수 비용이 늘기 시작한다. 쓰이지 않는 코드를 리팩토링하기 위해 더 많은 노력을 기울여야 하고, 코드를 읽는 사람들이 필요 없는 것을 이해하느라 시간을 낭비하게 된다.

프로젝트의 핵심은 제품을 고객에게 전달하는 과정에서 발생하는 리스크를 줄여나가는 데 있다. 그러나 이것은 그것과 반대되는 꼴이 되는 것이다. 그러기 때문에, 현재 시점의 코드는 현재 시점에 꼭 필요한 것들만 포함하고 있어야 한다. legacy 가 되어 더 이상 쓰이지 않는 함수들 또는 가까운 미래에 쓰일 것 같은 코드들은 모두 dead code 이다.

Blog Logo

Ki Sung Bae


Published

Image

Gsong's Blog

Developer + Entrepreneur = Entreveloper

Back to Overview