개발&Development/프로그래밍 일반

재개발

겐도 2006. 10. 30. 10:21
개발자가 흔히 하는 말중에.. 지금 구린 코드는 버리고 새로 짜야 한다라는 주장이 있다. 맨날 뭐 하나 고치려면 머리 두뭉큼은 빠지는거 같으니 날잡아서 새로 개비를 합시다라고.. Refactoring이라는 말이 등장했을때 많은 개발자들이 열광한 것이 이런 이유일 것이다.

Refactoring은 기존의 코드를 버리고 새로 작성하는 것은 아니다. 정확한 번역은 "정리"가 아닐까 한다. 임시방편으로 연결된 바이패스(막힌 지점을 우회시키는 혈관)를 제거하고 원래의 길을 제대로 수행되도록 수정하는 작업일 것이다. 물론 앞으로 생겨날 혈관협착도 고려해서 말이다.

기존의 코드를 폐기하는 것은 상당한 낭비이다. Project Planning에서 기존의 코드는 훌륭한 Asset의 목록이 된다. Asset이란 개발 Cost를 줄여주거나 이윤을 증가시켜줄만한 것들을 의미한다. 반대로 Risk가 있다. Risk Management는 하면서 Asset Management를 소흘히 하는 것은 아니될 말이다.

기존의 코드가 언제 터질지 모르는 혈관이라 해도 일단은 현재 잘 돌고 있고 현재 가지고 있는 문제를 어느정도 버티고 있기도 하다. 내일 당장 터질지도 모르는 부분이야 손을 봐야 겠지만 그렇다고 혈관 전체를 걷어 내는 것은 잘못이다.

개발자는 절대 지금 코드는 구리니 다 버리고 새로 만들자는 말은 함부로 해서는 안될 것이다. 정확히 어떤 문제를 가지고 있고 그래서 어떻게 수정해야 되는지 계획이 확립되기 전에는 말이다. 최악의 상황에서는 개발 언어까지 변경하면서 기존 코드를 전량 교체해야 할지 모르지만 그런 순간에도 기존 코드는 훌륭한 참고 소스가 된다. 거기에 녹아있는 수많은 예외상황 처리나 유즈케이스 고려등을 놓쳐서는 안된다. 순수 재개발을 하게 되면 결국 새로운 제품을 개발하는 것과 마찬가지가 되며 Zero Asset에서 시작하는 것과 마찬가지이다.

맨날 뻗어대는 코드긴 하지만 때로는 자신의 코드에 사랑을 주자.

'개발&Development > 프로그래밍 일반' 카테고리의 다른 글

A급 인재  (3) 2007.02.07
Event Driven과 Multi-Threading  (0) 2006.10.31
기획자 vs. 개발자  (4) 2006.10.30
Quality Assurance  (1) 2006.10.30
수요와 공급  (2) 2006.10.23