brunch

변경요청 관리와 스코프 조절

Scope creep에 빠지지 않는방법

by 그럴수있지


왜 변경요청을 관리해야 할까?


상사의 지시를 받아 경영진을 위한 보고자료를 준비한다고 생각해보자. 중요한 보고일 경우 아침저녁으로 진행상황을 체크하곤 한다. 그런데 아침에 지시사항대로 온종일 작업한 것을 퇴근 전에 방향성을 바꿔버리면 기분이 어떨까? 그것도 좋다, 변경된 지시사항을 토대로 야근하며 작업했더니 다음날 다시 전날 아침 버전으로 방향성이 원복되었다면? “이럴 거면 하루 동안 뭐 한 거지?“라는 생각이 들 것이다. 어제의 그와 오늘의 그가 방향성을 두고 다투는 짜증나는 상황처럼, 기획 변경은 개발자에게 큰 부담이 된다.


변경요청의 영향도 이해하기


일부 코드를 재작성해야 하는 정도라면 납득 가능하지만, 설계를 흔드는 변경은 지금까지의 작업을 무용지물로 만들기도 한다. 실제 사례를 들자면, A 프로젝트에서 로그인 기능 구현 후 마지막 단계에서 “SNS 연동 로그인도 추가해 주세요”라는 요청이 들어왔을 때, 이는 단순 기능 추가가 아닌 인증 시스템 전체의 재설계를 의미했다. 대부분 창의적인 생각을 하는 기획자들의 변경요청은 이처럼 근본적인 변화를 요구하곤 한다.

변경요청을 수락한다고 해서 개발 일정이 자동으로 연장되지는 않는다. 시간이 부족하면 자연스럽게 코드 품질은 떨어지고 개발자의 불만도 늘어간다. 그렇다고 변경요청을 무시하자니 기획 조직에서 개발팀이 비협조적이라며 컴플레인이 들어온다. 여러모로 난감한 상황이다.



변경 규모에 따른 부담 차이


변경을 하려는 규모에 따라 부담의 차이가 크다는 점을 모두가 이해해야 한다:


• 경미한 변경: 버튼 색상 변경, 텍스트 문구 수정 등

• 중간 규모 변경: 특정 기능의 동작 방식 변경, UI 레이아웃 재구성

• 대규모 변경: 클래스 구조 변경, DB 스키마 수정, 인증 시스템 재설계


예를 들어, 단순히 버튼 색상을 바꾸는 것과 사용자 권한 체계를 변경하는 것은 완전히 다른 차원의 작업이다. 변경해야 하는 파일의 개수도 다르고, 영향을 받는 기능이 늘어남에 따라 테스트의 범위도 크게 확장된다. DB 테이블을 재설계해야 하는 수준의 변경이라면, 경우에 따라 소스코드 역시 처음부터 다시 작성하는 편이 나은 경우도 생긴다.

겉으로 보기에 작은 변화일지라도 개발자에겐 큰 변화일 가능성이 분명 존재한다. 그래서 “이건 어렵습니다”라고 말하는 개발자의 주장에 귀를 기울일 필요가 있다.


그렇다고해서 바꿔야 할 부분을 그냥두고 지나칠 수는 없다. 우리 서비스가 잘 되자고 하는 일인데 적절한 대응시기를 놓치고 손가락만 빨고있을 수는 없는 노릇이지 않은가. 그래서 변경요청을 관리해야한다. 바꿔야 한다면 설득해야하고 그 과정을 기록해서 그다음에 판단할 일이 생겼을때, 근거 없이 감에 의존해 의사결정하는 일을 막아야한다.



변경 요청이 발생하는 이유


프로젝트 진행 중 변경 요청은 불가피하게 발생한다. 이는 소프트웨어 개발의 본질적인 특성이다. 변경 요청이 발생하는 주요 원인을 살펴보면 크게 다섯가지 정도 꼽을 수 있다.


1. 비즈니스 환경의 변화


시장 상황과 경쟁사 동향은 끊임없이 변한다. 경쟁사가 새로운 기능을 출시하거나 시장 트렌드가 바뀌면 이에 대응하기 위해 우리 프로덕트도 변경이 필요해진다. 예를 들어, 코로나19 팬데믹으로 많은 기업들이 비대면 서비스로 빠르게 전환해야 했던 것처럼, 외부 환경의 급격한 변화는 기존 계획의 수정을 불가피하게 만든다.


2. 사용자 피드백과 요구사항 변화


실제 사용자들의 피드백은 예상과 다를 수 있습니다. 서비스 출시 후 받은 사용자들의 의견은 중요한 변경 요청의 원천이 됩니다. “사용자들이 이 기능을 어렵게 느낀다”, “이런 기능이 있었으면 좋겠다”와 같은 피드백은 제품 개선을 위해 항상 반영을 고려해야 한다.


