Showing Posts From
Qa리드
- 22 Dec, 2025
어? 이 버그 지난 달에도 나왔는데?
또 이 버그 아침 9시. 슬랙 알림이 울렸다. "결제 페이지에서 금액이 안 넘어와요." 손이 멈췄다. 이 문장, 어디서 봤다. 지난달 장애 리포트를 뒤졌다. 있었다. 똑같은 증상. 똑같은 모듈. 팀원에게 물었다. "이거 지난번에 고쳤잖아." "네, 근데 또 났어요." 커피를 마셨다. 벌써 두 번째다.포스트모템은 뭐하러 쓴 건지 지난달 장애 포스트모템을 열었다. 3페이지짜리 문서. 원인 분석, 근본 원인, 재발 방지책까지 다 있다. 재발 방지책 3가지:API 파라미터 검증 로직 강화 결제 모듈 통합 테스트 케이스 추가 배포 전 해당 시나리오 필수 체크1번은 했다. 2번은 반만 했다. 3번은 안 했다. 개발 리드에게 물었다. "체크리스트 왜 안 따른 거예요?" "일정이 빡빡해서요. 근데 이건 다른 이슈 아닐까요?" 로그를 봤다. 같은 이슈였다. 일정이 빡빡하면 품질은 뒤로 가는 게 이 조직의 공식이다. 재발 방지책이 지켜지지 않는 이유 점심 먹고 팀원들이랑 얘기했다. "또 똑같은 거 났어." "아... 그거요? 저번에 포스트모템 썼는데." "응. 근데 아무도 안 지킴." 이유는 간단하다. 첫째, 바빠서. 일정 지키는 게 최우선이니까. 둘째, 책임이 없어서. 재발 방지책 안 지켜도 징계 없음. 셋째, 추적이 안 돼서. 누가 체크해야 하는지 모호함. 넷째, 문화가 없어서. "이번만"이 모든 걸 정당화함. 팀원이 물었다. "팀장님, 이거 어떻게 해요?" "모르겠어. 나도." 솔직히 모르겠다. 13년 했는데 답이 없다.경영진한테 보고 오후 3시. CTO 리포트 미팅. "같은 이슈가 재발했습니다." "어떻게 된 거죠?" "재발 방지책이 제대로 이행되지 않았습니다." "왜요?" "일정 압박이 있었고, 체크리스트가 강제가 아니었습니다." 침묵이 흘렀다. 5초쯤. "그럼 이번엔 어떻게 할 건가요?" 또 물어본다. 어떻게 할 거냐고. "배포 전 필수 체크리스트를 강제화하겠습니다. 승인 프로세스를 추가하고, QA 팀장 사인 없으면 배포 못 하게 하겠습니다." "그럼 일정은요?" "지켜야죠. 품질이랑 일정 둘 다." 불가능한 걸 약속했다. CTO는 고개를 끄덕였다. "기대하겠습니다." 미팅이 끝났다. 나왔다. 화장실 갔다. 거울을 봤다. 피곤한 얼굴. "재발 방지책 강제화." 말은 쉽다. 현실은 어렵다. 강제화가 답일까 퇴근 전에 테스트 전략 회의를 잡았다. "이제부터 배포 전 체크리스트 필수입니다. QA 팀장 승인 없으면 배포 안 됩니다." 개발 리드가 물었다. "그럼 시간 더 걸리는데요?" "당연하죠. 품질 체크하려면." "일정은 어떻게 하고요?" "그건 PM이랑 조율해야죠." PM이 끼어들었다. "우리 일정 못 미루는 거 아시잖아요." 알지. 다 안다. 일정은 못 미루고, 품질은 지켜야 하고, 리소스는 그대로. 이게 내가 13년간 들은 말의 요약이다. "그럼 어떻게 해야 하는데요?" 개발 리드가 물었다. "자동화를 늘려야죠. 수동 테스트 줄이고, 회귀 테스트 자동화하고." "예산은요?" "신청했어요. 작년부터." 승인 안 났다. 올해도 아마 안 날 거다.시스템의 문제 퇴근길 지하철에서 생각했다. 재발 방지책이 안 지켜지는 건 개인의 문제가 아니다. 시스템의 문제다. 개발자가 게을러서? 아니다. 다들 밤늦게까지 일한다. PM이 무책임해서? 아니다. 일정 압박받는 건 그쪽도 마찬가지. QA가 제대로 안 해서? 우리는 했다. 다 했다. 문제는 구조다. 일정이 최우선이고, 품질은 부차적이고, 재발 방지는 선택 사항인 구조. 장애 터지면 난리 나지만, 터지기 전엔 아무도 신경 안 쓰는 구조. 포스트모템은 쓰지만 아무도 안 읽는 구조. "다음엔 조심하자"가 재발 방지책이 되는 구조. 이 구조를 바꾸려면 뭐가 필요한가. 경영진의 의지? CTO는 관심 없다. 숫자만 본다. 프로세스 강화? 이미 충분히 강하다. 안 지켜서 문제지. 문화 개선? 13년 해봤는데 문화는 안 바뀐다. 그래도 해야 하는 일 다음 날 아침. 출근했다. 재발 방지책 강제화 문서를 작성했다.배포 전 필수 체크리스트 30개 항목 각 항목별 담당자 지정 QA 팀장 최종 승인 프로세스 미이행 시 배포 중단 권한개발팀에 공유했다. 항의가 들어왔다. "이거 다 하려면 시간이 2배로 걸리는데요." "그럼 자동화하세요. 제가 도와드릴게요." "자동화 구축할 시간도 없는데요." "그럼 계속 똑같은 장애 터지겠네요." 말을 멈췄다. 더 할 말이 없었다. PM한테 따로 메시지를 보냈다. "이번 스프린트에 자동화 구축 일정 넣어주세요. 3주면 회귀 테스트 80% 커버 가능합니다." "다음 스프린트에 넣을게요." "이번 스프린트요." "기능 개발이 우선이잖아요." "품질도 기능입니다." 읽씹당했다. 팀원들과의 대화 점심시간에 팀원들이랑 밥 먹었다. 막내가 물었다. "팀장님, 재발 방지책 강제화하면 진짜 달라질까요?" "모르겠어. 근데 안 하는 것보단 낫지." "저는... 회의적이에요." "나도." 다들 웃었다. 쓴웃음. 10년차 팀원이 말했다. "저도 예전 회사에서 비슷한 거 해봤어요. 처음엔 다들 따르다가 한 달 지나면 형식적으로 바뀌더라고요." "알아. 근데 그래도 해야지." "왜요?" "안 하면 뭐라도 바뀌냐?" 대답이 없었다. 우리는 알고 있다. 이 방법도 완벽하지 않다는 걸. 하지만 안 하는 것보단 낫다. 매번 같은 장애 보고 가만히 있는 것보단. "어? 이 버그 지난 달에도 나왔는데?"라고 말하고 아무것도 안 하는 것보단. 조직 문화라는 벽 퇴근 전에 CTO한테 메일을 보냈다. 제목: 재발 장애 근본 원인 및 개선 방안 내용은 3페이지.최근 6개월간 재발 장애 통계: 전체 장애의 37% 재발 원인: 재발 방지책 미이행 82% 미이행 원인: 일정 압박 65%, 프로세스 부재 23%, 리소스 부족 12% 개선 방안: 배포 프로세스 강화, 자동화 투자, 품질 메트릭스 KPI 반영마지막 문장: "품질은 선택이 아닌 필수입니다. 재발 방지책 이행을 조직 KPI에 포함시켜주시기 바랍니다." 보내고 나니 허무했다. 이런 메일, 매 분기마다 보낸다. 13년 동안. 답장은 늘 비슷하다. "중요한 의견 감사합니다. 검토하겠습니다." 검토만 하고 끝이다. 왜 안 바뀔까. 품질보다 속도가 중요해서? 맞다. 장애 터져도 큰일 안 나니까? 맞다. QA가 알아서 막아주니까? 맞다. 조직 문화는 바뀌지 않는다. 위에서 바꾸지 않으면. 그래도 기록은 남긴다 밤 10시. 집에 왔다. 노트북을 켰다. 개인 기록을 작성했다. "2024년 X월 X일. 결제 모듈 재발 장애. 지난달과 동일. 재발 방지책 미이행." 이런 기록이 쌓인 지 3년. 왜 쓰냐고? 모른다. 누가 볼 것도 아닌데. 나조차 다시 안 읽는데. 그래도 쓴다. 언젠가 누군가 물어볼 때 보여주려고. "왜 품질이 안 좋아졌나요?" 그때 이 기록을 보여줄 거다. "재발 방지책을 안 지켰습니다. 계속. 반복적으로." 증거는 남겨야 한다. 안 그러면 나중에 QA 탓이 된다. "QA가 제대로 테스트 안 해서 장애 났다." 아니다. 우리는 했다. 다 했다. 기록이 증명한다. 13년 차의 회의감 솔직히 말하면 회의적이다. 재발 방지책 강제화해도 달라질까? 모르겠다. 프로세스 만들어도 안 지키면 끝이다. 자동화 구축해도 예산 안 나오면 끝이다. 조직 문화 바꾸자고 해도 위에서 관심 없으면 끝이다. QA 13년 했다. 나아진 것도 있다. 툴은 좋아졌다. Jira, TestRail, CI/CD. 방법론도 발전했다. 애자일, DevOps, 시프트 레프트. 하지만 본질은 안 바뀌었다. "일정이 급해서", "이번만", "다음엔 제대로 하자". 이 말들은 13년 전이나 지금이나 똑같다. 그래도 해야 한다. 이게 내 일이니까. 팀원들이 보고 있으니까. "팀장님도 포기하면 우리는 뭐 하나요?" 포기하면 안 된다. 아직은. 내일도 내일 아침 9시에 긴급 회의가 잡혔다. 안건: 재발 장애 대응 방안 논의. 또 같은 얘기 할 거다. "원인이 뭡니까?" "왜 또 났습니까?" "어떻게 할 겁니까?" 나는 같은 대답을 할 거다. "재발 방지책이 지켜지지 않았습니다." "이번엔 강제화하겠습니다." "프로세스를 개선하겠습니다." 그리고 한 달 뒤, 또 같은 장애가 날 거다. 또 같은 회의를 하겠지. 이게 내 일이다. QA 팀장. 재발 장애를 막는 사람이 아니라, 재발 장애를 기록하는 사람. 변화를 만드는 사람이 아니라, 변화를 요청하는 사람. 씁쓸하다. 하지만 내일도 출근한다. 커피 마시고, 슬랙 확인하고, 또 싸울 거다. "어? 이 버그 지난 달에도 나왔는데?" 이 말을 더 이상 안 하는 날이 올까. 모르겠다. 13년 했는데도.재발 장애는 품질 문제가 아니라 조직 문화 문제다. 근데 문화는 안 바뀐다.
- 09 Dec, 2025
'우선순위가' - 내 입버릇이 된 그 말의 무게
'우선순위가' - 내 입버릇이 된 그 말의 무게 아침 9시, 리스트 작성 출근했다. 커피 뽑고 앉았다. 오늘도 리스트부터 쓴다.배포 전 최종 검증 팀원 1on1 (3건) 경영진 품질 리포트 신규 기능 테스트 전략 회의 자동화 환경 장애 대응5개다. 하루는 8시간이다. 계산이 안 맞는다. 매일 그렇다. "우선순위가 뭐야?" 혼잣말이다. 13년 차의 입버릇. 이제 자동으로 나온다. 숨 쉬듯. 중요한 게 5개면 우선순위가 없는 거다. 중요한 게 1개가 되어야 우선순위다. 그래서 4개를 포기해야 한다. 아니, 포기가 아니다. '미루는' 거다. 그렇게 생각하면 덜 무겁다. 조금.오전 10시, 첫 번째 선택 개발팀 리드가 슬랙 보냈다. "배포 일정 하루 당깁니다. 가능할까요?" 불가능하다. 테스트 시간이 부족하다. 하지만 "불가능"이라고 답할 수 없다. 그러면 협업 안 하는 팀이 된다. "우선순위 정리해서 답변드릴게요." 또 나왔다. 우선순위. 지금 하던 일을 멈췄다. 배포 범위를 확인했다. 30개 기능 변경. 리스크 분석했다. 고위험 7개, 중위험 15개. 핵심만 테스트하면 된다. 나머지는... 운에 맡긴다. "핵심 기능 7개는 검증 가능합니다. 나머지는 배포 후 모니터링으로." 답장 보냈다. 속은 불편하다. 하지만 이게 현실이다. 우선순위를 정한다는 건 뭔가를 포기한다는 뜻이다. 팀원들한테 공유했다. "이번 배포는 고위험 케이스 위주로." 다들 안다. 완벽한 테스트는 없다는 걸. 그래도 말해야 한다. 책임은 내 거니까. 오후 2시, 두 번째 선택 1on1 시간이다. 3년 차 팀원. "팀장님, 자동화 공부하고 싶어요." 좋다. 당연히 지원해야 한다. 팀의 미래다. 투자해야 한다. "근데 지금 당장은 수동 테스트가 급해서..." 또 나왔다. 우선순위. 팀원의 성장 vs 당장의 일정. 미래 vs 현재. 투자 vs 실행. 항상 이 선택이다. 정답은 없다. 둘 다 중요하다. "일단 이번 스프린트는 수동 위주로. 다음 달부터 자동화 시간 30% 배정할게." 팀원이 고개를 끄덕였다. 표정은... 실망이 섞였다. 나도 안다. 다음 달에도 급한 게 생긴다는 걸. 30%는 20%가 되고, 10%가 된다. 결국 안 된다. 하지만 지금 당장 배포가 막히면 팀 전체가 욕먹는다. 우선순위를 정한다는 건 누군가를 실망시킨다는 뜻이다.오후 4시, 세 번째 선택 경영진 보고 준비했다. 이번 분기 품질 메트릭스.배포 성공률: 87% 장애 재발률: 12% 테스트 커버리지: 63%숫자가 안 좋다. 이유는 안다. 테스트 시간이 부족했다. 자동화 투자가 없었다. 보고서에 쓴다. "품질 개선을 위해 자동화 투자 필요" 그리고 지운다. 경영진은 숫자를 원한다. "얼마나 걸려? 효과는?" 대답 못 하면 승인 안 난다. 다시 쓴다. "현재 일정 내 최선의 결과. 지속 모니터링 중" 우선순위를 정한다는 건 하고 싶은 말을 참는다는 뜻이다. 회의 들어갔다. 30분. 임원이 물었다. "장애율이 왜 올랐죠?" "일정이 촉박해서 테스트 범위를 조정했습니다." "그럼 일정을 지키는 게 우선순위였단 거네요?" 그렇다. 맞다. 하지만 그렇게 말하면 무능해 보인다. "리스크 기반으로 우선순위를 정했습니다. 치명적 장애는 없었습니다." 임원이 고개를 끄덕였다. 회의 끝났다. 복도 걸어 나온다. 숨이 답답하다. 품질이 우선이다. 맞다. 하지만 일정도 우선이다. 비용도 우선이다. 팀 사기도 우선이다. 전부 우선이면 뭐가 우선인가. 오후 6시, 네 번째 선택 배포 1시간 전이다. 개발팀에서 연락 왔다. "기능 하나 더 넣어도 될까요? 작은 거예요." 안 된다. 절대 안 된다. 배포 직전 변경은 재앙이다. 13년 경험이 말한다. 하지만 물었다. "얼마나 중요한 거예요?" "CEO가 오늘 데모 보고 싶대요." 그렇구나. 다시 계산한다. 리스크: 높음. 일정: 불가능. 정치: 중요. "30분 줄 테니 빠르게 확인만 할게요. 풀 테스트는 못 해요." 전화 끊었다. 팀원한테 말했다. "미안한데 급한 거 하나만..." 팀원이 웃었다. 쓴웃음. "괜찮아요. 늘 그렇잖아요." 늘 그렇다. 우선순위를 정한다는 건 원칙을 꺾는다는 뜻이다.밤 9시, 다섯 번째 선택 배포 끝났다. 장애 없었다. 다행이다. 정말 다행이다. 팀원들한테 메시지 보냈다. "수고했어요. 내일 점심 제가 살게요." 답장 온다. 고맙다고. 미안하다는 말은 안 한다. 너무 많이 해서. 집에 가는 길. 지하철에서 리스트를 본다. 오늘 아침에 쓴 5개. 실제로 한 건 15개다. 계획한 건 2개뿐이다. 나머지는 전부 '급한 거'. 우선순위가 바뀐 거다. 10번. 그게 내 일이다. 우선순위를 정하는 게 아니다. 우선순위가 바뀌는 걸 관리하는 거다. 현관문 열었다. 딸이 달려온다. "엄마 늦었어!" 늦었다. 맞다. 남편이 저녁 차려놨다. "힘들었어?" 힘들었다. "내일은 일찍 와?" 모른다. 내일도 우선순위가 바뀔 거다. 항상 그랬다. 밤 11시, 마지막 생각 침대에 누웠다. 핸드폰 본다. 습관이다. 슬랙에 메시지 왔다. 내일 새벽 배포 추가래. 급하대. 한숨 나온다. 답장은 내일 하자. '우선순위'라는 말 생각한다. 13년 동안 몇 번이나 했을까. 하루 평균 10번이면... 계산하기 싫다. 이 말의 무게. 포기, 실망, 타협, 책임. 전부 여기 들어있다. QA 팀장의 일은 완벽한 품질을 만드는 게 아니다. 현실과 이상 사이에서 매일 우선순위를 정하는 거다. 뭘 지키고 뭘 포기할지. 누굴 실망시키고 누굴 설득할지. 어떤 리스크를 안고 어떤 리스크를 피할지. 정답은 없다. 그냥 선택만 있다. 내일도 선택할 거다. 모레도 선택할 거다. 핸드폰 내려놓는다. 눈 감는다. "우선순위가..." 잠들기 전 마지막 생각이다. 내 입버릇이 된 이 말. 무겁다.매일 우선순위를 정한다. 그게 내 일이다. 완벽은 없다. 선택만 있다. 내일도 똑같겠지.
- 05 Dec, 2025
포스트모템 미팅, 누군가는 울었다
포스트모템 미팅, 누군가는 울었다 새벽 3시 장애 알람 휴대폰이 울렸다. 새벽 3시. 슬랙 알람 22개. 결제 시스템 다운. 일어나서 노트북 켰다. 남편이 물 한 잔 갖다줬다. "또야?" 고개만 끄덕였다. 모니터링 보니 최악이다. 결제 실패율 100%. 30분째 지속 중. 고객센터 폭발하고 있다. 개발팀 리드한테 전화했다. "지금 보고 있어요." 목소리가 떨린다. 데이터베이스 커넥션 풀 고갈. 누군가 쿼리를 잘못 날렸다. 롤백하는 데 1시간 걸렸다. 새벽 4시 30분 복구. 피해액 추산 시작. 30분간 결제 못한 건수 1,247건. 추정 매출 손실 8,500만원. 침대로 돌아갔다. 잠은 안 온다. 내일 포스트모템 해야 한다.회의실 예약, 금요일 오후 3시 목요일 아침에 공지했다. "금요일 3시, 장애 포스트모템" 참석자 12명. 개발팀 5명, QA팀 3명, 기획 2명, 인프라 2명. 준비할 게 많다. 타임라인 정리. 로그 분석. 영향도 산정. 근본 원인 파악. 수요일부터 자료 모았다. 목요일 저녁까지 정리했다. 슬라이드 32장. 중요한 건 톤이다. 누굴 탓하는 미팅이 아니다. 시스템을 고치는 미팅이다. 그게 내 역할이다.회의실, 무거운 공기 금요일 오후 3시. 다들 들어왔다. 표정이 무겁다. 특히 민수. 2년차 백엔드 개발자. 그 쿼리 짠 사람. 자리에 앉는데 손이 떨린다. 얼굴이 창백하다. 전날 밤 못 잤을 거다. 나도 그랬으니까. 5년 전 내가 놓친 버그로 장애 났을 때. 팀장한테 혼날까봐 화장실서 울었다. 회의 시작했다. "장애 포스트모템 시작하겠습니다." "이 자리의 목적은 한 가지입니다." "재발 방지." 민수가 고개 숙였다. "누굴 탓하는 자리 아닙니다." "시스템 문제를 찾는 자리입니다." 목소리 톤 신경 썼다. 단호하지만 따뜻하게. 타임라인, 차근차근 화면에 타임라인 띄웠다. 시간 순서대로 정리한 것. 22:15 - 신규 기능 배포 22:47 - 첫 슬로우 쿼리 발생 01:23 - 커넥션 풀 60% 사용 02:38 - 커넥션 풀 95% 도달 03:02 - 완전 고갈, 서비스 다운 04:32 - 롤백 완료, 서비스 복구 "보시면 배포 후 4시간 30분 뒤 장애입니다." "슬로우 쿼리는 2시간 전부터 감지됐습니다." 인프라 팀장이 끄덕였다. "모니터링에 안 걸렸어요?" "임계치가 80%였습니다." "95% 되고 나서야 알람 갔습니다." 첫 번째 문제점. 알람 기준이 너무 높다. 근본 원인, 하나가 아니다 민수가 손 들었다. "제가 쿼리를 잘못 짰습니다." 목소리가 떨린다. "인덱스 안 태운 게..." 끊었다. "민수씨, 잠깐만요." 화이트보드에 썼다. 근본 원인 분석 (5 Whys) "왜 장애가 났습니까?" "쿼리가 느렸다." "왜 쿼리가 느렸습니까?" "인덱스를 안 탔다." "왜 인덱스를 안 탔습니까?" "개발 단계에서 확인 안 했다." "왜 확인 안 했습니까?" "쿼리 성능 리뷰 프로세스가 없었다." "왜 프로세스가 없었습니까?" 침묵. 민수 쪽 안 봤다. 화이트보드만 봤다. "이건 개인 실수가 아닙니다." "시스템 구멍입니다."누군가 울 것 같은 순간 영향도 설명했다. "30분 동안 결제 불가" "1,247건 실패" "고객 272명 이탈" "추정 손실 8,500만원" 숫자 말할 때마다. 민수 얼굴이 구겨진다. 기획팀 차장이 말했다. "이거 누가 책임지나요?" 목소리에 날이 섰다. 분위기 싸해졌다. 민수가 고개 더 숙였다. 여기서 내가 안 나서면. 이 미팅은 마녀사냥 된다. "책임은 제가 집니다." 확실하게 말했다. "QA 팀장으로서." "배포 승인은 제가 했습니다." "쿼리 성능 검증 프로세스 없던 것도 제 책임입니다." 기획 차장 쳐다봤다. "민수씨 혼자 문제가 아닙니다." "우리 시스템 전체 문제입니다." 민수가 고개 들었다. 눈이 빨갛다. 재발 방지, 구체적으로 화이트보드에 적었다. Action Items 1. 쿼리 성능 리뷰 프로세스모든 신규 쿼리 explain 분석 필수 데이터베이스 팀 리뷰 후 배포 담당: 민수 + DBA팀 기한: 2주민수한테 물었다. "민수씨, 이거 같이 만들어볼래요?" "네." 목소리 나왔다. 2. 모니터링 개선커넥션 풀 알람 임계치 80% → 60% 슬로우 쿼리 5초 이상 즉시 알람 담당: 인프라팀 기한: 1주3. 스테이징 환경 강화프로덕션 데이터 규모 반영 부하 테스트 시나리오 추가 담당: QA팀 + 인프라팀 기한: 3주4. 배포 체크리스트 업데이트쿼리 성능 검증 항목 추가 롤백 계획 사전 수립 담당: QA팀 기한: 1주하나씩 설명했다. 누가 뭘 언제까지. 구체적으로. "이거 하면 막을 수 있었나요?" 개발팀 리드가 물었다. "네." "최소한 스테이징에서 잡았을 겁니다." 포스트모템은 학습이다 마무리했다. "이번 장애로 배운 것" 화이트보드에 적었다.개인 실수는 없다. 시스템 구멍만 있다. 모니터링은 예측 가능해야 한다. 프로세스가 사람을 지킨다."민수씨 실수 아닙니다." "우리가 만든 환경이 실수하기 쉬웠던 겁니다." 팀원들 고개 끄덕였다. "이제 우리가 할 일은" "실수해도 괜찮은 시스템 만드는 겁니다." 민수가 손 들었다. "저..." 목소리 떨린다. "다음부터 쿼리 짤 때" "인덱스 두 번 확인하겠습니다." "그리고..." 말 끊겼다. "죄송합니다." 고개 숙였다. 어깨가 떨린다. 울고 있다. 회의 후, 복도에서 회의 끝났다. 다들 나갔다. 민수만 남았다. 자리에 앉아 있다. 고개 숙인 채. 다가갔다. "민수씨." 고개 들었다. 눈 빨갛다. "괜찮아요." "팀장님..." "제가 큰일 낸 거 아닌가요?" 앉았다. 옆자리에. "5년 전에요." "제가 UI 버그 하나 못 잡았어요." "그게 배포됐고." "회원가입 안 됐어요. 이틀 동안." "진짜요?" "네." "그때 팀장님이 그러시더라고요." "포스트모템은 처벌이 아니라 학습이라고." "배웠어요?" "많이." "그래서 지금 팀장 하는 거예요." 민수가 웃었다. 눈물 닦으면서. "민수씨가 쿼리 성능 리뷰 프로세스 만들면" "이 회사에서 그 전문가 되는 거예요." "할 수 있을까요?" "할 수 있어요." "제가 도와줄게요." 자리에서 일어났다. "오늘 일찍 가요." "맥주나 한잔 하고." "네, 팀장님." 저녁, 집으로 퇴근길. 피곤했다. 근데 기분은 나쁘지 않다. 포스트모템 잘 끝났다. 누구도 상처받지 않았다. 액션 아이템 명확하다. 다들 책임감 생겼다. 이게 리더의 일이다. 장애는 막을 수 없다. 완벽한 시스템은 없다. 실수는 반드시 생긴다. 중요한 건. 그 후에 뭘 배우느냐. 그리고. 팀이 함께 배우느냐. 집 도착했다. 현관문 열었다. "엄마!" 딸이 뛰어온다. 안아줬다. "오늘 어땠어?" "좋았어!" 좋았으면 됐다. 저녁 먹으면서 남편한테 말했다. "오늘 포스트모템 했어." "어땠어?" "누가 울었어." "니가?" "아니, 후배." "왜?" "자기 탓인 줄 알았대." "근데 아니라고 했지." "착하네." "착한 게 아니라 사실이야." "시스템 문제니까." 설거지하면서 생각했다. 13년 하면서 배운 것. 품질은 개인이 아니라 시스템이다. 리더는 사람을 탓하는 게 아니라. 시스템을 고친다. 그리고. 팀원을 지킨다. 월요일 아침, 슬랙 메시지 주말 지나고. 월요일 아침. 민수한테 슬랙 왔다. "팀장님, 쿼리 성능 리뷰 가이드 초안 작성했습니다." "확인 부탁드려요." 문서 열었다. 20페이지. 주말에 작성한 거다.인덱스 체크리스트 Explain 분석 방법 슬로우 쿼리 판단 기준 데이터베이스 팀 리뷰 프로세스꼼꼼하다. 예시까지 달았다. 답장 보냈다. "민수씨 대단한데요?" "이거 전사 표준으로 만들어요." "감사합니다 팀장님." 웃었다. 혼자. 장애는 팀을 무너뜨릴 수도 있고. 더 강하게 만들 수도 있다. 차이는 리더가 만든다. 오전 회의 들어갔다. CTO가 물었다. "지난주 장애 포스트모템 어땠나요?" "좋았습니다." "재발 방지책 4개 나왔고요." "팀원 한 명이 전문가 됐습니다." "전문가?" "쿼리 성능 리뷰 프로세스 만들고 있습니다." "전사 표준으로 제안하려고요." CTO가 끄덕였다. "좋네요." 회의 끝나고 자리 돌아왔다. 커피 마셨다. 포스트모템은 쉽지 않다. 누군가는 운다. 누군가는 방어한다. 누군가는 회피한다. 근데 제대로 하면. 팀은 강해진다. 그게 내가 13년 배운 것이다.누군가 울었지만, 팀은 더 단단해졌다. 포스트모템은 처벌이 아니라 학습이다.
- 03 Dec, 2025
팀원 1on1에서 '저 퇴사하고 싶어요'라고 들었을 때
목요일 오후 3시 1on1 시간이었다. 민지. 입사 3년차. 우리 팀에서 제일 꼼꼼한 애다. "팀장님, 저 퇴사하고 싶어요." 커피 마시다 말았다.준비한 건 아니었을 거다. 떨리는 목소리였다. "개발자로 전환하고 싶어요. QA는... 미래가 안 보여요." 3년 전 생각났다. 아니, 10년 전. 나도 똑같은 말 했었지. 예상했어야 했다 사실 조짐은 있었다. 최근 2주. 민지가 이상했다.회의 때 의견 안 냄 리뷰 요청해도 "네" 하고 끝 점심 같이 안 먹음 눈 마주치면 피함그냥 바쁜가 했다. 아니었다. "언제부터 생각했어?" "한... 6개월?" 6개월. 반년을 혼자 끙끙댔다는 거다. 팀장인 내가 몰랐다."이유를 들어도 될까?" 민지가 핸드폰 꺼냈다. 메모앱. 정리해온 거다. 진심이었다. 민지의 이유들 하나씩 읽어줬다. "QA는 개발보다 연봉이 낮아요." 맞다. 우리 회사만 그런 것도 아니다. "버그 찾으면 칭찬보다 '왜 이제 찾았냐'는 말을 더 많이 들어요." 이것도 맞다. "자동화 공부해도 개발팀이 '그건 우리가 할게요'라고 해요." 이것도 맞다. 지난주에 그랬다. "친구들이 개발자로 이직해서 연봉 2천 오른 얘기 들으면..." 말끝을 흐렸다. 다 맞는 말이었다. 하나도 반박 못 하겠더라. "그래서 개발자 준비 중이에요. 인프런 강의 듣고 토이 프로젝트 하고..." 밤에 코딩 공부한다고 했던 게 이거였구나. "팀장님한테 미안해서 말 못 했어요. 근데 오늘은... 거짓말하기 싫어서요." 민지 눈이 빨개졌다. 나도 코끝이 찡했다. 13년 차가 할 수 있는 말 "민지야." 뭐라고 해야 할까. 'QA도 좋은 직업이야' 같은 헛소리는 하기 싫었다. '연봉은 올라갈 거야' 같은 거짓말도 하기 싫었다. "팀장님도 그렇게 생각하시죠? QA는... 한계가 있다고." "응. 맞아." 민지가 놀란 표정이었다. "나도 10년 전에 개발자 전환 고민했어. 진짜로." "...정말요?" "응. 자바 공부도 했어. 토이 프로젝트도 만들었고." "그럼 왜 안 하셨어요?"한참 생각했다. "QA가 좋아서는 아니었어." 솔직하게 말했다. "그냥 10년 하다 보니까 여기가 내 자리더라. 이상하게." QA라는 자리 "민지야. 솔직히 말할게." "네." "QA는 인정받기 어려운 직업이야. 맞아." 민지가 고개 끄덕였다. "연봉도 개발자보다 적어. 이것도 맞아." "근데 팀장님은..." "근데 나는 계속했어. 왜냐면." 뭐라고 설명해야 할까. "우리가 없으면 진짜 큰일 나거든. 진심으로." 지난달 생각났다. 배포 전날. 민지가 시나리오 테스트하다가 결제 버그 찾았다. "결제 금액이 100배로 나가는 버그. 그거 민지가 찾았잖아." "...네." "그거 배포됐으면?" 민지가 입술 깨물었다. "CS 폭주하고, 환불 처리하고, 신뢰도 떨어지고. 최소 3억 손해." "근데 개발팀은 '고마워'보다 '휴 다행이야'라고만 했잖아요." "응. 맞아." 이게 QA다. 당연한 걸 당연하게 했을 뿐인데 아무도 알아주지 않는다. 근데 못 찾으면 욕먹는다. "근데 민지야. 그게 우리 일이야." "......" "불합리하지. 나도 안다." 퇴사를 말리고 싶지 않았다 "민지야. 솔직히 말할게." "네." "나는 너 붙잡고 싶어. 진심으로." 민지가 나를 봤다. "너 지금 우리 팀에서 제일 잘해. QA 감각도 좋고, 리스크 판단도 빠르고." "근데요?" "근데 개발자 되고 싶으면 해." "...네?" "13년 차가 3년 차한테 해줄 수 있는 말은 그거야." 민지 표정이 복잡했다. "QA는 마음에 들어서 하는 직업이 아니야. 적어도 나한테는." "그럼 왜 하세요?" "적성이 맞아서." 이상한 말 같지만 진짜다. "나는 버그 찾는 게 재밌어. 시나리오 짜는 것도 재밌고. 리스크 생각하는 것도." "저도 그런데요." "그래?" "네. 근데... 그게 커리어가 될까요?" 할 말이 없었다. 정답을 모르겠더라. 13년을 돌아보면 "민지야. 내가 13년 했잖아." "네." "10년 전에는 QA가 지금보다 더 안 좋았어." "...그랬어요?" "응. 테스터라고 불렀고, 수동 테스트만 했고, 경력 인정도 안 됐어." "지금은요?" "조금 나아졌어. 진짜로." QA 직무가 생긴 것만 해도 발전이다. 자동화 테스트 요구하는 것도. 성과 평가에 품질 지표가 들어간 것도. "5년 전보다는 확실히 나아졌어. QA 컨퍼런스도 생기고, 커뮤니티도 커지고." "근데 여전히 개발자보다는..." "응. 맞아." 이건 부정 못 한다. "그래도 나는 믿어. 앞으로 더 나아질 거라고." "...정말요?" "응. AI 시대에 품질은 더 중요해질 거야. 자동화도 더 발전할 거고." "그럼 저도 계속해야 할까요?" 대답 못 했다. 그건 내가 정해줄 수 있는 게 아니니까. 멘토의 한계 1on1 끝나고 혼자 남았다. 민지는 "생각해보겠습니다"라고 하고 나갔다. 표정은 여전히 어두웠다. 설득했나? 아니다. 위로했나? 그것도 아니다. 그냥 내 생각을 말했을 뿐이다. 창밖을 봤다. 저 밖에는 수많은 개발자들이 있다. 민지보다 적게 버는 개발자도 있고, 더 힘들게 사는 개발자도 있다. 근데 '개발자'라는 타이틀은 'QA'보다 낫다. 이게 현실이다. 슬랙에 민지 프로필 들어갔다. "3년차 QA Engineer. 꼼꼼함이 장점. 완벽주의자." 민지가 직접 쓴 소개다. 만약 민지가 떠나면. 팀은 돌아가겠지. 다른 사람 뽑으면 되고. 근데 민지 같은 사람 또 오기 어렵다. QA 감각. 이건 배워지는 게 아니거든. 팀장의 책임 저녁 7시. 남편한테 전화했다. "오늘 후배가 퇴사하고 싶대." "아 그래? 왜?" "QA가 미래 없다고." "...뭐라고 했어?" "사실을 말했지. 맞다고." 남편이 웃었다. "너답네." "근데 나 잘한 거 맞아?" "몰라. 근데 거짓말하는 것보단 낫잖아." 그렇긴 하다. 'QA도 좋은 직업이야' 같은 말 했으면. 민지는 더 혼란스러웠을 거다. "만약 민지가 진짜 퇴사하면?" "그럼 어쩔 수 없지." "내 책임 같은데." "왜?" "내가 QA를 매력적으로 만들지 못했으니까." 남편이 한숨 쉬었다. "여보. 그건 당신 책임이 아니야." "근데..." "QA 생태계 문제지. 당신이 어떻게 해." 맞는 말이다. 근데 위로는 안 된다. QA를 계속하는 이유 집에 와서 샤워했다. 거울 보니까 피곤한 얼굴. 38살. 13년 차. 왜 나는 QA를 계속하나. 개발자 전환할 수 있었다. 10년 전에. 연봉도 더 받을 수 있었다. 근데 안 했다. 왜? 답은 간단하다. 이게 내 자리니까. QA는 품질 지키는 사람이다. 아무도 안 보는 곳에서 리스크 찾는 사람. 배포 전에 마지막으로 확인하는 사람. 장애 나면 제일 먼저 달려가는 사람. 누가 해야 한다. 그게 나다. 13년 동안 느낀 거. QA는 소명이 아니다. 근데 누군가는 해야 하는 일이다. 그리고 나는 그걸 잘한다. 이상하게. 금요일 아침 출근했다. 민지가 자리에 있었다. "팀장님." "응." "어제 얘기 감사했어요." "...응." "집에 가서 생각 많이 했어요." "그래?" "일단은 더 해볼게요. QA." 가슴이 뛰었다. "근데 조건이 있어요." "뭔데?" "팀장님처럼 되고 싶어요. 13년 차." 뭐라고 대답해야 할까. "민지야. 나는 롤모델이 아니야." "알아요. 근데 팀장님은 거짓말 안 하잖아요." "......" "그게 좋았어요. 어제." 민지가 웃었다. "QA 힘들다고, 맞다고 해줘서. 근데 계속한다고 해서." "그래?" "네. 그럼 저도 해볼게요." "떠나고 싶으면 언제든지 떠나." "네. 알아요." 민지가 자리로 돌아갔다. 나는 커피 마시러 갔다. 손이 떨렸다. 아직도 잘 모르겠다. 내가 잘한 건지. 민지가 옳은 선택을 한 건지. 근데 확실한 건. 거짓말은 안 했다. 오후 회의 개발팀 리드 미팅. "이번 스프린트 일정 좀 빡빡한데요?" 개발 리드가 말했다. "테스트 기간 이틀만 줄여주시면..." 예전 같았으면 협상했을 거다. 근데 오늘은. "안 됩니다." "네? 왜요?" "품질은 협상 대상이 아닙니다." 회의실이 조용해졌다. "이틀 줄이면 시나리오 테스트 못 합니다. 장애 나면 책임 누가 집니까?" 개발 리드가 입술 깨물었다. "죄송합니다. 제가 너무..." "괜찮습니다. 일정은 함께 조율하죠." 회의 끝나고 민지가 말했다. "팀장님. 멋있었어요." "...그래?" "네. 저도 저렇게 할 수 있을까요?" "할 수 있어. 13년 차 되면." "아니요. 지금도 할 수 있어요." "...그래?" "네. 팀장님 보고 배웠어요." 민지가 웃었다. QA는 이런 직업이다. 누군가 지켜야 할 것을 지키는 일. 쉽지 않다. 외롭다. 근데 누군가는 해야 한다. 그게 우리다.팀원 퇴사 고민은 팀장 고민이기도 하다. QA 생태계 문제는 우리 모두의 숙제다. 근데 오늘 하루는 버텼다.