기본 콘텐츠로 건너뛰기

생산성 지표 - 효과와 효율

생산성에 대한 패러다임에 대해 생각해 보도록 하자.

아래 그림을 보도록 하자.


앞부분의 화살표는 요구사항, 중간의 녹색 원통은 개발팀, 마지막 파란 원통은 테스팅 팀이라고 가정해 보자.

A의 경우에 개발팀은 10의 요구사항을 개발할 수 있는 능력이 있지만 요구사항은 5만 들어오고 있다. 개발팀만을 생각한다면 현재 개발팀의 생산성은 50%이다.

반면에 테스팅 팀은 5만큼의 개발 결과물을 테스팅 할 수 있고 개발팀으로부터는 5만큼의 개발 결과물이 만들어지고 있기 때문에 테스팅 팀의 생산성은 100%이다.

따라서 전체 프로젝트의 생산성은 75%이다.

B의 경우에는 개발팀은 100%의 생산성을 테스팅 팀 역시 100%의 생산성을 보인다. 반면에 테스팅 팀은 5의 능력뿐이지만 개발팀에서는 10만큼이 오고 있기 때문에 언제나 5의 재고가 쌓여있게 된다. 하지만 전체 프로젝트의 생산성은 100%이다.

당신은 어떤 팀이 더 훌륭한 팀이라고 생각되는가?

A팀은 효과적인 팀이라고 한다. 여기서 효과라는 것은 목표 달성율을 말한다. A팀의 경우에는 모든 요구사항과 모든 개발 결과물을 처리하고 있기 때문에 할당된 모든 목표를 달성하고 있다.

B팀은 효율적인 팀이라고 한다. 효율이라는 것은 자원 활용 능력을 말한다. A팀의 개발팀의 경우는 자원 활용율은 겨우 50%이다. 반면 B 팀은 모든 팀의 자원 활용율이 100%이다.

우리는 일반적으로 효과보다는 효율적인 팀에 집중한다.

B팀은 개발팀의 결과물을 테스팅 팀에서 모두 소화하지 못하고 만성적인 지연에 시달리고 있다. 이럴 때 많은 경우 테스팅 팀은 계속되는 야근과 철야 등으로 자원 활용율을 200%로 올리는 방식으로 최적화를 하게 된다.

이게 정말 좋은 방식일까?

여기서 생각해 볼 개념은 TOC의 Throughput, 투자, 운영비용 이다. 쓰루풋은 Input 대비 Output의 비율이다.

TOC에서는 개선을 할 때 투자와 운영비용의 추가 지출을 지양한다. 추가 지출을 하더라도 투자와 운영비용의 합이 쓰루풋보다 반드시 작아야 한다.

그리고 어떠한 경우에도 쓰루풋은 손상되서는 안된다.

위의 경우를 테스팅 팀의 관점에서 다시 한번 살펴보자.

B팀의 경우 테스팅 팀의 문제는 개발 결과물을 모두 테스팅할 능력이 부족해서 테스팅이 계속 지연되고 있는 것이 문제이다. 이것을 해결하고자 할 때 기존 방식대로 야근과 철야를 밥 먹듯이 한다면 일시적으로 투자와 운영비용이 상승하게 된다. 그런데 이러한 투자와 운영비용의 상승이 쓰루풋을 10으로 만든다는 보장이 없다.

오히려 장기적인 관점에서 팀원의 이직등으로 쓰루풋이 손상될 수가 있다.

이러한 부작용은 우리가 효과보다는 효율에 집중하기 때문에 전체를 바라보는 시각이 부족해서이다. 즉, 종속성을 고려하지 못하는 것이다.

쓰루풋과 효과로 본다면 A팀의 생산성은 100%이다. 개발팀은 모든 요구사항을 처리하고 있고 테스팅 팀 역시 모든 개발 결과물을 테스팅 하고 있다.

반면 B팀은 개발팀의 생산성은 100%지만 테스팅팀의 생산성은 겨우 50%이다. 즉, 전체적인 생산성은 50%이다.

즉, 가장 생산성이 낮은 팀이 전체 팀의 생산성을 결정하게 된다. 이러한 곳을 제약 혹은 병목이라도 한다.

이러한 결과가 나오게 된 것은 패러다임에 있다.

기존의 패러다임은 합의 법칙이라고 볼 수 있다.

즉, 부분 최적의 합이 전체 최적이 된다는 것이다. B팀은 부분 부분의 생산성이 100%이고 이러한 생산성의 합으로 전체 생산성을 100%로 보는 것이다.

반면 TOC는 곱의 법칙으로 생각한다. 제약이 전체 생산성을 결정짓는다고 생각한다.