3. 기술적 제약사항 발견


개발팀으로부터 출발하는 변경요청사항도 있다. 개발 과정에서 예상하지 못했던 기술적 한계나 문제로 인해 기획을 바꿔야하는 일도 종종 생긴다. 예를 들어, 특정 API의 한계, 성능 이슈, 보안 취약점 등이 개발 중에 발견되면 기획을 제약에 맞춰 변경해야 할 수도 있다. 이런 기술적 이슈는 기획 단계에서는 예측하기 쉽지 않다.


4. 내부 이해관계자의 새로운 요구


경영진, 마케팅팀, 영업팀 등 내부 이해관계자들의 새로운 아이디어나 요구사항도 변경 요청의 주요 원인입니다. “이 기능이 있으면 마케팅에 유리할 것 같아요”, “고객사에서 이런 기능을 요청했어요”와 같은 내부 요청은 우선순위가 높게 여겨진다. 요청의 진원지가 높은곳에서 출발할수록 더 큰 힘이 실리콘 한다.


5. 법적/규제적 변화


개인정보보호법, 게임산업진흥법 등 적용되는 법령이 변경되면 이를 준수하기 위한 시스템 변경이 필수적입니다. 예를 들어, GDPR(유럽 개인정보보호법) 시행된 2018년부터 으로 유럽을 대상으로 서비스하는 많은 기업들은 개인정보 처리 방식을 변경해야만 했다. 이런 변화는 선택이 아닌 필수 사항으로, 높은 우선순위를 갖습니다.


이러한 다양한 이유로 변경 요청은 발생할 수밖에 없다. 중요한 것은 변경 자체를 막는 것이 아니라, 이를 효과적으로 관리하여 프로젝트의 성공적인 완수를 보장하는 것이니다. 변경 요청의 원인을 이해하면 적절하게 대응하는데도 도움이 된다.


효과적인 변경 관리 프로세스


변경은 피할 수 없지만, 체계적인 프로세스를 통해 관리할 수 있다. 효과적인 변경 관리 프로세스는 혼란을 최소화하고 프로젝트의 성공 가능성을 높인다. 다음은 실무에서 활용할 수 있는 변경 관리 프로세스다.


변경 요청 접수 및 문서화


모든 변경 요청은 공식적인 채널을 통해 접수되어야 한다. 구두로 전달된 요청은 쉽게 잊히거나 왜곡될 수 있다. 변경 요청서(Change Request Form)를 활용하면 요청 내용을 명확히 문서화할 수 있다. 이 문서에는 다음 정보가 포함되어야 한다:

• 요청자 정보 (이름, 부서, 연락처)

• 변경 요청 날짜

• 변경 요청 내용 상세 설명

• 변경이 필요한 이유

• 요청의 우선순위 (긴급, 높음, 중간, 낮음)

• 원하는 완료 시점

이렇게 문서화된 요청은 추후 참조와 추적이 가능하며, 커뮤니케이션 오류를 줄일 수 있다.


변경 영향 분석


변경 요청이 접수되면, 해당 변경이 프로젝트에 미치는 영향을 분석해야 한다. 이 단계는 개발자와 기획자가 함께 진행하는 것이 이상적이다. 영향 분석에는 다음 사항이 포함된다:


• 일정 영향: 변경으로 인해 프로젝트 일정이 얼마나 지연될 수 있는가?

• 비용 영향: 추가 개발 비용이 발생하는가?

• 품질 영향: 변경이 제품 품질에 어떤 영향을 미치는가?

• 리소스 영향: 추가 인력이나 기술이 필요한가?

• 기술적 영향: 아키텍처, DB 구조 등에 변경이 필요한가?

• 다른 기능에 미치는 영향: 기존 기능이 영향을 받는가?


영향 분석 결과는 문서화하여 의사결정자에게 제공해야 한다. 이 분석은 변경 승인 여부를 결정하는 중요한 근거가 된다.


변경 승인 체계와 의사결정 기준


모든 변경 요청이 승인되어야 하는 것은 아니다. 명확한 승인 체계와 의사결정 기준을 수립하는 것이 중요하다. 일반적으로 다음과 같은 기준을 고려한다:

• 비즈니스 가치: 변경이 가져올 비즈니스 가치가 충분한가?

• 위험 수준: 변경으로 인한 위험이 감수할 만한 수준인가?

• 자원 가용성: 변경을 구현할 자원이 있는가?

• 타이밍: 현재 프로젝트 단계에서 이 변경이 적절한가?


변경의 규모와 영향력에 따라 승인 권한을 차등화하는 것도 좋은 방법이다. 예를 들어:

