본문으로 바로가기
리옵트 핸드북
리옵트 핸드북
개발자 언러닝

왜 바꿔야 하는가

전문성이 짐이 되는 순간'내가 다 짜야 한다'는 착각

설계와 구현의 전환

사전 설계에서 반복 설계로프롬프트는 설계 언어다AI 시대의 코드 리뷰

실무 습관 리셋

테스팅 전략의 전환디버깅 습관 리셋컨텍스트 관리: 새로운 핵심 역량기술 부채의 재정의

팀과 커리어

팀 워크플로우의 변화절대 언러닝하면 안 되는 것에이전틱 전환 전략

부록

검증 리포트업데이트 내역
핸드북›Developer Unlearning›사전 설계에서 반복 설계로
한국어English

사전 설계에서 반복 설계로

긴 사전 설계 중심 습관에서 벗어나 AI와 작은 실험을 반복하며 구조를 발견하는 에이전틱 개발 설계 방식을 정리합니다.

핵심 요약

  • 설계 강도는 구현 비용에 비례하며, 구현 비용이 급락한 에이전틱 시대에는 설계 문서 비중을 전체의 5~10%로 줄이는 전략이 맞습니다.
  • BDUF 대신 IPFR 사이클(Intent → Prototype → Feedback → Refactor)로 구조를 "계획"이 아니라 "발견"으로 도출합니다.
  • 의도만 전달하고 구현 방법은 지정하지 않아야 AI의 가치가 살아납니다. 피드백은 제약조건과 문제 현상을 구체적으로 짚어야 합니다.
  • 3회 반복해도 수렴하지 않으면 멈추고 의도 모호·피드백 부정확·BDUF 영역 중 무엇인지 진단합니다.
  • 팀 간 API 계약, 데이터 모델 핵심 구조, 보안 아키텍처처럼 변경·실수 비용이 큰 영역은 여전히 사전 설계가 필요합니다.

"설계를 충분히 하고 구현에 들어가라." 개발자라면 수없이 들어온 말이다. 그리고 대부분의 경우 맞는 말이었다.

그런데 에이전틱 시대로 오면서 이 원칙의 전제가 바뀌었다. 구현 비용이 확 줄었기 때문이다.

Big Design Up Front의 역사

사전 설계는 구현 비용이 비싸던 시대에는 합리적인 전략이었다.

1970s — 폭포수 모델

구현 비용이 극히 높아 설계에 최대한 투자하던 시대.

1990s — RUP

반복적이지만 여전히 무거운 설계 프로세스.

2001 — 애자일 선언

"작동하는 소프트웨어를 자주 전달." 설계와 구현의 반복이 시작됨.

2010s — 린 스타트업

MVP 중심 빠른 검증. 필요한 만큼만 설계.

2024+ — 에이전틱 코딩

구현 비용이 급격히 하락하면서 설계의 의미 자체가 재정의됨.

각 시대의 설계 강도는 구현 비용에 비례했다.

관찰 기반 모델

퍼센트는 업계 평균 통계가 아니라, 설계 강도가 어떻게 옮겨 갔는지 보여주려고 잡은 개념적 비중입니다.

시대구현 비용변경 비용최적 설계 전략설계 문서 비중
폭포수 1970s매우 높음극히 높음최대한 사전 설계전체 시간의 40%
애자일 2000s보통관리 가능충분히 설계하되 반복전체 시간의 20%
에이전틱 2024+매우 낮음매우 낮음최소 설계 후 빠르게 반복전체 시간의 5-10%

구현 비용의 극적 변화: 예시 수치

구현 비용이 줄었다는 게 구체적으로 무슨 말일까?

동일 기능의 시간 비교

"사용자 알림 시스템: 이메일 + 슬랙 채널, 실패 시 재시도, 확장 가능한 구조"