그렇다면 B팀의 생산성을 높이기 위해서는 어떠한 방법이 좋을 것인가?

개선해야할 팀은 테스팅 팀이다. 문제는 테스팅 팀만을 고려해서는 절대로 개선이 이루어질 수 없다는 것이다.

하나의 프로젝트에는 많은 부서가 연관되어 있고 각 부서는 종속되어 있다. 그 많은 부서 중 가장 대표되는 부서라면 역시 개발팀과 테스팅 팀이다. 두 부서는 독립적인 부서가 아니라 서로 연관되어 있는 프로젝트라는 마차의 바퀴와 같은 존재이다. 서로의 균형이 맞지 않는다면 마차는 앞으로 나아갈 수가 없다.

B팀의 테스팅 팀을 개선하기 위해서는 그 앞단에 있는 개발팀의 협력이 필수불가결하다.

많은 개선 방법이 있을 수 있지만, 개발팀의 쓰루풋을 줄이는 것이 하나의 방법이 될 수 있다. 현재 들어오고 있는 요구사항을 우선순위에 따라 선별해서 조절할 수 있다. 그렇게 될 경우 개발팀은 자원활용에 대해 여유가 생기게 된다.
이러한 여유분은 단위 테스팅이나 테스트 자동화를 통해 테스팅 팀의 쓰루풋을 증대하는데 쓸 수 있다. 이러한 결과로 전체 최적화를 하고 이에 따라 이익이 증대하게 된다면 훗날 전체적인 쓰루풋을 증대하기 위한 투자로 이어질 수 있을 것이다.

이러한 개선이 되기 위해서는 경영진의 지원이 필수 불가결한 요소이다.

그리고 전문적인 컨설턴트의 도움이 필요하다.

왜냐하면 기존의 패러다임은 그렇게 쉽게 바뀌지 않기 때문이다.

생산성에 관련해서 컨설팅을 제공하는 업체나 컨설턴트는 매우 많다. 하지만 그러한 컨설턴트 중 테스팅 프로세스를 잘 아는 컨설턴트는 매우 드물다.

거기다 테스팅 팀만의 효율이 아닌 효과와 전체 프로젝트의 연관성에 대한 조언을 해주는 컨설턴트는 더욱 드물다.

위와 관련되어 강연이나 컨설팅이 필요하다면 murian.mentor@gmail.com 으로 연락을 주시기 바란다.

필요하다면 무료 컨설팅을 제공해 드릴 수도 있다.

무료 컨설팅에 대한 내용이 궁금하시다면 http://murian.textcube.com/notice/12 을 참고하시면 된다.


댓글

이 블로그의 인기 게시물

피드백 루프: AI 시대 테스터가 지켜내야 할 핵심 엔진

소프트웨어 개발과 테스팅 현장에서 가장 자주 언급되지만, 막상 시스템이 복잡해질수록 쉽게 경시되곤 하는 핵심 개념이 바로 '피드백 루프(Feedback Loop)'입니다. 코드를 수정하고, 빌드하고, 테스트 결과를 확인하고, 다시 개선하는 그 순환 과정의 속도와 정확도가 결국 소프트웨어의 품질을 결정짓기 때문입니다. 품질 전문가 매슈 하이저(Matthew Heusser)가 자신의 블로그 Quality Remarks에 기고한 "One Loop After Another" 아티클은 바로 이 피드백 루프의 다층적 구조와, AI 시대에 우리가 놓치지 말아야 할 품질 검증의 본질을 날카롭게 되짚어 줍니다. (출처: Quality Remarks - One Loop After Another / Matthew Heusser) https://qualityremarks.com/one-loop-after-another/ 매슈 하이저는 소프트웨어 개발 생태계가 단순히 하나의 커다란 테스트 루프로 돌아가는 것이 아니라, 시간 축과 관점에 따라 겹겹이 쌓인 '연쇄적인 피드백 루프들(One Loop After Another)'로 이루어져 있다고 설명합니다. 초단기 루프 (Inner Loop): 개발자가 코드를 작성하는 몇 초~몇 분 단위의 루프입니다. 단위 테스트(Unit Test)나 IDE의 Linter, AI 자동 완성이 즉각적인 피드백을 주는 영역입니다. 단기 루프 (Daily / CI Loop): 커밋과 푸시가 이루어지고, CI/CD 파이프라인에서 통합 테스트와 정적 분석이 실행되는 몇 시간 단위의 루프입니다. 중기 루프 (Iteration / Exploration Loop): 스프린트 단위로 탐색적 테스팅(Exploratory Testing)을 수행하고, 실제 사용자 시나리오나 엣지 케이스를 사람이 직접 검증하며 시스템의 유기적 작동을 확인하는 며칠~몇 주 단위의 루프입니다. 장기 루프 (Outer / Market Loop): 실제 ...

