한국어 箭头
Podcast Cover

[소프트웨어 개발의 두 가지 전략: 반복적 계획 수립(Iterative Planning)과 목표 상태 계획(Target State Planning)]-[Iteration or Target State Planning]

Developer Tea · B1 · 2025-04-24

TechnologyCareers
또는 웹버전으로 공부하세요

📋 Summary

소프트웨어 개발에서의 계획 수립 전략: 반복 대 목표 상태

소프트웨어 개발 업계에서는 오랫동안 '반복적 계획 수립(Iterative Planning)'이 민첩성(Agile)을 보장하고 변화에 대응할 수 있는 유일한 정답으로 여겨져 왔습니다. 그러나 본 팟캐스트에서는 무조건적인 반복적 방식보다는, 상황에 따라 '목표 상태 계획(Target State Planning)'을 적절히 혼합하는 전략적 사고가 필요함을 강조합니다.

1. 반복적 계획 수립 vs 목표 상태 계획

반복적 계획 수립은 짧은 주기(Sprint)를 통해 피드백을 얻으며 진행하는 방식입니다. 반면, 목표 상태 계획은 전체적인 방향성을 미리 설정하는 방식으로, 흔히 '폭포수(Waterfall)' 모델과 유사하게 보일 수 있습니다. 하지만 저자는 이 둘을 이분법적으로 나누는 대신, 목표 상태를 '방향성(Directional state)'으로 정의하고, 스프린트를 진행하며 학습한 내용을 바탕으로 이 목표를 지속적으로 업데이트할 수 있다고 설명합니다.

2. 주택 개조 비유를 통한 통찰

저자는 주택 개조를 예로 들어 계획의 중요성을 설명합니다. 창문 교체, 사이딩 변경, 내부 인테리어 등 여러 작업을 개별적으로 진행할 경우, 작업자 간의 조율이 어렵고 결과물의 일관성이 떨어지며 비용 효율성도 낮아집니다. 반면, 전체적인 계획을 미리 세우면 공정을 최적화하고 재료와 마감을 통일하여 더 나은 결과를 낼 수 있습니다. 소프트웨어 개발 역시 이와 마찬가지로, 관련성이 높은 작업들은 파편화된 '원자적 문제(Atomic issues)'로 접근하기보다 전체적인 설계를 고려하는 것이 효율적일 수 있습니다.

3. 계획 전략 선택을 위한 핵심 결정 요인

상황에 맞는 계획 방식을 선택하기 위해 다음과 같은 요소를 고려해야 합니다:

  • 불확실성(Uncertainty): 문제나 사용자 요구사항에 대한 불확실성이 높다면 반복적 계획이 유리합니다. 반대로 문제의 명확성이 높다면 초기 투자를 통해 큰 그림을 그리는 것이 합리적입니다.
  • 작업의 성격(Nature of the work): 프로토타입이나 발견(Discovery) 단계의 작업은 반복적인 방식이 적합하지만, 실제 운영 환경(Production)이나 복잡한 결합도가 있는 시스템은 미리 전체 설계를 고려하는 목표 상태 계획이 필요합니다.
  • 위험 감수 비용(Cost of mistakes): 실패 비용이 낮다면 반복적 방식을 통해 빠르게 배우는 것이 좋지만, 항공, 의료, 금융과 같이 실수 비용이 크거나 규제 준수가 필수적인 영역에서는 신중한 사전 계획이 필수적입니다.
  • 피드백 루프 및 조정 비용(Coordination cost): 사용자 피드백을 빠르게 얻기 어렵거나 팀 외부의 의존성이 큰 경우, 미리 계획을 세우는 것이 프로젝트의 교착 상태를 방지하는 길입니다.

4. 결론: 유연한 스펙트럼으로서의 계획

'사전 계획(Upfront planning)'은 무조건적인 독단이 아니라, 상황에 따라 우리를 가능하게 만드는 도구가 될 수 있습니다. 중요한 것은 '계획을 위한 계획'에 매몰되어 변화를 거부하는 것이 아니라, 프로젝트의 성격과 환경에 맞춰 계획의 밀도를 조절하는 것입니다. 결론적으로, 계획 수립은 이분법적인 선택이 아니라 스펙트럼상의 문제이며, 팀의 상황에 맞춰 적절한 지점을 찾는 것이 성공적인 소프트웨어 개발의 핵심입니다.

🎯Key Sentences

1
it allows you to respond to change.
변화에 유연하게 대응할 수 있게 해줍니다.
2
they are not necessarily at two ends of a philosophy.
그들이 반드시 철학적 양극단에 서 있는 것은 아니다.
3
why would we need a target state to begin with?
애초에 왜 목표 상태가 필요한 거죠?
4
The best answer for that question is that it allows you to set a general direction.
그 질문에 대한 가장 좋은 답변은 그것이 전체적인 방향을 설정하게 해준다는 것입니다.
5
There's nothing necessarily wrong with it
딱히 문제 될 건 없어요.
모두 펼치기

📝Key Phrases

1
at odds with each other
서로 의견이 맞지 않는
2
to begin with
우선
3
a handful of
한 줌의
4
one-off
일회성의
5
setting aside
제쳐두고
모두 펼치기

📖 Transcript

Generally speaking, you've probably heard it said to you that iterative planning is the right way to do software development.
And the justification for this is that iteration is agile, that it allows you to respond to change.
And we're not gonna get into the specifics of whatever process you're running at your team level, but I do wanna talk about this idea.
The dichotomy between iterative planning or exploratory engineering, exploratory development, where you may not have more than a sprint or two worth of work planned out versus something like target state planning.
Target state planning in some ways may look like a waterfall plan.
because target state is essentially laying out where you think things should go.

ListenLeap이 실제 문맥에서 학습하도록 이끌어줌

🎨 흥미로운 콘텐츠
🌍 실제 자료
📱 언제든 듣고 보기