단계BDUF 방식 소요 시간반복 설계 방식 소요 시간시간 차이
요구사항 분석2시간30분1.5시간 절약
설계 문서 작성4시간의도 문서 15분3.75시간 절약
설계 리뷰 미팅1시간-1시간 절약
설계 수정2시간-2시간 절약
구현8시간AI 생성 + 검증 2시간6시간 절약
테스트 작성3시간AI 생성 + 검증 1시간2시간 절약
통합 테스트2시간1시간1시간 절약
합계22시간약 5시간17시간 절약

이 비교의 함정

22시간 대 5시간은 극단적인 비교다. 실제로는 반복 설계에서 예상치 못한 문제로 반복을 더 돌려야 하는 경우가 많아, 현실적인 차이는 2-3배 정도다. 중요한 건 절대 시간이 아니라 피드백 루프의 속도다.

변경 비용의 차이가 만드는 전략 변화

구체적 예시: 동일 기능을 두 방식으로 설계

"주문 상태 변경 시 관련자에게 알림을 보내는 시스템"을 BDUF 방식과 반복 설계 방식으로 비교한다.

BDUF 방식의 설계 결과

설계 문서에서 결정한 구조:

src/
  notifications/
    interfaces/
      NotificationChannel.ts
      NotificationStrategy.ts
      NotificationFormatter.ts
    channels/
      EmailChannel.ts
      SlackChannel.ts
      SmsChannel.ts          # 아직 필요 없지만 "확장성을 위해"
    strategies/
      OrderCreatedStrategy.ts
      OrderShippedStrategy.ts
      OrderDeliveredStrategy.ts
    formatters/
      HtmlFormatter.ts
      PlainTextFormatter.ts
      SlackBlockFormatter.ts
    factories/
      ChannelFactory.ts
      StrategyFactory.ts
    NotificationService.ts
    NotificationQueue.ts
    NotificationRetry.ts

파일 13개, 인터페이스 3개, 팩토리 2개. 설계에 6시간, 구현에 12시간. 그런데 출시 후 첫 달에 실제로 쓴 채널은 이메일과 슬랙 2개뿐이었다.

반복 설계 방식의 진행 과정

1회차 - 의도 전달:

"주문 상태가 바뀌면 이메일과 슬랙으로 알림을 보내줘. 전송 실패 시 3회 재시도."

AI가 생성한 첫 구조:

src/
  notifications/
    notify.ts              # 메인 함수
    channels.ts            # 이메일, 슬랙 전송
    retry.ts               # 재시도 로직

3개 파일. 검증 10분. 동작 확인 완료.

2회차 - 피드백:

"새 채널 추가 시 기존 코드 수정 없이 가능하게 해줘."

src/
  notifications/
    notify.ts
    channels/
      email.ts
      slack.ts
      index.ts             # 채널 레지스트리
    retry.ts

4개 파일로 확장. 동작 확인 + 구조 검토 15분.

3회차 - 프로덕션 정제:

"에러 로깅 추가하고, 알림 전송 이력을 DB에 저장해줘."

최종 5개 파일. 총 소요 시간 약 2시간.

YAGNI 원칙의 자연스러운 적용

반복 설계에서는 "나중에 필요할 수도 있으니까" 미리 만들어 두는 코드가 줄어든다. 정말 필요해지면 그때 AI에게 맡기면 되니까, 지금 필요한 것에만 집중하면 된다. 에이전틱 시대에 YAGNI가 더 잘 먹히는 이유다.

BDUF vs 반복 설계: 상황별 판단

반복 설계가 항상 최선인 건 아니다. 상황에 따라 더 잘 맞는 방식이 달라진다.

판단 기준BDUF가 적합한 경우반복 설계가 적합한 경우
변경 영향 범위여러 팀이 의존하는 인터페이스한 팀 내부 구현
실수 비용보안, 결제, 의료 등 치명적 영역일반 비즈니스 로직
요구사항 확실성법규나 규격으로 확정된 요구사항사용자 피드백으로 변할 수 있는 요구사항
구현 복잡도분산 시스템 간 합의가 필요한 경우단일 서비스 내 기능
되돌리기 비용DB 스키마, 공개 API 등 롤백 어려움코드만 변경하면 되는 경우

