기본 콘텐츠로 건너뛰기

오류 부재의 궤변 - 좋은 품질의 제품을 만들려면..

여러분의 조직에서 품질은 어떻게 측정되고 있습니까?

품질이 좋은 것과 품질이 나쁜 것의 기준점은 무엇입니까?

고객이 찾는 제품과 고객에게 잊혀져 버린 제품의 차이는 무엇입니까?

제품의 품질을 측정하는 기준은 정말 많습니다.

대표적으로 ISO/OEC 9126 품질 메트릭을 생각해 볼 수 있습니다.

그리고 많은 조직에서 가장 많이 사용되는 품질 측정 지표 중 하나가 결함입니다.

결함은 제품의 신뢰성과 직결되는 가장 중요한 지표 중 하나입니다. 그만큼 테스트 활동 역시 중요합니다.(하지만 정말 중요하게 취급되는지는 잘 모르겠습니다.)

우리는 일반적으로 결함이 적은 제품은 품질이 좋다고 얘기합니다.

하지만 이것이 언제나 성립되는 진실일까요?

많은 사람들이 좋은 제품은 결함이 없어야 한다고 얘기하고, 테스트가 끝나고 나면 테스트 팀에 결함이 없느냐고 물어봅니다.

하지만, 진실은 결함이 없는 제품은 하나님이 만들지 않는 이상 절대 나올 수 없을 것입니다. 아니 어쩌면 하나님이 만드셔도 결함은 있을 것입니다.

인간은 완전 결함 투성이의 실패작처럼 보이니까요...

즉, 우리가 좋은 제품이라고 찬양하는 포토샵, 아이폰, 엑셀 등 많은 제품들은 모두 결함을 가지고 있습니다.

여러분은 포토샵이나 아이폰, 엑셀 등을 사용하면서 단 한번도 결함이 발생하는 것을 경험해 본적이 없으십니까?

내가 정말로 필요한 기능인데 왜 이런 기능은 없을까라고 고민해 보신적이 정말 단 한번도 없으신가요?

즉, 결함은 분명 품질을 측정하는 가장 중요한 지표 중 하나이지만 이것이 전부는 아닙니다.

정작 중요한 것은 사용자가 원할 때 정상적으로 동작하고 제품이 사용자에게 얼마나 쓸모있고 반드시 필요한 제품인가입니다.

하지만 우리가 주변에서 흔하게 접하는 품질 관리 프로세스들을 바라보면 대부분의 활동이 결함을 발견하고 결함을 제거하는 활동에 집중하고 있습니다.

많은 품질 관리 프로세스들이 무조건적으로 결함에만 집중하는 모습을 볼 수 있습니다.

그 정점에 있는 프로세스 중 가장 대표적인 것이 6시그마와 ZD를 꼽을 수 있습니다.

왜 그토록 많은 프로세스들이 결함에만 집중하는 것일까요?

그것은 결함이 가장 측정하기 쉽기 때문입니다.

가장 쉽고 실행 가능한 결함에만 집중하다 보니 막상 품질을 이루는 다른 많은 요소들이 무시되는 것이 현실입니다.(하지만 실제로 그런 것인지.. 우리 나라에서는 결함 투성이의 제품을 너무 쉽게 볼 수 있습니다.)

이렇게 결함에만 집중하는 품질 관리 프로세스가 가져오는 부작용으로 다음과 같은 경우를 생각해 볼 수 잇습니다.
  1. 결함을 제거하는 작업에 너무 집중한 나머지 시장에 출시할 적기를 놓쳐서 제품이 잊혀지는 경우도 있습니다.
  2. 혁신적인 신기술의 적용에 필연적으로 발생될 결함에 대한 두려움으로 신기술 적용을 지연하다 뒤통수를 맞는 경우도 있습니다.
  3. 새로운 시도는 리스크가 증가하기 때문에 조직 전체에서 새로운 시도 자체를 시도하지 못하도록 할 수 있습니다.
  4. 품질 관리에 들어가는 비용을 줄여보겠다고 QA 조직을 만들었지만 오히려 품질을 갉아먹어 들어가고 테스트도 제대로 수행하지 못할 수 있습니다.
  5. 가장 큰 문제점은 결함 이외의 논의 자체를 할 수 없게 될 수 있습니다. 최우선 과제는 결함을 제거하는 것이기 때문에 사용성과 같은 논의는 아예 할 수도 없게 됩니다.