에이전틱 AI 프로젝트에서 테스터의 5가지 핵심 원칙

AI 코딩 에이전트와 자율형 에이전트가 빠르게 개발 워크플로우에 통합되면서, 단순히 코드를 잘 짜는 것을 넘어 '에이전트와 어떻게 협업하고 통제할 것인가'가 개발자와 아키텍트들의 가장 큰 화두로 떠올랐습니다. 윤석찬 님의 아티클 "AI 에이전트 시대, 개발자는 어떻게 일해야 하는가? – 프론티어 엔지니어링의 10가지 원칙"은 에이전틱 AI 시대에 엔지니어가 마주하는 패러다임 변화와, 실무 현장에서 일하는 방식을 어떻게 재정의해야 하는지 아주 명확한 가이드라인을 제시해 줍니다. (출처: channy.creation.net - 윤석찬 님의 블로그) https://channy.creation.net/blog/1989 비록 대규모 에이전트 오케스트레이션이나 초거대 인프라 시스템을 개인이 직접 구축하고 운용하는 것은 비용적·기술적으로 현실적인 한계가 있습니다. 하지만 개인 프로젝트에서 AI와 바이브 코딩(Vibe Coding)을 활용하며 겪었던 맥락 손실, 환각, 통제 불능의 경험들을 떠올려보면, 이 아티클이 제시하는 10가지 프론티어 엔지니어링 원칙은 소규모 개인 개발 환경에서도 대단히 깊은 공감을 불러일으킵니다. 이 글은 단순히 "AI 도구를 잘 쓰자"는 수준에 머무르지 않습니다. AI 에이전트가 생성해내는 불확실성 속에서 인간 엔지니어가 시스템의 맥락을 주도하고, 오작동을 제어하며, 품질의 키(Steering Wheel)를 쥐기 위한 구조적 사고법을 다룹니다. 그렇다면 프론티어 엔지니어링의 원칙을 바탕으로, 시스템의 신뢰성과 안전성을 검증해야 하는 테스터는 과연 어떤 실무 원칙을 세워나갈 수 있을까요? 윤석찬 님이 제시한 엔지니어링 원칙을 테스팅 관점으로 재해석해 보면, 다음과 같은 5가지 원칙으로 정리할 수 있을 것 같습니다. 1. 결정론적 검증에서 '경계선 및 허용 오차(Boundary)' 테스팅으로 전환하라 에이전트 기반 시스템은 같은 입력을 주어도 매번 다른 추론 경로를 거치는 확률적(Stoc...

에이전틱 AI 시대에 테스팅은?

 "소프트웨어 엔지니어링은 과연 끝난 것일까?" 최근 AI 코딩 에이전트와 바이브 코딩(Vibe Coding)의 급부상 속에서, 엔지니어들과 아키텍트들이 스스로에게 던지는 가장 뼈아픈 질문입니다. 이 질문에 대해 기술 현장의 날카로운 시선을 담은 이원국 님의 아티클 "소프트웨어 엔지니어링의 종말"과 arXiv 논문 "Agentic Software: How AI Agents Are Restructuring the Software Paradigm"은 아주 근본적인 패러다임의 변화를 짚어내고 있습니다. (출처: blog.wonkooklee.com - 소프트웨어 엔지니어링의 종말) https://blog.wonkooklee.com/blog/20260913_02/ (출처: arXiv - Agentic Software: How AI Agents Are Restructuring the Software Paradigm) https://arxiv.org/html/2606.05608v2 이원국님의 아티클과 논문에서 공통적으로 말하는 핵심은, 우리가 알고 있던 '인간이 직접 코드를 다듬고 작성하던 전통적 소프트웨어 엔지니어링'의 정체성은 종말을 고하고 있으며, 그 자리를 '에이전트 패러다임(Agentic Paradigm)'이 빠르게 대체하고 있다는 사실입니다. arXiv 논문 "Agentic Software"에서는 소프트웨어 구축의 단위가 단순히 결정론적(Deterministic) 알고리즘이나 코드에서, 목표를 스스로 자율 추론하고 도구를 호출하며 과업을 완수하는 'AI 에이전트 오케스트레이션'으로 이동하고 있음을 말하고 있습니다. 이제 개발자는 시스템의 메서드나 API 하나하나를 직접 타이핑하는 존재가 아닙니다. AI 에이전트가 코드를 생성하고, 실행하고, 테스트를 돌리고, 스스로 디버깅하는 일련의 자율 루프(Autonomous Loop)를 설계하는 '시스템...