한번은 반품 정책을 바꾼 뒤, 그 다음 한 달을 그 정책이 살아 숨 쉬는 곳들을 찾아 헤매며 보낸 적이 있어요. 웹사이트, 자동 이메일 답장, 도움말 문서, 결제 화면의 작은 팝업. 다 잡았다고 생각할 때마다 또 하나가 튀어나와 예전 정책을 당당하게 고객에게 알리고 있었어요.
소프트웨어에서는 이 혼란에 이름이 있어요. 그 반대가 DRY예요.
DRY는 Don't Repeat Yourself(반복하지 마라)의 약자예요. 규칙은 단순해요. 어떤 정보나 로직은 정확히 한 번, 한 곳에만 작성하고, 나머지는 모두 그 한 곳을 가리키게 해요.
일상적인 비유를 들면 이래요. 친구 전화번호를 집 안 곳곳의 포스트잇 10장에 적어두는 대신 연락처에 저장해요. 번호가 바뀌면 항목 하나만 수정하면 돼요. 문자든 전화든 그 연락처를 쓰는 앱이라면 모두 자동으로 새 번호를 써요. 찾아 헤맬 필요가 없어요. 정보가 실제로 사는 곳 하나만 바꿨을 뿐이에요.
DRY를 지키지 않은 코드는 포스트잇 버전이에요. 같은 규칙이 다섯 군데에 복사·붙여넣기돼요.
- 결제 페이지
- 주문 확인 이메일
- 모바일 앱
- 관리자 대시보드
- 1년째 아무도 안 본 어떤 보고서
이제 그 규칙을 바꿔야 한다고 상상해보세요. 무료 배송 기준이 5만 원에서 7만 5천 원으로 오른다고 해요. 다섯 곳을 수정해야 하는데, 네 곳은 기억하더라도 다섯 번째는 조용히 예전 조건을 약속하고 있어요. 누군가 발견하기 전까지는 아무도 몰라요. 보통은 고객이 발견하고, 보통은 최악의 타이밍에요.
그래서 "DRY하지 않다"는 욕이고, "DRY하다"는 칭찬이에요. 뭔가가 한 번만 작성되고 모든 곳에서 그것을 가리킨다면, 수정은 편집 한 번으로 끝나요. 처음부터 같은 출처를 읽어왔기 때문에 전체 시스템이 한꺼번에 업데이트돼요.
개발자가 아닌 분이 이걸 알아야 하는 이유:
변경 작업이 얼마나 위험한지 알 수 있어요. "X를 전체적으로 바꿀 수 있나요?" 대답이 빠르고 자신 있다면 코드가 DRY할 가능성이 높아요. 한숨과 함께 "음, 몇 군데에 있어서요..."가 나온다면 포스트잇이 말을 하는 거예요. 숨어있는 버그는 거기 있어요.
AI에게 직접 요청할 수 있는 말이에요. 어떻게 구현하는지 알 필요가 없어요. 단어만 알면 돼요.
두 번째가 핵심이에요. 에이전트가 같은 것을 계속 반복해서 붙여넣고 있다는 느낌이 든다면, 한 줄로 멈출 수 있어요.
이 로직이 여러 곳에서 반복되고 있어요. 한 곳에 모아두고 나머지가 그걸 참조하게 해주세요. 나중에 한 곳만 수정하면 되도록요.
이 말 한 마디면 몇 년 경력자처럼 들려요. 경력이 없어도 괜찮아요. 규칙만 알면 되니까요.
솔직한 주의사항을 하나 덧붙이자면, DRY는 지나치게 적용할 수도 있어요. 겉으로 비슷해 보이는 두 가지가 항상 같은 것은 아니에요. 두 페이지가 오늘 우연히 "5만 원"이라는 숫자를 보여주더라도, 전혀 무관한 이유에서일 수 있어요. 숫자가 같다는 이유만으로 하나의 출처를 억지로 공유하게 만들면, 나중에 한쪽만 바꿔야 할 때 더 큰 혼란이 생겨요. 진짜 판단 기준은 "똑같이 생겼나"가 아니에요. "이 둘을 항상 같이 바꾸고 싶은가"예요. 그렇다면 하나로 합쳐요. 아니라면 그냥 놔두면 돼요.
한 번 작성해요. 모든 것이 그것을 가리키게 해요. 한 곳만 바꾸면 전체가 알아서 따라와요.