이 매트릭스에서 눈여겨볼 점은, 일상적인 개발 작업 대부분이 좌측(낮은 변경 비용)에 몰려 있다는 것이다. BDUF가 정말 필요한 우측 상단의 작업은 전체 개발 시간에서 일부에 그치는 경우가 많다. 그런데도 많은 팀이 모든 작업에 똑같은 설계 강도를 적용하는 관성을 보인다.

설계 문서 vs 작동하는 프로토타입

전통적으로 "정확한 설계"의 기준은 설계 문서였다. 하지만 설계 문서에는 구조적인 한계가 있다.

비교 항목설계 문서작동하는 프로토타입
모호성자연어의 해석 차이 존재코드는 모호하지 않음
실행 가능성종이 위의 구조즉시 실행하고 확인 가능
엣지 케이스 발견상상에 의존실행하면 드러남
팀 커뮤니케이션텍스트로 설명동작하는 데모로 설명
유지보수 비용문서와 코드 동기화 필요코드가 곧 문서
초기 투자 비용작성 시간이 김빠르게 생성 가능

설계 문서가 필요 없다는 말이 아니다. 설계 문서만으로는 정확한 설계가 나오지 않는다는 이야기다. 설계 문서에 적힌 구조와 막상 구현하면서 발견하는 구조 사이에는 거의 늘 괴리가 생긴다. 구현 비용이 비싸던 시절에는 이 괴리를 감수할 수밖에 없었지만, 구현 비용이 낮아진 지금은 다른 전략을 쓸 수 있다.

반복 설계의 구조: IPFR 사이클

Intent - Prototype - Feedback - Refactor

IPFR 반복 설계 사이클 작업대

Intent - 의도 정의

구현 세부사항이 아니라 무엇을 이루려는지를 분명히 하는 단계다.

의도 중심의 정의:

사용자가 결제를 완료하면 이메일과 슬랙으로 알림을 보낸다.
- 전송 실패 시 3회까지 재시도
- 새 채널 추가가 쉬워야 함
- 알림 전송이 결제 프로세스를 블로킹하면 안 됨

구현 방법을 미리 지정한 정의:

Observer 패턴으로 알림 시스템을 만들어.
NotificationService 클래스에 send 메서드가 있고,
EmailChannel과 SlackChannel이 NotificationChannel 인터페이스를 구현해.

구현 방법 지정의 역설

두 번째 예시의 문제는 이미 구조를 정해 버렸다는 데 있다. 의도만 전달하면 AI가 상황에 맞는 구조를 제안하고, 개발자는 그 구조가 적절한지 따져보는 역할을 맡는다. 구조를 미리 못 박으면 AI의 가치가 크게 줄어든다.

Prototype과 Feedback

생성된 코드를 살펴보면서 두 가지를 판단하는 단계다.

  • 동작 정확성: 의도한 대로 작동하는가?
  • 구조 적절성: 이 구조가 향후 변경에 유연한가?

여기서 피드백의 품질이 반복 설계의 성패를 가른다.

모호한 피드백구체적 피드백차이점
"더 깔끔하게 해줘""알림 채널 추가 시 기존 코드 수정 없이 가능하게 해줘"구체적 제약조건 제시
"성능이 걱정돼""알림 전송이 결제 응답을 블로킹해. 비동기로 분리해줘"문제 현상 명시
"뭔가 이상해""에러 발생 시 재시도 로직이 없어. 3회 재시도 추가해줘"누락 기능 특정

시니어 개발자가 반복 설계에서 발휘하는 가장 큰 강점이 바로 이 피드백 품질이다. 10년간 쌓은 경험이 "무엇이 문제이고, 왜 문제이며, 어떤 제약조건이 필요한지"를 정확히 짚어내는 능력으로 바뀐다.

Refactor - 구조 개선

2-3회 반복 후 작동하는 프로토타입이 나오면, 구조를 정리하는 단계다. 이때 비로소 패턴 이름을 붙이고, 디렉토리를 정리하고, 인터페이스를 명확히 한다.

