티스토리 뷰
들어가기 앞서서..
행동대장 팀에서 협업하며 레벨 3과 레벨 4에 걸쳐 한 달간 갈등 상황이 있었습니다. 갈등 속에서 제가 문제를 어떻게 정의하고, 해결하고자 어떤 노력을 했는지 그리고 이 과정에서 배운 점을 정리합니다.
갈등이 발생하기까지
레벨 4를 시작하고, 하루가 지나 이틀 차가 되던 날이었다. 아침 데일리 미팅을 하기 위해 모두 자리에 앉았다. 행동대장 팀의 루틴인 눈 운동과 스트레칭을 진행했다. 시간이 지날수록 허례허식 같이 느껴지는 스트레칭이었다. 다음으로 어제 무엇을 했는지, 오늘 무엇을 할 건지 공유하는 시간을 가졌다. 각 분야의 미션의 일정과 미션을 어떻게 진행할지에 대한 이야기만 주고받았다. 프로젝트와 관련된 논의는 전혀 찾아볼 수 없었다.
'프로젝트를 하기 위해 모인 팀이 프로젝트 얘기만 안 한다고?' 우리가 프로젝트를 할 생각이 있는지도 의심스러웠다. 나조차도 프로젝트를 하고 싶은지 헷갈렸다. 평소 같으면 내가 먼저 프로젝트 이야기를 꺼낼텐데, 나도 이미 포기하고 체념한 상태였다. 더 이야기해 봤자 시간과 에너지만 빼앗길 뿐 개인 공부에 집중하는 편이 낫겠단 생각이 들었다. 우리 팀은 왜 이렇게 되었을까?
레벨 3로 돌아가보자. 1차 데모데이가 끝나고 프로덕트의 방향성을 틀었다. 우리가 기획한 것은 MVP가 Minimum이 아닌 Maximum이었다. 사용자의 Pain Point에 집중하고 기능을 줄이라는 피드백을 들었다. 준 코치은 우리는 행사보다 작은, 정산이라는 도메인에 집중해 보라 권하셨다. 정성 가득 피드백을 듣고 몇몇 팀원은 무언가 깨달은 듯 눈이 빛났다. 너 나 할 것 없이 아이디어를 쏟아내기 시작했다.
아이디어가 어느정도 추려지고 나서, 어떻게 작업을 진행할 것인지 논의했다. 나는 기존의 2주 단위 스프린트를 2~3일 단위로 줄여서 일정을 촉박하게 하자고 제안했다. 시간의 압박이 있으면 문제에 집중하고 효과적으로 해결할 수 있다고 생각했다. 지난 2주간의 기획 회의에서, 불필요한 회의만 길어지고 해결해야 하는 문제에 온전히 집중하기 어려웠던 경험에서 비롯된 생각이었다. 나의 제안을 채택하면 대부분의 시간을 프로젝트에 써야 했기에 반려될 거라 생각했지만, 다행히 공감을 얻었고 채택되었다.
첫 스프린트는 3일로 정했는데, 곧바로 문제가 발생했다. 디자인을 포함하여 초기에 많은 작업을 해야 하는 프론트엔드 크루들이 번아웃되었다. 백엔드 크루도 바빴지만 코드 퀄리티를 모두 버리고 진행했기에 시간 안에 구현은 마쳤다. 짧은 단위의 스프린트는 다음 회의에서 바로 반려됐다. 스타트업과 같은 팀 프로젝트를 꿈꾼 나로선 아쉬웠지만, 프론트엔드 크루가 번아웃된 모습에 더 주장할 수가 없었다.
행동대장 서비스의 정체성은 시간에 따라 행사에서 발생하는 사건들을 보여주는 것이다. 백엔드에게는 꽤 도전적인 요구사항이었다. 행사에서 발생하는 모든 사건을 로그 형식으로 관리해야 하는데, 사건들의 순서 변경이 일어날 수 있고, 새로운 사건이 기존 사건 사이에 추가되거나 삭제될 수 있고, 여러 사건을 하나의 단위로 묶어야 하는 어려운 요구사항이었다. 백엔드는 설계와 코드가 불만족스럽지만 퀄리티보다 구현 속도에 초점을 맞춰 빠르게 구현하고 배포를 진행했다.
걱정과 다르게 프론트엔드 작업도 빨리 진행됐다. 2차 스프린트 기간 동안 기획된 내용의 대부분을 구현했고, 2차 데모데이 때 핵심 기능에 집중한 MVP라는 피드백과 함께 코치들에게 극찬을 받았다. 이때, 너무 많은 관심과 칭찬을 들어서일까? 이때부터 악몽이 시작됐다.
꽤 괜찮은 MVP를 완성했다는 자신감에 우리 팀은 3차 스프린트 기간에 서비스를 시작하기로 했다. 런칭 시점을 3차 스프린트 기간의 2주 차 월요일로 정하고, 이 날까지 기능 구현과 서비스의 완성도를 높이기로 결정했다. 런칭까지 백엔드는 남은 기능을 구현하고 개발 환경과 운영 환경을 구성했다. 당장 일주일 후에 운영할 거기 때문에 로깅과 모니터링에 집중했다.
런칭 날이 다가올수록 프론트엔드 팀원에게서는 긍정적인 이야기가 줄어들었다. 점점 말이 없어지고 많이 힘들어했다. 나중에 들은 바로는 인풋 박스의 에러 핸들링에 문제가 생겨 3주 정도 시간을 썼고, 꼭 필요하지 않은 기술, 코드적인 완성도에 신경 쓰느라 늦어졌다고 한다. 이때, 프론트엔드 크루에 또다시 번아웃이 오고 코딩과 플젝에 흥미를 잃었다고 한다. 백엔드는 프론트엔드 작업이 며칠 내로 완료될 거란 기대를 하며 기다렸다. 하지만 3차 데모데이 전까지 런칭하지 못했다.
그렇게 3차 데모데이가 진행됐고 혹평을 들었다. "2차와 비교해서 어떤 것이 달라진지 모르겠다."는 피드백을 받았는데 반박할 수 없었다. 팀원들도 비슷한 생각을 했을 것이다. "우리는 짝수 데모데이에만 칭찬을 듣는 것 같다."라며 팀에 용기를 불어넣는 팀원도 있었다. 3차 스프린트 기간에 분명히 잘못된 것이 있었고 이에 대해 이야기하고 싶었다. 하지만, 차마 하지 못했다. 데모데이를 준비하느라 밤샌 프론트엔드 크루들에게 부정적인 이야기를 하고 싶지 않았다. 어쨌든 모두 고생했고, 데모데이가 끝났으니 충분한 휴식을 갖길 바랐다. 이때, 얘기했어야 했다.
4차 스프린트가 시작됐다. 3차 스프린트에 발생한 문제에 대해 이야기하고 싶었지만, 마땅한 타이밍을 잡지 못했다. 우리 팀은 새로운 기능을 추가하는 것에 초점을 맞췄다. 중간에 유저 테스트를 진행한 적이 있는데, 이때 받은 피드백을 리스트업하고 투표로 만들 기능을 정했다. 이 과정에서 팀원 간의 충돌이 있었다. 특히 한 팀원이 강하게 주장했는데, 투표로 뽑힌 기능이 사용자에게 불필요하고 우리 서비스의 복잡도만 올린다고 주장했다. "우리 팀이 사용자를 위하는 척만 한다. 진정 사용자를 위하지 않는다.", "우리는 마라 된장찌개를 만들고 있다." 등의 말을 했다. 어느 정도 공감 가는 말이었지만, 나에게 크게 와닿진 않았다. 사용자만 아는 정답을 팀 안에서 찾기 위한 끝없는 기획 회의가 진행됐고, 팀원들은 하나 둘씩 지쳐갔다. 결국, 투표로 채택된 기능을 만들기로 결정했다.
4차 스프린트 동안 백엔드는 의미 있는 작업을 하지 않았다. 추가하기로 한 기능은 빠르게 구현했고, 그 외에 할 작업이 없었다. 계속 프론트엔드의 작업이 끝나길 기다렸고, 서로 하소연만 늘어놓았다. 프론트엔드 크루도 남은 기능을 구현하고 4차 데모데이인 런칭 페스티벌을 준비했다.
런칭 페스티벌이 끝나고 정말로 팀과 함께 문제에 대해 이야기하고 싶었다. 그동안 백엔드끼리만 소통하면서 프론트엔드 작업에 대해 오해가 많이 쌓인 상태였다. 쌓인 오해를 풀고 방향성 정해서 팀원 모두가 한 방향으로 나아가길 바랐다. 런칭 페스티벌 회식 때, 이야기하려고 했다. 백엔드 크루에게 내가 먼저 이야기를 꺼내겠다고 호언장담했다. 하지만 꺼내지 못했다. 3차 데모데이 때와 마찬가지로 고생한 프론트엔드 크루에게 차마 부정적인 이야기를 할 수 없었다. 시끄러운 술집에 갔기에 진지한 이야기를 할 분위기가 아니었다. 이렇게 방학을 맞이했다.
문제 정의
나는 이 문제를 소통의 부재로 정의했다.
백엔드는 프론트엔드 작업에 대해 오해가 많이 쌓인 상태였다. 꼭 필요하지 않은 디자인 시스템을 도입해서 작업이 느리다고 추측했다. 인풋 버그를 수정하는 데에도 3주의 시간이 걸린 것에 대해 이해하지 못했다. 기능 하나를 추가하면 새로운 버그가 발생하는 것에도 의문이 생겼다. 프론트엔드 작업에 대해 하나도 모르기에 오해가 생기기 쉬웠고, 프론트엔드 크루에게 물어볼 노력도 하지 않았다. 프론트엔드 크루는 할 작업이 많아 항상 바빴고, 백엔드 크루는 작업을 금세 끝내서 기다렸기에 프로젝트를 진행할수록 소통할 기회는 줄어들었다.
프론트엔드 크루가 3차 스프린트 기간에 토스 선배를 만나고 온 적이 있는데 이후로 팀의 방향성이 흔들렸다. 처음에는 사용자만을 위하자는 팀의 방향을 갖고 있었지만, 선배를 만나고 온 후에 포폴을 위한 플젝을 하자는 의견이 생겼다. 이와 관련해 프론트엔드 크루들은 회의했지만 관련 내용이 제대로 공유되지 못했고, 백엔드 크루들은 프론트엔드 크루의 방향성이 포폴이라고 생각했다.
이 모든 오해가 쌓인 원인이 소통하지 않아서, 못해서라고 생각했다.
문제 해결을 위한 노력
레벨4가 시작되고 백엔드 크루들은 문제를 해결할 의지를 잃어가고 있었다. 소통하기도 어렵고, 노력해서 소통해도 우리가 예상하는 이야기만 오갈 거라 생각했다. 프론트엔드 크루는 기능 개발보다는 성능 개선에 초점을 맞추고 있을 테니 백엔드와 협업할 일이 적을 테고, 우리도 우리의 길을 정해서 가자는 의견이 주였다.
내 생각에 이건 소통 문제를 회피하는 거였다. 회피는 가장 쉽고 마음 편한 선택지다. 시간이 지날수록 나도 회피하고 싶어졌다. 그래도, 8명이 아무런 제약 없이 프로젝트할 수 있는 기회가 처음이자 마지막일 것 같은데 이렇게 각자의 길을 걷는 것을 원치 않았다. 그래서 용기를 내보기로 했다.
팀원 모두가 있는 자리에서 이 문제를 꺼내면 날카로운 이야기가 오갈 것 같았다. 백엔드 크루가 프론트엔드 크루에게 일방적으로 '너네 왜 이렇게 느려?'라는 분위기가 될까 두려웠다. 나는 각개격파(Divide-And-Conquer) 해야겠다고 생각했다. 프론트엔드 크루 한 명씩 대화하면 진솔한 분위기가 만들 수 있을 것 같았다. 먼저, 가장 편한 프론트엔드 크루에게 일대일 대화를 요청했다. 1시간 정도 대화하며 프론트엔드 크루들의 이야기와 작업 상황, 현재 어떤 생각을 갖고 있는지 알 수 있었다. 그러나, 사정을 다 알고 나니 더 막막했다. 상황이 그리 좋지 못했고, 내가 노력해서 해결하기 어려운 문제도 있었다.
이 문제를 팀 전체가 있는 자리에서 끌어올리기로 했다. 이렇게 결정한 계기로, 프론트엔드와 이야기한 내용을 백엔드 크루에게 공유하는 과정에서 들은 이야기가 있어서다. 따로 이야기하다 보면 또 다른 오해를 만들고 뒷담의 형태로 발전할 수 있으니 조심하라는 이야기다. 우리 팀은 금요일마다 다 같이 점심을 먹는데, 이날 오전 데일리미팅 때 점심 먹고 진지한 대화를 하자고 이야기했다. 갑자기 진지한 대화를 하는 것보단 미리 운을 띄움으로써 어느 정도 예열된 상태로 대화에 참여하길 기대했다.
점심 먹고 회의실에 들어가 2시간 가량 대화했다. 운을 띄운 게 나였으니까, 대화도 내가 시작했다. "우리 팀에 문제가 있다고 생각한다. 그 문제는 소통이 잘 안 되고 있다는 것이다." 이 말이 어떤 결과를 초래할지 예상할 수 없었다. 사실, '대화가 시작되면 어떻게든 흘러가겠지'하는 무책임한 마음도 있었다.
근데, 정말 어떻게든 흘러갔다. 아니 잘 흘러갔다. 소통이 되지 않았다는 문제에 대해 여러 팀원이 공감했다. 서로 진행 상황을 공유하고 팀이 앞으로 어떻게 나아가면 좋을지 고민했다. 사용자를 위할지, 포폴을 위할지에 대한 논의로 이어지고 각자 경중을 매겼다. 하지만 유의미한 성과는 얻지 못했고, 계속 논의를 진행했다. 그러다 한 팀원이 "각자 원하는 걸 하자! 그 방향이 팀을 해치지만 않으면, 플젝에 도움이 된다."는 의견을 제시했고, 이것이 채택되었다. 누군가는 사용자를 위한 새로운 기능을 기획 및 개발하고, 누군가는 포폴을 위해 렌더링 성능을 개선하고, 또 다른 누군가는 응답 시간을 단축하는 데에 노력하면 된다.
문제를 해결하며 찾은 나의 역할
팀에 문제가 생겼을 때, 경보를 울리는 것이 나의 역할인 것 같다.
우리 팀은 참 사람이 많다. 8명의 팀원은 모두 서로 다르다. 각 개인은 매순간 변한다. 지금의 나와 내일의 나는 분명 다르다. 어제와 오늘이 다른 8명이 모인 팀은, 어제와 오늘이 다르다. 어제의 팀을 기대하고 오늘 출근했지만, 오늘의 팀은 어제와 분명히 다르다.
팀은 항상 변하고 그에 따라 협업하며 문제는 자주 발생한다. 처음에는 문제라 인지한 것이 실제 문제인지 알기 어렵다. 조기에 경보를 내리기 어려운 이유다. 하지만 문제라고 인식될 때에는 이미 경보를 내리기에 늦기도 한다.
어떻게 하면 협업하며 빠르게 문제를 인식하고 해결할 수 있을까? 팀원 함께 자주 소통하여 감정과 생각을 공유하면 되지 않을까? 문제를 인식했을 때, 이 불편한 진실을 수면 위로 꺼낼 수 있는 용기도 필요하겠다.
그 후로..
이 글을 작성하는 시점에, 레벨 4도 3주가 흘렀다. 소통을 시작하고, 우리 팀은 어떤 모습일까? 레벨 3을 시작할 때 생기 넘치던 그 모습은 보기 어렵지만, 전보다 훨씬 활발히 소통하고 있다. 사용자를 위한 기획과 개발을 하고 있고, 서로의 진행 상황을 더 구체적으로 공유하고 있다. 심지어 어제는 프론트엔드 크루가 데일리미팅 때 필라테스를 진행했다. 팀을 사랑하지 않는다면, 이런 활동을 준비할까? 물론, 모두가 그런 것은 아니다. 여전히 힘들고 지친 크루도 있다. 그래도 적어도 소통을 다시 시작하니 팀이 좀더 건강해진 것은 분명하다.
나에게 행동대장은 처음하는 협업이다. 협업보다는 개인플레이를 선호했다. 혼자하면 모든 의사결정과 책임을 혼자서만 지면 되니까, 다른 사람을 신경쓰지 않고 나 갈 길을 가면 되니까. 행동대장에서 협업하고나서 생각이 바뀌었다. 더 협업해 보고 싶다! 협업하면 내가 어렵게 하는 일도 쉽게 하는 팀원의 도움을 받을 수 있고, 어려운 일도 함께하면 쉽게 해결할 수 있었다. 또, 협업 과정에서 발생하는 문제를 더 해결해 보고 싶은 욕심이 생겼다.
'프로젝트 - 행동대장' 카테고리의 다른 글
정말 무중단 배포일까? (0) | 2024.10.20 |
---|---|
영수증 이미지 최적화 방법과 여러 구현 방식 (1) | 2024.10.09 |
S3에 저장된 이미지 응답 시간 테스트 (0) | 2024.10.07 |