Showing Posts From
결과다
- 03 Dec, 2025
품질은 협업의 결과다 - 개발팀과 싸운 날
품질은 협업의 결과다 - 개발팀과 싸운 날 월요일 오전 10시 회의실에 들어갔다. 개발팀 리드 석진이 먼저 말했다. "이번 배포, 일정 당겨야 합니다." 나는 테스트 계획서를 펼쳤다. 283개 케이스. 리그레션 포함하면 최소 5일 필요하다. "5일 드려야 합니다." "3일 안에 가능하지 않나요?" 아니다. 불가능하다."결제 모듈 변경됐어요. 여기 리스크 높습니다." 석진이 한숨 쉬었다. "QA팀이 병목입니다. 솔직히." 그 말을 들은 순간 뭔가 확 올라왔다. 13년 하면서 수백 번 들은 말이다. QA가 느리다. QA가 막는다. QA 때문에 출시가 늦다. "병목이 아니라 안전망입니다." 내 목소리가 차가워졌다. 회의실 공기가 얼었다. 지난 3개월을 돌아보다 커피를 뽑았다. 네 번째다. 지난 분기 우리가 잡은 크리티컬 버그. 17건이다. 배포 전에 잡았다. 만약 그게 프로덕션에 나갔다면? 생각만 해도 끔찍하다. 2월에 결제 모듈 오류 놓쳤다. 내가 승인했다. 개발팀이 "사소하다"고 했다. 배포 후 30분 만에 장애 터졌다. 고객 클레임 47건. 매출 손실 추산 불가. 포스트모템 회의 3시간. 그때 석진이 뭐라고 했나. "QA에서 잡았어야죠." 맞다. 내 책임이다. 그런데 왜 테스트 시간은 안 주나. 오후 2시, 다시 회의 기획팀 리드도 왔다. 경은이다. 그는 내 편이다. 보통은. "일정 조율 필요합니다." 석진이 자료를 띄웠다. 개발 완료 예정일. 배포 목표일. 사이에 QA 기간 3일. "리그레션 빼면 되지 않나요?" 내가 웃었다. 웃긴 소리다. "리그레션 빼면 뭘 보장하죠?" "이번에 변경된 부분만 집중 테스트." "결제 모듈이 회원 모듈이랑 연동돼요. 주문 히스토리도 영향받고요. 전체를 봐야 합니다." 석진이 답답한 표정이다. "현실적으로 생각하세요. 경쟁사가 벌써 출시했어요." "경쟁사는 장애 안 나나요?" 내가 경쟁사 모니터링 자료를 꺼냈다. 지난달 그들의 앱 다운. 3시간. 트위터에 난리 났다. 우리는 그러면 안 된다.팀원 지영이가 말했다 회의 끝나고 지영이가 왔다. QA 5년차다. "팀장님, 3일이면 못 합니다." "알아. 나도 알아." "개발팀은 우리를 뭘로 보는 걸까요." 그 질문에 답을 못 했다. 13년 했는데도 모르겠다. "협력 부서인데 왜 맨날 싸워야 해요." 지영이 목소리가 떨렸다. 피곤한 거다. 나도 피곤하다. "지영아, 우리가 싸우는 게 아니야." "그럼요?" "우리는 품질을 지키는 거야." 진부한 말이다. 그런데 달리 할 말이 없다. 수요일 새벽 2시 결국 배포했다. 3일 테스트했다. 내가 승인했다. 리스크 문서에 사인했다. "결제 모듈 엣지 케이스 미검증" 배포 후 1시간. 슬랙에 빨간불 떴다. "결제 오류 발생" 심장이 멈췄다. 전화가 왔다. 석진이다. "결제가 안 됩니다." "알아요. 확인 중입니다." 팀원 3명 호출했다. 로그 뜯었다. 원인 찾았다. 예상했던 바로 그 케이스다. 엣지 케이스. 특정 결제 수단 + 쿠폰 중복 사용 시 에러. 테스트 계획서 283번 케이스. 리그레션 항목이었다. 새벽 4시, 긴급 회의 전화 회의다. 목소리들이 날카롭다. "왜 못 잡았습니까?" 경영진 질문이다. "테스트 기간이 부족했습니다." 내 대답이다. "그래도 크리티컬은 잡았어야죠." 맞다. 맞는 말이다. 그런데. "5일 요청했습니다. 3일 주셨습니다." 회의실이 조용해졌다. 석진이 말했다. "개발 일정이 촉박했습니다." "그래서 품질을 포기합니까?" 내 목소리가 떨렸다. 화난 거다. 13년 만에 처음으로 회의에서 목소리 높였다. 목요일 오전, 포스트모템 회의실에 모였다. 8명이다. 화이트보드에 타임라인 그렸다. 배포 시간. 장애 발생. 복구 완료. 피해 규모 집계했다. 거래 실패 78건. 고객 문의 124건. 매출 손실 약 3,200만원. "근본 원인이 뭡니까?" 내가 물었다. 석진이 답했다. "엣지 케이스 테스트 누락." "왜 누락됐습니까?" "시간이 부족했습니다." "왜 시간이 부족했습니까?" 질문을 계속했다. Why를 5번 물었다. 결국 나온 답. "일정 압박." 그리고 더 근본적인 원인. "팀 간 신뢰 부족."금요일, 달라진 것 석진이 내 자리에 왔다. "커피 한잔 할까요?" 카페테리아 갔다. 둘이 앉았다. "죄송합니다." 석진이 먼저 말했다. "저도요." 내 대답이다. "제가 일정만 생각했어요. 품질은 당연히 지켜질 거라고." "저도 QA가 다 막아야 한다고 생각했어요." 우리는 둘 다 틀렸다. 품질은 QA만의 책임이 아니다. 개발만의 책임도 아니다. 기획도, 디자인도, 모두의 책임이다. "다음부터는 달라야 합니다." 석진이 말했다. "네. 달라야죠." 새로운 프로세스 월요일 아침. 전체 회의 소집했다. 개발팀, 기획팀, QA팀. 12명 모였다. "품질 협업 프로세스 만들겠습니다." 화이트보드에 썼다. 1단계: 기획 단계부터 QA 참여요구사항 리뷰 리스크 사전 식별2단계: 개발 중 지속적 소통데일리 싱크업 15분 변경사항 즉시 공유3단계: 현실적 일정 수립테스트 기간 = 개발 기간의 30% 리그레션 필수 포함 버퍼 20% 확보4단계: 공동 책임품질 지표 공유 팀별 KPI에 품질 항목 추가석진이 끄덕였다. 기획팀 경은이도 동의했다. "일정은 늘어나겠네요." 경은이 말이다. "네. 대신 장애는 줄어듭니다." 내 대답이다. 한 달 후 새 프로세스로 첫 배포했다. 테스트 기간 7일 받았다. 개발 완료 후 하루 버퍼도 있었다. 283개 케이스 전부 돌렸다. 리그레션 포함. 크리티컬 버그 3건 잡았다. 개발팀이 즉시 수정했다. 배포했다. 새벽 12시다. 슬랙 모니터링했다. 1시간. 2시간. 3시간. 초록불이다. 이슈 없다. 석진한테 메시지 보냈다. "배포 안정적입니다." 답장 왔다. "고생하셨습니다. 팀장님 덕분입니다." 아니다. 우리 모두 덕분이다. 지영이가 물었다 "팀장님, 이제 개발팀이랑 안 싸워요?" 웃었다. 싸움은 아니었다. "우리는 원래 안 싸웠어. 품질을 지키려고 했던 거지." "그럼 이제는요?" "같이 지킨다." 품질은 협업의 결과다. 13년 만에 확실히 깨달았다. QA가 혼자 막는 게 아니다. 개발이 혼자 만드는 것도 아니다. 기획이 혼자 기획하는 것도 아니다. 우리는 팀이다. 지금 퇴근길이다. 8시다. 늦지 않다. 엘리베이터에서 석진 만났다. "내일 스프린트 플래닝에서 QA 일정 먼저 잡죠." "네. 먼저 잡아주세요." 웃으며 헤어졌다. 차에 올랐다. 핸들 잡았다. 한숨 쉬었다. 13년 했다. 이제야 제대로 하는 거 같다. 품질은 QA의 책임이 아니다. 품질은 우리 모두의 약속이다. 배포 후 장애 없이 잠드는 밤. 이것만큼 좋은 게 없다.품질은 혼자 지키는 게 아니다. 같이 만드는 거다.