예전에는 이 작업을 맨 처음에 했지만, 반복 설계에서는 맨 마지막에 한다. 구조가 "계획"이 아니라 **"발견"**에서 나온다는 관점의 전환이다.

반복 설계가 실패하는 경우

반복 설계는 만능이 아니다. 실무에서 자주 보이는 실패 패턴이 있다.

실패 패턴증상원인
방향 없는 반복5회 이상 반복해도 수렴하지 않음의도 정의가 모호한 경우가 많음
프로토타입 고착작동하는 코드를 그대로 프로덕션에 사용리팩터 단계를 생략하는 경향
부분 최적화 함정개별 기능은 잘 되지만 전체 구조가 엉망시스템 레벨 설계가 부재한 경우
피드백 품질 저하AI가 같은 실수를 반복피드백이 모호하거나 일관성이 없을 때 발생
시간 역전반복 설계가 BDUF보다 오래 걸림잘못된 영역에 반복 설계를 적용한 경우

프로토타입의 프로덕션 직행 문제

반복 설계의 가장 큰 위험은 "작동하니까 이대로 배포하자"는 유혹이다. 프로토타입은 구조를 발견하려고 쓰는 도구이지, 프로덕션 코드가 아니다. 발견한 구조를 바탕으로 프로덕션 품질의 코드를 다시 만드는 과정을 건너뛰면, 기술 부채가 빠르게 쌓인다.

3회 규칙: 수렴 여부의 판단

3회 반복하고도 구조가 수렴하지 않으면, 반복을 더 돌리기보다 일단 멈추고 원인을 진단하는 편이 낫다. 수렴하지 않는 원인은 대체로 셋 중 하나다: 의도가 모호하거나, 피드백이 부정확하거나, 애초에 BDUF가 필요한 영역이거나.

사전 설계가 여전히 필요한 영역

영역사전 설계 필요도이유반복 설계와의 결합
팀 간 API 계약높음여러 팀이 동시에 의존API 스펙만 BDUF, 구현은 반복
데이터 모델 핵심 구조높음마이그레이션 비용이 여전히 높음필드 추가는 반복, 구조 변경은 BDUF
보안 아키텍처높음실수의 비용이 극히 높음위협 모델은 BDUF, 구현은 반복
UI 인터랙션낮음빠르게 만들어보고 피드백전면 반복 설계
내부 유틸리티낮음변경 영향 범위가 작음전면 반복 설계
프로토타입 PoC매우 낮음검증이 목적전면 반복 설계

여기서 눈에 띄는 패턴이 있다. BDUF가 필요한 영역과 반복 설계가 맞는 영역은 서로 배타적이지 않다. 오히려 한 프로젝트 안에서 두 방식이 공존하는 게 가장 현실적이다. API 스펙은 BDUF로 합의하고, 그 스펙의 구현은 반복 설계로 빠르게 진행하는 식이다.

BDUF의 숨겨진 비용

BDUF는 직접 비용만 보면 "철저한 설계"처럼 보이지만, 숨은 비용까지 따지면 그림이 달라진다.

비용 항목BDUF반복 설계
설계 문서 작성 시간4-8시간15-30분
설계 문서 유지보수구현 변경 때마다 동기화 필요코드가 곧 문서
설계 리뷰 미팅 비용참석자 수 x 1시간코드 리뷰로 대체
과잉 설계 비용사용되지 않는 추상화 구현필요할 때 추가
설계-구현 괴리 비용구현하며 설계와 달라지는 비용괴리가 발생하지 않음
잘못된 설계 방향 비용설계 완료 후 방향 전환 어려움언제든 방향 전환 가능

가장 비싼 비용은 마지막 행이다

BDUF의 가장 큰 숨은 비용은 매몰 비용 효과다. 6시간 들여 만든 설계 문서가 있으면, 더 나은 방향이 보여도 "이미 설계했으니까"라며 기존 방향을 붙잡게 된다. 반복 설계에서는 이 함정에 빠질 여지가 줄어든다.