• 소규모 변경: PM 승인

• 중간 규모 변경: PO 승인

• 대규모 변경: 전체 회의를 통한 승인


변경 실행 및 커뮤니케이션


변경이 승인되면, 이를 프로젝트 계획에 통합하고 모든 이해관계자에게 커뮤니케이션해야 한다. 이 단계에서 중요한 것은 투명한 커뮤니케이션이다. 변경으로 인해 발생할 수 있는 지연이나 문제점을 숨기지 말고 솔직하게 공유해야 한다.


변경 이력 관리와 추적


모든 변경 요청과 그 결과는 체계적으로 기록하고 추적해야 한다. 기록은 다음과 같은 이점을 제공한다. 첫째로 의사결정의 근거를 남길수 있다. 특정 변경이 왜 승인되거나 거부되었는지 기록되면 후에 비슷한 기획을 하려는 사람이 비슷한 수고를 덜 수 있다. 또 누가 했는지 파악하기 좋으니 책임성 강화된다. 이 외에도 반복적으로 변경되는 패턴을 식별해 원인을 분석하거나 예방할 수도 있다.


효과적인 변경 관리 프로세스는 단순히 변경을 통제하는 것이 아니라, 필요한 변경을 체계적으로 수용하면서도 프로젝트의 안정성을 유지하는 균형을 찾는 것이 목표다. 이러한 프로세스가 잘 정착되면, 개발자의 불만은 줄어들고 프로젝트의 성공 가능성은 높아진다.


스코프 크리프(Scope Creep) 방지하기


스코프 크리프는 프로젝트 범위가 통제되지 않은 채 점진적으로 확장되는 현상을 말한다. 마치 잡초가 조금씩 자라나 결국 정원을 뒤덮는 것처럼, 작은 변경들이 쌓이면서 프로젝트가 본래의 목표에서 벗어나게 된다. 이는 일정 지연, 예산 초과, 품질 저하로 이어질 수 있는 위험한 현상이다.

Scope creep가 발생하면 일정 지연, 예산 초과 등 다양한 문제가 발생할 수 있다. 예상보다 많은 인력과 시간을 필요로하게 되고 팀 사기와 품질이 동시에 저하될 수 있다. 최악의 경우 프로젝트 자체가 완성되지 못할 수도 있다.

스코프 크리프가 발생하는 위험 신호들에는 아래와같은 것들이 있다.


• “이건 금방 할 수 있는 기능이니 넣읍시다” 라는 말이 자주 나온다

• 초기 계획에 없던 작업이 자연스럽게 할 일 목록에 추가된다

• 일정이 계속 미뤄지고 있다

• 개발자들이 “이게 언제 끝나나요?“라고 자주 묻는다

• 프로젝트 문서와 실제 개발 내용 사이에 불일치가 발생한다 (각 문서별로도 불일치가 발생한다)

• 회의에서 새로운 아이디어가 계속 추가된다 (이를 막아주는 사람도 없다)


스코프 크리프를 완전히 피할 수는 없지만, 적절한 관리를 통해 그 영향을 최소화해야 한다. 명확한 범위 정의, 체계적인 변경 관리 프로세스, 그리고 이해관계자와의 효과적인 커뮤니케이션이 핵심이다.


변경 관리 도구와 기법


효과적인 변경 관리를 위해서는 적절한 도구와 기법이 필요하다. 이는 변경 사항을 추적하고, 커뮤니케이션을 원활히 하며, 의사결정을 지원한다. 이를 위해 주로 사용되는 도구로 Jira나 Trello 혹은 Github등을 들수 있다. 변경요청 워크플로우를 생성하고 이에맞게 처리될 수 있도록 하는 등 업무에 바로 적용할 수 있는 수준의 기능을 지원한다.


결론


변경은 소프트웨어 개발 과정에서 피할 수 없다. 중요한 것은 변경 자체를 막는 것이 아니라, 이를 효과적으로 관리하여 프로젝트의 성공을 보장하는 것이다.

비즈니스 환경, 사용자 요구, 기술적 제약 등은 계속해서 변화하며, 이에 적응하는 능력이 프로젝트의 성공을 좌우한다. 변경을 두려워하거나 거부하기보다는, 이를 관리하는 체계적인 프로세스를 구축하는 것이 중요하다.

변경 관리에서 가장 중요한 것은 균형이다. 너무 경직된 프로세스는 혁신을 저해하고, 너무 유연한 프로세스는 혼란을 초래한다. 비즈니스 가치와 기술적 현실, 단기 목표와 장기 지속가능성, 새로운 기능 개발과 기술적 부채 관리 사이의 균형을 찾아야 한다.

keyword
이전 04화우선순위 조정과 타협점 찾기