개념
먼저 오해 하나를 치우자. 이 레슨은 예절에 관한 것이 아니다. 목표는 "부드럽게 말하기" 가 아니라 결함이 빨리 고쳐지게 만들기다. 비난을 없애는 이유도 착해서가 아니라, 비난이 원인 분석을 늦추기 때문이다.
그래서 이 레슨의 원칙은 심각성을 깎는 것과 정반대다. 정보형 언어는 완곡어법이 아니다. 사실과 심각도는 더 선명하게 전하고, 사람을 겨누는 부분만 뺀다.
QA 일의 성격 자체가 이 기술을 요구한다. QA는 매일 남의 결과물에서 문제를 찾아 알리는 직무다. 같은 일을 1년에 수백 번 하므로, 전하는 방식이 조금 어긋나도 그 어긋남이 누적된다.
결함 리포트는 사람이 읽는다
레슨 2에서 배운 5가지 구성 요소를 다 갖춰도, 표현 방식에 따라 전혀 다른 반응을 만들어낼 수 있다. 결함 리포트는 결국 개발자라는 사람이 읽는 글이다 — 같은 사실이라도 "이거 왜 이렇게 만드셨어요?"와 "이 케이스에서는 이런 결과가 나옵니다"는 완전히 다른 대화를 시작한다.
비난형 언어 vs 정보형 언어
| 비난형(피해야 함) | 정보형(권장) |
|---|---|
| "이거 완전히 잘못 만들었네요" | "이 입력값에서는 계산 결과가 기대와 다릅니다" |
| "왜 이런 기본적인 것도 테스트 안 하셨어요?" | "이 케이스는 재현 절차에 없었을 수 있어 공유합니다" |
| "말도 안 되는 버그예요" | "재현율 10번 중 8번, 아래 조건에서 발생합니다" |
| "이 코드 누가 짰어요?" | (담당자를 지목하는 언급 자체를 하지 않는다) |
정보형 언어의 공통점은 "사람"이 아니라 "현상"을 주어로 삼는다는 것이다. "당신이 잘못했다"가 아니라 "이런 입력에서 이런 결과가 나온다"는 사실만 전달한다.
비난형이 되는 네 가지 패턴
의도 없이 비난형이 되는 경로가 정해져 있다. 네 가지만 피하면 대부분 해결된다.
| 패턴 | 예 | 고친 문장 |
|---|---|---|
| 사람이 주어 | "개발자분이 검증을 빼셨네요" | "이 입력에서 검증이 동작하지 않습니다" |
| "왜" 질문 | "왜 이렇게 만드셨어요?" | "이 동작이 의도인지 확인 부탁드립니다" |
| 평가 부사 | "완전히·말도 안 되는·기본적인" | (지운다. 사실만 남긴다) |
| 되묻는 어미 | "아직도 안 고쳐졌던데요?" | "진행 상황 확인 부탁드립니다" |
세 번째가 가장 쉽게 빠뜨린다. "기본적인 것도" 같은 말은 사실을 하나도 더하지 않고 상대를 평가만 한다. 지워도 정보는 그대로다.
네 번째는 한국어 특유의 함정이다. "~던데요", "~네요", "~는데" 로 끝나는 문장은 지적의 어조를 띤다. 같은 내용이라도 요청형으로 끝내면 대화가 이어진다.
관찰과 평가를 나눈다
사람은 본 것과 거기서 내린 판단을 한 문장에 섞어 말한다. 섞인 문장은 반박이 쉽고, 나뉜 문장은 반박할 것이 없다.
| 섞인 문장 | 관찰 | 평가(빼거나 분리) |
|---|---|---|
| "이 기능은 엉성하게 만들어졌습니다" | 입력 3종에서 모두 오류 발생 | "엉성하다" |
| "테스트를 안 하신 것 같습니다" | 기본 흐름에서 재현됨 | "테스트를 안 했다" |
| "이 영역은 늘 문제가 많아요" | 이번 스프린트에 같은 영역 결함 4건 | "늘 문제가 많다" |
오른쪽 칸을 지우고 가운데만 전하면 상대가 그 사실을 부정할 수 없다. 그리고 사실이 선명하면 평가는 상대가 스스로 내린다 — 그게 훨씬 강하다.
세 번째 줄은 평가를 숫자로 바꾼 예다. "늘 문제가 많다" 는 감정이고, "이번 스프린트에 같은 영역 결함 4건" 은 다음 행동으로 이어지는 정보다.
"왜"를 "무엇"으로 바꾼다
"왜" 로 시작하는 질문은 거의 항상 해명을 요구하는 말로 들린다. 묻고 싶은 것이 정말 이유일 때조차 그렇다.
| 왜 질문 | 무엇·어떻게 질문 |
|---|---|
| "왜 이 케이스를 안 막았어요?" | "이 케이스를 막는 것이 범위에 있었나요?" |
| "왜 이렇게 느려요?" | "어느 구간에서 시간이 걸리는지 확인할 수 있을까요?" |
| "왜 아직 안 됐어요?" | "지금 막혀 있는 것이 무엇인가요? 도울 게 있나요?" |
세 번째가 특히 효과가 다르다. "도울 게 있나요" 한 마디가 붙으면 질문이 추궁에서 협업으로 바뀐다. 그리고 실제로 답이 온다 — "기획 확인을 기다리는 중" 같은 진짜 병목이 드러난다.
완곡어법과 혼동하지 않기
여기서 방향을 잃는 사람이 많다. 비난을 피하려다 심각성을 흐리는 것은 더 나쁜 실패다.
| 흐린 표현(나쁨) | 정보형(좋음) |
|---|---|
| "혹시 시간 되실 때 한번 봐주시면…" | "결제가 완전히 막힙니다. 우회로 없음. 오늘 수정 필요합니다" |
| "조금 이상한 것 같기도 한데요" | "금액이 실제보다 1,000원 높게 청구됩니다" |
| "큰 문제는 아닌데 참고로…" | "영향은 작습니다(관리자 화면 표시만). 다음 스프린트로 충분합니다" |
왼쪽은 읽는 사람이 심각도를 오판하게 만든다. 특히 첫 줄처럼 긴급한 것을 부드럽게 쓰면, 상대가 급하지 않은 줄 알고 넘긴다. 그러면 사고가 난 뒤에 "말은 했는데" 가 되고, 그것은 전달에 실패한 것이다.
세 번째 줄이 정답의 모습이다. 작은 것은 작다고 분명히 적는다. 그것도 정보다.
상황별 문장 — 그대로 꺼내 쓸 수 있게
실무에서 반복되는 다섯 상황이다. 처음에는 외워서 쓰는 편이 낫다.
| 상황 | 이렇게 |
|---|---|
| 재현 안 된다는 답을 받았을 때 | "환경을 맞춰 보겠습니다. 저는 운영 / 계정 종류 X / 데이터 상태 Y 였습니다. 같은 화면에서 한번 같이 볼 수 있을까요?" |
| 의도된 동작으로 반려됐을 때 | "확인 감사합니다. 관련 내용이 문서에서 보이지 않아, 문서 보완 건으로 따로 올려 두겠습니다." |
| 오래 안 고쳐질 때 | "이 건 현재 막혀 있는 것이 있을까요? 우선순위 조정이 필요하면 제가 영향 범위를 다시 정리해 드리겠습니다." |
| 릴리즈를 반대해야 할 때 | "미해결 S1 2건이 있습니다. 내보내면 결제 실패가 사용자에게 보입니다. 판단은 팀에서 하시되, 이 사실은 기록으로 남겨 두겠습니다." |
| 내 리포트가 틀렸을 때 | "제가 잘못 봤습니다. 환경 설정이 달랐습니다. 혼란을 드려 죄송합니다 — 조건을 수정해 다시 올립니다." |
네 번째가 QA에게 가장 어렵고 가장 중요하다. 판단을 대신 내리려 하지 않고, 사실과 영향을 주고 기록을 남긴다. 이것이 모듈 4 레슨 5의 Go/No-Go 에서 QA가 서는 자리다.
다섯 번째를 잘하는 사람이 신뢰를 가장 많이 얻는다. 틀렸을 때 빠르게 인정하는 사람의 "이건 문제입니다" 는 무게가 다르다.
채널을 고른다
같은 말이라도 어디서 하느냐가 톤의 절반이다.
| 내용 | 어디서 |
|---|---|
| 결함 사실·재현 절차 | 이슈 추적 도구(기록이 남아야 한다) |
| 긴급 결함 알림 | 팀 채널 + 담당자 멘션. 짧게, 영향 먼저 |
| 같은 실수가 반복될 때 | 개인 대화로 먼저. 공개 채널은 지적으로 읽힌다 |
| 절차·체계 문제 | 회고. 특정 건이 아니라 유형으로 말한다 |
| 사람에 대한 우려 | 리드와 1:1. 결함 리포트에 쓰지 않는다 |
세 번째 줄을 지키는 것만으로 많은 갈등이 사라진다. 공개 채널에서 개인을 두 번 지목하면, 그 뒤로 그 사람은 QA를 감시자로 본다.
비동기 채널은 톤이 없다
이슈 코멘트와 메신저에는 표정과 목소리가 없다. 그래서 짧은 글이 차갑게 읽힌다.
- "재현됩니다." → 한 줄이면 반박처럼 읽힌다
- "다시 확인해 봤는데 같은 조건에서 재현됩니다. 환경 정보 추가해 두었습니다." → 같은 사실인데 협업으로 읽힌다
과하게 길 필요는 없다. 한 문장을 더 붙이는 것만으로 충분하다. 특히 부정하는 내용일 때 이 한 문장이 중요하다.
반대로 이모지와 느낌표로 부드럽게 만들려는 시도는 심각한 건에서는 역효과다. 긴급 결함에 웃는 표정이 붙어 있으면 상대가 심각도를 오판한다.
왜 개인 탓하기가 품질을 떨어뜨리나
가장 실질적인 이유는 분위기가 아니다. 정보가 숨기 때문이다.
| 비난이 있는 팀 | 비난이 없는 팀 |
|---|---|
| 자기 실수를 늦게 말한다 | 발견 즉시 공유한다 |
| "확실하지 않으면 보고하지 않는다" | 애매한 것도 일단 올린다 |
| 운영 사고 원인이 "부주의" 로 끝난다 | 절차의 공백을 찾는다 |
| 같은 사고가 다시 난다 | 재발 방지가 쌓인다 |
세 번째 줄이 핵심이다. 사고 원인을 "누가 부주의했다" 로 적으면 고칠 것이 없다. 사람을 조심시키는 것은 대책이 아니다. 같은 사고를 막는 것은 "그 시점에 아무도 그것을 볼 수 없었다" 는 구조를 찾아 고치는 일이다(모듈 10).
사례 — 같은 사실, 다른 결과
릴리즈 전날 결제 모듈에서 S1을 찾았다. 두 가지 방식으로 전했을 때의 차이가 실제로 남아 있다.
첫 번째 (비난형)
"결제 또 터졌습니다. 이번에도 쿠폰 쪽이에요. 왜 이 부분은 매번 이렇게 되는지 모르겠네요. 릴리즈 못 나갑니다."
받은 쪽의 첫 반응은 "쿠폰 쪽은 이번 스프린트에 안 건드렸습니다" 였다. 그 뒤 40분 동안 누가 무엇을 바꿨는지를 두고 대화가 돌았다. 원인 조사는 그 40분 뒤에 시작됐다.
두 번째 (정보형)
"[결제] 쿠폰 적용 후 수량 변경 시 할인액이 재계산되지 않습니다.
재현 5/5. 영향: 쿠폰 사용자 전체, 실제보다 높은 금액이 청구됩니다. 우회로 없음.
네트워크 탭에
/cart/recalculate호출이 없습니다(참고·추측).릴리즈 판단에 필요한 정보가 더 있으면 정리해 드리겠습니다."
첫 반응은 "지금 로그 보겠습니다" 였다. 20분 뒤 원인이 나왔고, 쿠폰 모듈이 아니라 장바구니 수량 핸들러였다.
두 리포트에 담긴 사실은 같다. 차이는 세 가지였다 — "또 터졌다" 가 없고, "왜 매번" 이 없고, 원인 추정이 추측으로 표시됐다. 그리고 릴리즈를 QA가 막지 않고 판단 재료를 준 것이 마지막 문장이다.
결함은 개인의 실수가 아니라 시스템의 결과다
버그는 대체로 한 사람의 부주의가 아니라, 요구사항이 불명확했거나, 시간이 부족했거나, 테스트 환경이 실제와 달랐거나 하는 여러 원인이 겹친 결과다. 결함 하나를 특정 개발자 개인의 실수로 몰아가는 언어는 사실관계와도 맞지 않을 때가 많고, 팀 분위기만 방어적으로 만든다.
톤이 만드는 결과의 차이
비난형으로 리포트를 받은 개발자는 방어적으로 반응하기 쉽다 — 결함 자체보다 "내 잘못이 아니다"를 증명하는 데 에너지를 쓰게 된다. 정보형으로 리포트를 받으면, 개발자는 곧바로 "이 현상이 왜 발생하는지" 원인 분석에 집중할 수 있다.
같은 결함을 놓고도, 리포트의 톤 하나가 그 결함이 얼마나 빨리 고쳐지는지에 실질적인 영향을 준다.
구두 커뮤니케이션에서도 동일하다
이 원칙은 텍스트 리포트뿐 아니라 스탠드업 미팅이나 슬랙 대화에서도 똑같이 적용된다. "그거 아직도 안 고쳐졌던데요?"보다 "그 이슈 진행 상황 여쭤봐도 될까요?"가 같은 정보를 전달하면서도 협업을 이어가는 언어다.
실무에서 왜 필요한가
QA와 개발은 매일 함께 일하는 관계다. 결함 리포트마다 비난조로 쓰면 단기적으로는 문제가 지적되겠지만, 장기적으로는 개발자가 QA를 "트집 잡는 사람"으로 인식하게 되고, 협업 자체가 힘들어진다. 반대로 정보형 커뮤니케이션이 습관이 된 QA는 개발자에게 신뢰받는 동료가 되고, 그 신뢰는 결함이 더 빨리, 더 정확하게 논의되는 실질적인 효율로 돌아온다. 이건 모듈 1(레슨 6)과 모듈 2(레슨 6)에서 이미 살짝 다룬 원칙을, 결함 리포트라는 QA의 가장 빈번한 커뮤니케이션 상황에 구체적으로 적용하는 것이다.
발언권은 이 지점에서 생긴다
QA가 조직에서 영향력을 갖는 경로는 둘뿐이다. 정확한 리포트(레슨 2)와 전달 방식(이 레슨)이다. 둘 중 하나가 빠지면 나머지가 힘을 못 쓴다.
| 조합 | 결과 |
|---|---|
| 정확 + 정보형 | 릴리즈 판단 자리에 QA가 불린다 |
| 정확 + 비난형 | 사실은 맞지만 방어 반응에 시간이 샌다 |
| 부정확 + 정보형 | 좋은 사람이지만 의견이 가볍게 취급된다 |
| 부정확 + 비난형 | 대화 자체가 끊긴다 |
두 번째 칸이 아깝다. 실력 있는 QA가 조직에서 고립되는 전형적인 경로이고, 고치는 데 큰 노력이 들지 않는 부분이기도 하다.
비난을 받는 쪽이 될 때
반대 상황도 온다. "그건 QA가 왜 못 잡았죠" 라는 말이다. 같은 원칙을 자신에게 적용한다.
- 사실을 먼저 확인한다 — 테스트 범위에 있었나, 환경에서 재현 가능했나
- 범위에 없었다면 그 사실을 적는다 — "해당 조건은 테스트 범위에 없었습니다. 범위를 어떻게 정했는지 공유하겠습니다"
- 놓쳤다면 인정하고 구조로 넘긴다 — "놓쳤습니다. 어떤 질문이 없었는지 정리해 체크리스트에 더하겠습니다"(모듈 5 레슨 14)
세 번째가 가장 강하다. 변명하지 않고, 동시에 개인의 반성으로 끝내지 않고 다음을 막는 장치로 바꾼다. 이 답을 하는 사람에게는 같은 질문이 다시 오지 않는다.
채용시장에서의 위치
면접에서 이 레슨은 기술 질문이 아니라 상황 질문으로 나온다. 그리고 거의 모든 QA 면접에 한 번은 들어온다.
| 질문 | 약한 답 | 강한 답 |
|---|---|---|
| "개발자와 의견이 충돌한 경험이 있나요?" | "큰 충돌은 없었습니다" | "재현 여부로 갈린 적이 있어 환경을 맞춰 같은 화면에서 함께 봤습니다" |
| "개발자가 결함을 인정하지 않으면요?" | "설득합니다" | "사실과 영향만 전하고, 판단은 팀에 맡기고 기록을 남깁니다" |
| "릴리즈를 막은 적 있나요?" | "제가 반대해서 미뤘습니다" | "제가 막지는 않습니다. 미해결 S1과 그 영향을 전하고 결정은 팀이 합니다" |
| "본인 리포트가 틀렸던 적은요?" | "기억에 없습니다" | "환경 설정이 달랐던 적이 있어 바로 정정하고 조건을 수정해 다시 올렸습니다" |
| "사고를 놓쳤다는 말을 들으면요?" | "범위를 설명합니다" | "어떤 질문이 없었는지 정리해 체크리스트에 더합니다" |
세 번째가 가장 변별력이 크다. "제가 릴리즈를 막았다" 는 답은 권한을 오해한 것으로 읽힌다. QA의 일은 판단을 대신하는 것이 아니라 판단이 가능하게 만드는 것이고, 이 구분을 아는 지원자는 많지 않다.
네 번째도 함정이다. "틀린 적 없다" 는 답은 기록을 안 남긴다는 뜻으로 읽힐 수 있다. 틀렸던 일을 어떻게 수습했는지가 실제 평가 대상이다.
공고 표현으로는 "협업 능력", "커뮤니케이션 역량", "크로스 펑셔널 협업" 이 이 레슨에 해당한다. 추상적으로 보이지만 면접에서는 구체적인 상황과 문장으로 평가되므로, 위 다섯 줄은 자기 경험으로 바꿔 미리 정리해 둘 가치가 있다.