반복 설계의 현실적 적용

반복 설계는 이론으로는 매력적이지만, 막상 도입해 보면 부딪히는 현실이 몇 가지 있다.

첫째, 팀 전체가 한꺼번에 전환하기는 어렵다. 한 명은 반복 설계로 일하는데 나머지는 BDUF로 일하면, 설계 리뷰에서 충돌이 잦다. "설계 문서는 어디 있어?"라는 질문에 "작동하는 프로토타입이 여기 있다"는 답이 조직에 받아들여지려면 시간이 걸린다.

둘째, IPFR 사이클의 품질은 의도를 정의하는 능력에 크게 좌우된다. 시니어 개발자가 반복 설계에서 강점을 발휘하는 이유가 바로 여기 있다. 10년간 쌓은 도메인 지식과 기술적 판단력이 정확한 의도 정의와 날카로운 피드백으로 이어진다.

셋째, 프로토타입에서 프로덕션으로 넘어가는 단계를 건너뛰고 싶은 유혹이 크다. "작동하는데 왜 다시 만들어?"라는 의문은 자연스럽다. 하지만 프로토타입 코드가 그대로 프로덕션에 올라가면, 6개월 뒤에 그 코드를 유지보수해야 하는 사람이 고생한다. 반복 설계를 도입하는 팀에서 가장 자주 보이는 함정이다.

이 챕터의 핵심

기억할 한 문장

구현 비용이 극적으로 줄었다면, 최적의 설계 전략도 바뀌어야 한다. 문서에 적힌 구조가 아니라, 작동하는 코드에서 발견된 구조가 진짜 설계다.

다음 장 미리보기

다음 챕터에서는 반복 설계의 핵심 도구인 프롬프트를 설계 언어로 다루는 방법을 다룹니다.


참고 자료

참고 자료 안내

이 장의 관점과 프레임워크를 뒷받침하는 참고 자료입니다. 본문의 모든 주장이 아래 자료에서 직접 인용된 것은 아니며, 실무 경험과 커뮤니티 사례를 종합한 해석이 포함되어 있습니다.

  • Beck, K. et al. (2001). Manifesto for Agile Software Development. https://agilemanifesto.org/

관련 문서

'내가 다 짜야 한다'는 착각

'내가 다 짜야 한다'는 정체성을 해부하고, 코드 작성자에서 의도 설계자·품질 보증자로 단계적으로 전환하며 위임 경계를 설계하는 법

프롬프트는 설계 언어다

프롬프트를 귀찮은 입력이 아니라 새로운 형태의 설계 문서로 바라보는 관점

반복 작업과 클라우드 실행

Claude Code 명령어 마스터 · 반복 작업과 클라우드 실행에 필요한 명령을 목적별로 선택하고 상세 사용 조건과 실행 예로 연결합니다.

'내가 다 짜야 한다'는 착각

'내가 다 짜야 한다'는 정체성을 해부하고, 코드 작성자에서 의도 설계자·품질 보증자로 단계적으로 전환하며 위임 경계를 설계하는 법

프롬프트는 설계 언어다

프롬프트를 귀찮은 입력이 아니라 새로운 형태의 설계 문서로 바라보는 관점

On this page

Big Design Up Front의 역사구현 비용의 극적 변화: 예시 수치동일 기능의 시간 비교변경 비용의 차이가 만드는 전략 변화구체적 예시: 동일 기능을 두 방식으로 설계BDUF 방식의 설계 결과반복 설계 방식의 진행 과정BDUF vs 반복 설계: 상황별 판단설계 문서 vs 작동하는 프로토타입반복 설계의 구조: IPFR 사이클Intent - Prototype - Feedback - RefactorIntent - 의도 정의Prototype과 FeedbackRefactor - 구조 개선반복 설계가 실패하는 경우3회 규칙: 수렴 여부의 판단사전 설계가 여전히 필요한 영역BDUF의 숨겨진 비용반복 설계의 현실적 적용이 챕터의 핵심다음 장 미리보기참고 자료