기본은 리팩터링입니다. 다시 작성(rewrite)은 기존 시스템이 더 이상 허용 가능한 비용으로 요구사항을 충족하도록 진화할 수 없고, 그것을 하는 동안에도 가치를 계속 전달할 수 있을 때에만 정당화됩니다. 대부분의 "우리는 rewrite가 필요해"라는 직감은 사실 관리되지 않은 tech debt 문제이며, 점진적 리팩터링이 훨씬 적은 리스크로 해결합니다.
| 신호 | 리팩터링 쪽 | rewrite 쪽 |
|---|---|---|
| 아키텍처가 요구사항에 맞음 | 예 | 아니오 |
| 테스트/스펙 커버리지 | 낮거나 높음 | 동등성을 검증할 만큼 충분히 높음 |
| 점진적으로 출시 가능 | 예 | 어려움, 빅뱅 |
| 팀이 코드를 이해함 | 예 | 아니오, 원작자도 떠남 |
리팩터 대 rewrite 결정은 Tech Lead가 내리는 가장 레버리지 높은 결정 중 하나입니다. rewrite 쪽으로 잘못 판단하면 1년간 딜리버리를 동결하고도 실패할 수 있고; 리팩터링 쪽으로 잘못 판단하면 속도를 서서히 흘립니다. 그것을 취향 결정이 아니라 비용과 리스크 결정으로 규정하는 것이 시니어의 판단력을 선호와 구분 짓습니다.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기