여러분의 품질 관리 프로세스는 어떻습니까?

품질은 단시간에 이루어질 수 있는 성질이 아닙니다.

우물에 가서 숭늉을 찾으면 안되는 것처럼 시간이 필요합니다.

하지만 많은 곳에서는 그저 빨리 빨리를 외치면서 말로만 품질을 외칩니다.

그리고 정장 중요한 요소들은 다 빼고 가장 쉬운 것만 합니다. 마치 알맹이는 빼고 오렌지 껍질만 씹고 있는 형국입니다.

품질이 정말 좋은 제품을 만들기 위해서라면 지금처럼 프로젝트 말미에 결함이나 제거해보겠다고 아웅거리는 활동에서 벗어날 필요가 있습니다.

제품을 기획하고 요구사항을 수집하는 단계부터 시간을 들여서 차근 차근 진행할 필요가 있습니다.

시야를 더 넓혀서 생각해 볼 필요가 있습니다.

리스크를 수용할 자세가 되어야 합니다.

그리고 여러분이 하는 일의 양을 줄이고 집중해야할 필요가 있습니다.

우리는 지금 애플의 성공을 보고 있습니다.

하지만 애플이 어떻게 성공했는지는 별로 관심이 없습니다.

스티브 잡스가 없던 애플을 기억하는 사람들이 있을까요?

그때의 애플은 각 사업부서들이 경쟁적으로 제품을 찍어내던 시절이었습니다. 사용자가 원하는 제품을 만드는 것이 아니라 각 사업부서들의 영리와 정치적인 이슈에 따라 제품을 찍어내던 시절의 애플을 기억할 필요가 있습니다.

그리고 스티브 잡스가 돌아온 이후 그가 한 일을 배울 필요가 있습니다. 그는 우선 모든 모델을 걷어버렸습니다.

기존에 애플이 생산하던 모든 제품을 걷어 버리고 특정 모델에 집중했습니다.

아이폰은 세대가 변하기는 하지만 단 하나의 제품군입니다.

애플의 제품 라인은 다양하지 않지만 우리에게 큰 기쁨을 줍니다. 우리가 진정 원했던 것을 만들어내고 있습니다.

올해 우리 나라의 핸드폰 제조사들은 수십종의 안드로이드 단말기를 출시하겠다고 합니다.

그 수십종의 단말기가 과연 어떤 가치가 있을까요? 어떤 차이가 있을까요? 결함이나 제대로 수정하고 내놓겠다는 것일까요?

갤럭시 S와 갤럭시 A의 차이를 말할 수 있는 사람은 많지 않습니다.

하지만 아이폰 3G와 아이폰 4의 차이를 우리는 아주 쉽게 이해합니다.

우리는 빨리 빨리 문화로 성장했습니다. 하지만 그것이 이익이 되었던 시절은 저물었습니다.

효율에 집착하는 조직은 오히려 품질을 희생시키는 프로세스를 구축했습니다.

도요타의 몰락은 이미 몇년전부터 예견되었던 일입니다.

전 그렇게 삼성이나 LG도 몰락할 수 있다고 봅니다.

우리 나라의 제조사들은 효율을 강조하면서 품질에 대한 많은 부분을 고객에게 떠넘겨버렸습니다.

고객을 베타테스터 쯤으로 생각하는 이상 좋은 품질이란 없습니다.

적은 예산으로 빠르게 제품을 만드는 유일한 방법은 제품의 결함을 발견하는 모든 작업을 고객에게 떠넘기는 방법입니다.

대체제가 없고 궁핍하던 시절에는 어쩔 수 없었지만 지금은 아닙니다.

지금은 삼성이나 LG가 당장 없어져도 우리 삶에 큰 문제가 없습니다.

때문에 품질에 대한 근본적인 고민부터 다시 해야합니다.

그리고 적은 것에 집중하고 천천히 차근 차근 진행할 필요가 있다고 봅니다.

여러분은 어떠신가요?

댓글

이 블로그의 인기 게시물

피드백 루프: 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)를 설계하는 '시스템...