팀 프로젝트가 나에게 남긴 것

Sep.13.2022 이 원미

Education

안녕하세요. 테크코스교육개발팀 이원미입니다 : )

지난 8월 19일, 8주간의 팀 프로젝트 기간이 끝나고 우테코 4기도 막바지를 향해 달려가고 있습니다.
팀 프로젝트 기간 동안 밤낮으로 고생하며 프로젝트를 만들어가던 크루들의 모습을 잊을 수가 없는데요.

우테코의 팀 프로젝트는 단순히 하나의 서비스를 개발해 내는 경험만이 있는 것은 아닙니다.
레벨 1, 2에서 배운 개념들을 적용해야 하고, 미션처럼 주어지는 요구사항을 반영시키고, 그 결과물을 데모데이를 통해 크루들과 코치들 앞에서 증명해 내야 합니다.

며칠 동안 고민해서 개발했다 하더라도 치열한 토론을 통해 몇 번이나 바꾸었을 기능 목록들을 또다시 하나씩 해결해야만 했고,
서비스를 “함께” 만들어가면서 부딪히는 여러 가지 갈등 상황들을 극복해야만 했죠. 아마 그 갈등의 종류도 다양했을 거예요.

레벨 3 글쓰기 주제는 ‘팀 프로젝트가 나에게 남긴 것’입니다.
어느 누구에게는 한 뼘 더 자라난 자기 자신이, 또 다른 누구에게는 함께한 누군가가, 그리고 또 다른 누군가에게는 자랑스러운 자신의 첫 프로젝트가 남았을 수도 있겠네요.

이 길고도 짧은 8주가 크루들에게는 어떤 의미였는지 궁금하지 않으신가요?

크루들이 직접 개발한 서비스가 궁금하시다면, 우아한Tech 유튜브에서 주차별 데모데이 영상 으로 찾아보실 수 있습니다.


🌈 달록이 티거에게 남긴 것

🐯💬

반갑습니다. 공유 캘린더 서비스, 달록의 프론트엔드를 개발하고 있는 티거입니다. 믿기지 않지만, 벌써 레벨 3 마지막 스프린트 기간이 됐네요. 마지막까지도 달록의 태스크와 이슈는 부지런히 생겨나고 있습니다. 아니, 봇물 터지듯 쏟아져 나와서 정신이 없을 지경이에요. 달록팀도 여러분처럼 한창 바쁘게 지내고 있답니다. 바쁜 일정 탓에 저희 팀원들은 스트레스도 받고 컨디션 조절에 어려움을 겪기도 하더라고요. 여러분은 어떠신가요? 아, 고민이 있냐고요? 언제나처럼 당연히 있죠. 고민 대회에 나가면 가볍게 순위권에 들 자신도 있는걸요. 나인을 만난 이후로는 고민에 빠지려고 할 때면, 나인의 입버릇 중 하나인 "뭐 어쩔 건데?!"가 떠오릅니다. 덕분에 어찌할 수 없는 고민은 묻어두고, 어찌할 수 있는 달록에 집중할 수 있게 되었어요.

글쓰기도 무려 세 번째네요. 이번 글쓰기부터는 멋들어지게 쓸 수 있을 줄 알았는데 달라진 건 계절밖에 없는 것 같아요. 이렇게 보니 레벨 3도 글쓰기와 비슷하게 느껴집니다. 이전에는 레벨 3에서의 멋있는 제 모습을 기대했어요. 기능을 최고의 방법으로 뚝딱뚝딱 구현하고, 뭐든 빠짐없이 기록으로 남기고, 팀원들을 깊이 챙기면서 비교적 여유롭게 지내는 모습을요. 대체 무엇을 근거로 그렇게 기대했던 걸까요? 머릿속으로 그려왔던 저와는 달리 지금의 저는, 미션에 쫓겨 달렸었던 것처럼, 어쩌면 그보다 더 숨차게 달리고 있습니다.

🐯💬

이 와중에 매일매일 성장하고 있다는 것은 확실히 느낍니다. 당연히 개발 측면에서도 배우는 것이 많지만, 팀의 일원으로서 느끼는 것이 유난히 많아요. 이전까지는 팀 안에서 리스너보다 스피커에 가까웠습니다. 스피커 중에서도 돋보이고 싶은 스피커였죠. 옳은 얘기를 한마디라도 더 하고 싶었고, 아이디어를 얼른 말하고 싶었어요. 실제로 그렇게 팀원들의 사고를 방해하고 그들의 불을 휙 꺼버린 적도 있습니다. 달록팀에서도 그러냐고요? 아뇨, 그러지 않으려고 노력하고 있습니다. 프로젝트 초반에 회의하던 중이었어요. 하고 싶은 말이 있었지만, 섣부르게 말하지 않고 잠시 팀원들을 기다렸죠. 자연스럽게 다른 팀원이 제가 하고 싶었던 말을 하더라고요. 그제야 의미 없는 욕심을 지니고 있었다는 걸 깨달았습니다. 그 욕심이 팀원들에게 끼칠 수 있는 나쁜 영향에 대해서도 생각하게 되었어요. 이후로는 욕심을 전부 버리고, 스피커이자 리스너로 프로젝트에 참여하고 있습니다.

저희 팀에는 고정된 역할이 없습니다. 일주일마다 돌아가면서 각자 역할을 하나씩 맡아요. 이렇게 지내다 보니 이전과는 달리 팀을 다양한 시선에서 바라볼 수 있게 되었습니다. 한 팀원을 볼 때면 그의 주변까지 넓게 보게 되었어요. 자, 여기에 기발한 아이디어로 프로덕트에 크게 이바지한 A가 있습니다. 여러분은 A의 팀원으로서 어떤 생각을 하실 것 같나요? 예전의 저였다면, ‘와, A의 멋진 아이디어 덕분에 우리 프로덕트가 발전했구나. A에게 감사하다.’라고 생각하는 것에서 그쳤을 거예요. 이제는 A의 의견을 듣고, 그 의견이 실현될 수 있도록 애쓴 다른 팀원들이 있다는 걸 압니다. 그럴싸한 기능을 구현한 팀원이 있다면, 그 기능을 구현하기를 양보한 팀원이 있고, 코드를 리뷰한 팀원이 있다는 걸 압니다. 회의를 잘 이끄는 진행자가 있다면, 회의를 잘 따라가는 참여자가 있다는 걸 알아요. 달록을 위해 매 순간 한 명도 빠짐없이 힘쓰고 있더라고요. 제가 팀에서 잘할 수 있는 모든 이유는 팀원들이 잘할 수 있게 해주는 덕분이라는 걸 알게 되었습니다.

🐯🌈

계속해서 더 나은 사람이 되고 싶게 만드는 나인, 리버, 매트, 파랑, 후디, 우리 달록팀! 여러분으로부터 좋은 영향을 받는 만큼 여러분께 좋은 영향을 어떻게 줄 수 있을지 매일 생각하곤 한답니다. 여러분은 모두 제가 우테코에서 만날 수 있는 최고의 팀원이에요. ‘이보다 더 잘 맞는 팀원들을 만날 수 있을까?’ 싶어질 만큼이요. 여러분과 달록을 개발하고 있는 지금이, 마지막을 생각하고 싶지 않을 정도로 행복합니다. 제 행복한 기억 속에서 함께해 주셔서 감사합니다. 앞으로도 지금처럼 나란히 달리면서 예쁜 기억 잔뜩 만들기로 해요. 한번 외치고 갈까요? "알록! 달록! 파이팅!"


여름과 태풍

나는 여름을 사랑한다. 닉네임도 그래서 써머로 지었다. 눈을 찌르는 햇빛과 살을 녹이는 더위가 좋다. 땀을 식히는 데 도움되지 않는 미지근한 바람도 반갑다.
무엇보다 태풍과 장마를 좋아한다. 먹구름이 두껍게 깔려 낮밤이 구분되지 않고, 비바람이 창을 흔들고 천둥 번개가 내리칠 때가 항상 그립다. 그런 때 어두운 방에서 눈을 감고 가만히 누워있으면, 나를 힘들게 하는 모든 것들이 보잘 것 없이 느껴져서 좋다.

레벨3는 여름이라는 계절에 걸맞게 태풍이었다. 내가 좋아하는 태풍과 다른 점이라면 방이 아닌 길거리에서 온몸으로 비바람을 맞는 것 같았다는 점이다. 우산도 부러져서 저 멀리 날아가버리고. 상황을 나아지게 하려는 많은 시도가 부질없게 느껴졌다. 솔직히 말하건데 정말, 많이 힘들었다.

그러다 "주어진 환경에서 자신의 태도를 결정하고 자기 자신의 길을 선택할 수 있는 자유만은 빼앗아 갈 수 없다는 것"이다. 라는 말을 봤다. 강남 한복판의 멋들어진 빌딩에서, 빵빵한 에어컨 바람을 쐬며 인용하기엔 부끄럽지만, 죽음의 수용소에서라는 책에 나오는 구문이다. 나를 뒤흔드는 이 태풍은 바꿀 수 없는 환경이다. 그렇다면 태풍이 지나간 자리에서 얻을 걸 줍자. 이 일을 고난으로 보고 골몰하던 관심을 다른 곳으로 옮기기로 했다. 마치 태풍이 지나가면 물과 열에너지의 불균형이 해소되는 것 처럼 말이다.

본론을 꺼내기 힘들어 빙 둘러왔는데, 그래서 어떤 생각이 나를 파고들게 했냐면. 레벨 3을 시작할 때 일심동체로 움직이는 경험을 해보고 싶다고 말했다. 그게 마음처럼 잘 되지 않았다. 사실 그건 괜찮았는데, 이유가 나일지도 모른다는 생각이 힘들었다. 팔벌려뛰기 마지막에 숫자를 외쳐서 다시 뛰게 만드는 사람, 단체줄넘기 하는데 혼자 계속 걸리는 사람, 그런 사람이 된 것 같았다. 이런 기분을 느낀 적이 별로 없어서 더 괴로웠다.

레벨 3의 막바지에 다다른 지금은 팀 프로젝트가 6인7각처럼 보인다. 그만하면 발이 엇갈려 넘어지고, 또 넘어지는 게 당연한 거다. 물론 내가 발을 엇박자로 내밀어 엉키게 만드는 범인일 수도 있다. 중요한 건 탓하지 않고, 주눅들지도 않고, 털고 일어나서 다시 뛸 용기를 갖는 건데, 참 늦게 깨달았다. 같이 사는 동생하고도 사사건건 투닥투닥 싸우면서, 일심동체가 되고싶다는 말 한마디면 마법처럼 척척 잘 뛸 수 있을거라 기대하고, 왜 잘 뛰어지지 않을까를 고민하며 힘들어했다.

그렇다면 6인7각에서 좋은 팀원이란 무엇일까. 광범위한 표현이지만 역시 믿음을 주는 팀원이 아닐까. 약속한 일을 그 때 까지 끝내줄 거란 믿음. 내가 모른다고 얘기해도 창피주지 않을 거라는 믿음. 힘든 속내를 털어놓을 수 있다는 믿음. 엉망으로 흙먼지 위를 굴러도 나랑 다시 같이 뛰어줄 거란 믿음. 그런 점에서 나는 참 좋은 팀웓들을 만났다. 돌아보면 이런 믿음으로 팀에 의지해 넘어져도 일어날 수 있었다.

이 달리기에서 나는 믿음을 주는 팀원이었을까? 레벨 3 동안 정신없이 비틀거리느라 내 옆사람들을 제대로 돌아보지 않은 것 같다. 팀이 기꺼이 나에게 내 준 믿음만큼 돌려주지 못했다. 이유는 다양했다. 어떨 때는 내 잘못을 인정하기 힘들어서였고, 다른 때는 다시 옆사람과 발이 엇갈릴 게 두려워서였다. 어느 날은 좀 더 솔직하게 말할 걸, 하고 후회하느라 그랬고, 그 다음 날은 의젓하고 믿음직스럽게 행동할 걸. 하고 자책하느라 그랬다. 이 모든 감정의 회오리에서 이제는 빠져나온 것 같아서 팀원들에게 의지한만큼 의지되는 사람이 되지 못했음을 인정할 수 있다.

이제 무거운 얘기는 끝났다. 가벼운 마음으로 읽으러 왔을 리뷰어 크루들에게, 의도치 않게 찜찜한 기분을 느끼게 했다면 죄송하다. 글의 요지를 건조한 말로 나열하자면 우선 후회에 쓸 생각과 감정을 팀의 내일을 위해 쓰기로 했다. 그리고 타인과의 예기치 않은 마찰열을 두려워 하지 않는 법을 배웠고, 팀의 균열을 메우기 위해 부끄러운 감정을 솔직히 꺼내놓기를 실천해 보았으며, 믿음을 주는 팀원이 되는 것의 중요성을 깨달았다. 끝으로 이 모든 시도가 잘 통하지 않았을 때, 다시 도전할 용기를 갖기라는 새로운 도전과제를 얻었다.

마지막까지 이 글의 어미에 대해 고민했다. 무거운 내용이면 어미를 부드럽게 하는 게 읽는 사람에게 부담이 없을까? 이제 무거운 얘기는 다 마쳤습니다. 이 글을 읽고 피드백 할 다른 크루들에겐 심히 부담스러운 글이었을지 모르겠어요. 미안하게 생각합니다 😅 그래서 제가 뭘 배웠나면요… 그러려다 그만뒀다. 내 스타일도 아니거니와 이왕 솔직할 거면 끝까지 솔직한 게 멋있으니까.

그 사람의 진짜 모습은 레벨 3부터 나온다는 얘기를 거울 속 내 모습으로 증명받을 줄 몰랐다. 어쩄든 내 모든 걸 보여줬으니, 남은 기간 스스로 더 좋은 팀원이 될 수 있기를 다짐해본다. 기꺼이 믿음을 줄 수 있고, 힘들 때 의지할 수 있는 사람이 말이다. 여기에 오기까지 내 진짜 모습에도 불구하고 믿음과 도움을 보내준 팀원들에게 진심으로 고맙다.


프로젝트가 나에게 남긴 것

“이끌든지, 따르든지, 비키든지”

잠실 캠퍼스 벽에 붙어있는 글귀인데, 처음 봤을 때부터 시선을 확 끌어당겼다. CNN의 창립자인 테드 터너가 한 말이라는데, 참 멋진 말이라고 생각한다.

팀 프로젝트를 진행할수록 이 말이 더더욱 가슴에 와닿았다. 이유는 두 가지이다. 첫째로 좋은 협업을 위해서는 이 셋 중 하나를 반드시 선택할 수밖에 없다는 걸 알았다. 하나도 선택하지 않으려면 방관하거나 도망쳐야 한다.

둘째로 잘 이끄는 것만큼 잘 따르는 것도 정말 중요한 능력이라는 걸 느꼈기 때문이다. 우리는 이끄는 것은 우월한 것 따르는 것은 열등한 것이라고 쉽게 생각한다. "사회를 이끄는 리더가 되라"는 이야기는 교장 선생님 훈화 말씀에 늘 빠지지 않고 등장하는 레퍼토리였다. 하지만 리더와 팔로워는 수직적인 개념이 아닐뿐더러 좋은 협업에는 반드시 좋은 팔로워가 필요하다는 것을 깨달았다. 잘 따르는 것은, 잘 이끄는 것만큼 중요하고 또 어렵다.

팀 프로젝트에서는 이끄는 사람, 따르는 사람이 따로 정해져 있지 않다. 수평적이고 열정이 넘치는 우테코같은 집단에서는 특히 더 그렇다. 상황에 따라 이끄는 사람이 되기도, 따르는 사람이 되기도, 또 비키는 사람이 되기도 한다. 중요한 것은 이것을 잘하는 것이다.

수동적으로 따르는 데만 익숙했던 나에게 팀 프로젝트가 남긴 것은 이끌고, 따르고, 비킬 수 있는 경험, 그리고 이를 어떻게 더 잘할 수 있을지를 고민할 수 있는 시간이었다.

이끌든지

난 주로 나에게 주어진 일을 묵묵히 수행하는 것에 익숙한 사람이었다. 하지만 팀원들과 함께 공통의 목표를 달성하기 위해 협업하면서 주도적으로 이끌어 나가는 경험도 할 수 있었다. 그중에서 아쉬움도 남고 반성하게 되는 일이 하나 있다.

디자인은 프론트 개발자의 업무가 아니다. 디자인 결과물을 화면에 구현하는 것이 프론트엔드 개발자의 업무이다. 그럼에도 불구하고 우리 팀에서는 자연스럽게 프론트엔드 팀원이 디자인 업무를 담당했다. 프로젝트 초반에는 팀원 중 누구도 딱히 이의를 제기하는 일 없이 그냥 그렇게 흘러갔다.

두 번째 스프린트에서 문제가 생겼다. 관리자 화면을 추가적으로 구현하면서 프론트엔드 팀원의 업무량이 상당히 많이 늘어났고, 결국 불만이 드러나기 시작했다.

회의 때 "백엔드 팀원이 디자인에 너무 관심이 없다"는 의견이 나왔다. 디자인은 팀 전체의 책임이다’라는 의견에는 모두가 동의했지만, ‘백엔드가 주도적으로 할 일은 아니다’라는 의견은 분명 존재했었던 것 같다.

백엔드에서 디자인 작업에 적극적으로 나서는 사람이 한 명이라도 있어야 이런 일이 일어나지 않겠다는 생각이 들었다. 데일리 미팅에서 오후에 시간을 정해놓고 다 같이 디자인을 같이 하자고 제안했다. 프론트 팀원인 코카콜라에게 디자인 명세가 어떻게 나와야 프론트가 작업하기 편한지를 들으면서 함께 화면 구성을 논의하고 디자인 작업을 했다.

하지만 결국 세세한 마무리 작업은 프론트 팀원이 처리했었고 세 번째 스프린트 때는 미처 신경을 쓰지 못해 원점으로 되돌아갔다. 세 번째 스프린트에도 새로운 화면과 기능이 추가되었는데, 프론트 팀원들이 도맡아 작업했었다. 묵묵히 일해준 프론트 팀원에게 미안하고 고맙다.

따르든지

앞서 말했듯이 나는 따르는 쪽에 익숙한 사람이었다. 하지만 팀 프로젝트를 하면서 새롭게 깨달은 점은 생각 없이 따라가기만 하는 것과 잘 따르는 것은 다르다는 것이다. 돌이켜보면 나는 전자에 속했던 것 같다. 잘 따라가는 것은 생각보다 어렵다.

여러 사람들과 함께 일을 하다 보면 이 사람이 이끄는 쪽의 성향이 강한 사람인지 따르는 쪽의 성향이 강한 사람인지 느끼는 순간이 있다. 소위 전자를 자기주장이 강한 사람, 후자를 그렇지 않은 사람으로 평가하기도 한다.

이런 성향은 팀에서 논의하는 사안이나 팀이 처한 상황에 따라 달라지기도 하는데, 우리 팀에는 대체로 후자에 속하는 사람이 조금 더 많았다. 솔직히 다행이라고 생각한다. 프로젝트를 하면서 정말 많은 회의를 했는데, 만약 팀원 전체가 이끄는 쪽에 속하는 성향의 사람이었다면 회의할 때마다 얼마나 지치고 힘들었을까 하는 생각이 든다.

각자 다양한 의견을 내고 토론하고 의견을 조율하는 과정은 중요하고 꼭 필요하다. 하지만 이 과정을 겪어본 사람들은 이것이 상당한 체력과 인내심을 요구하는 일이라는 걸 잘 알고 있을 것이다. 정말 중요한 의사결정이라면 최대한 다양한 의견을 이끌어내고 이를 조율하는데 많은 시간과 노력을 투자해야 한다. 하지만 매 회의, 매 안건마다 이런 상황이 벌어지면 점점 회의하기가 두려워진다. 의견을 내는 사람이 있으면 이를 지지해주는 사람도 필요하다.

내가 잘 따르는 것도 중요한 능력이라고 생각한 이유는, 이것이 타율적이거나 수동적인 것과는 다르기 때문이다. 따른다는 것은 의견을 내지 않는 것과는 다르다. “나는 XX의 의견에 동의해”라고 말하는 것도 하나의 의견이다.

잘 따르는 것은 무작정 순응하거나 의사 결정을 회피하는 것과는 다르다. 따를 때에도 내 주관과 근거가 있어야 하고, 의문이 생기면 적극적으로 표현해서 팀원들이 오해나 불만 없이 함께 움직일 수 있도록 노력해야 한다.

의견을 낸 사람이 나름의 이유와 근거를 가지고 있는지 확인하고, 그 사람이 주장하는 바를 내가 제대로 이해했는지 적극적으로 물어본다. 따르기로 결정했으면 적극적으로 지지한다. 팀 프로젝트를 하면서 얻은 잘 따르기 위한 나름의 지침이다.

비키든지

팀 프로젝트를 하면서 깨달은 것 중에 특히 중요하다고 생각하는 것이 잘 비키는 것이다.

의견 조율 과정에서 중간선을 찾을 수 없는 경우도 있다. A 혹은 B 중 한 가지를 반드시 선택해야 하는 경우가 그렇다. 팀이 결성되고 두 번째 회의를 했던 날이었다. 우리 서비스의 사용자는 공간을 관리하는 호스트와, 호스트가 제공한 체크리스트를 이용하는 게스트 둘로 나뉜다. 호스트가 체크리스트를 제공할 때, 시간제한을 둬야 할지 말아야 할지를 두고 팀에서 의견이 크게 갈린 적이 있었다.

논의가 한 시간 넘도록 이어졌고 회의에서 논의하기로 한 다른 안건은 하나도 이야기하지 못한 채 캠퍼스 마감 시간이 다가왔다. 논의가 과열되면서 팀원들도 점점 지쳐가기 시작했다. 결국 시간제한을 두지 않는 것으로 결론이 났지만 찝찝한 분위기가 맴돌았다. 범고래가 집에 가기 전에 맥주 한 잔 하고 가는 게 어떻겠냐고 제안했고 그렇게 첫 회식을 가졌다.

회식을 하면서 회의 중에 상대의 말에 감정이 상하거나 기분이 나쁜 순간이 있었는지 말하는 시간을 가졌다. 서로가 각자 회의 중에 느낀 것들을 솔직하게 말했다. 팀원 각각의 성향이나 표현 방식을 알 수 있는 시간이었다. 또 모두가 진심으로 좋은 서비스를 만들고 싶어 한다는 것, 다만 각자가 서비스에서 중요하게 생각하는 지점들이 조금씩 다르다는 것을 알 수 있었다. 서로에 대한 이해의 폭이 조금 넓어졌다는 생각이 들었다.

이후로도 회의를 할 때 분위기가 과열되면, 회의가 끝나고 감정 회고를 하는 시간을 가졌다. 시간이 지날수록 의사 결정 속도도 빨라지고 타협의 여지도 넓어졌다. 모두가 우리의 서비스를 아낀다는 정신적인 유대감이 이해의 폭을 넓혀주지 않았나 하는 생각을 한다.

나와는 반대되는 의견일지라도 팀원을 믿고 양보할 수 있는 것은 솔직한 의사 표현과 감정적인 교류로 생기는 유대감을 기반으로 한다. 잘 비키려면 솔직하게, 자주 이야기해야 한다.

프로젝트가 나에게 남긴 것

모두가 이끌기만 해서도, 모두가 따르기만 해서도, 모두가 비키기만 해서도 안된다. 상황에 따라 한 사람이 이끄는 사람이 되기도 하고 따르는 사람이 되기도 한다, 때로는 비키기도 한다. 좋은 팀은 모든 팀원이 이 세 가지를 균형 있게 잘하는 팀이라고 생각한다. 그런 점에서 우리 공책 팀은 좋은 팀이다. 이런 경험을 하게 해 준 우리 팀원들에게 감사하다.


모락은 나에게 수영장 같았다.


[출처] "더위엔 수영장." notefolio. https://notefolio.net/ddoing/146035.

처음 팀원들과 마주했을 때는 수영장 물에 처음 발을 담그는 어린아이마냥 겁을 먹었었다. 팀원이 결정되기 전 친한 크루들과 한 팀이 되고 싶다고 생각했었다. 나는 낯을 많이 가리는 편이기 때문에 프로젝트를 진행하는데 새로운 사람들과 친해지는 과정까지 겪어야 하면 너무 힘들지 않을까, 지레 겁을 먹었다. 어린아이들이 금방 적응해 꺄르르 물장구를 치며 노는 것처럼, 나도 금방 모락이라는 팀에 스며들어 누구보다도 크게 웃었다. 커가면서 점점 하나의 틀에 내 스스로를 가두려고 했던 것 같다. 어렸을 적, 겁 없던 그 시절처럼, 도전과 새로움이라는 단어를 두려워하지 말자고 다짐했다.

수영장에 다양한 놀이 기구가 있는 것처럼, 모락은 나에게 다양한 재미와 감동을 선사해 줬다. 매일 아침 데일리 미팅을 하며 팀원들과 소소한 이야기를 나누고 하하 호호 정말 많이 웃었다. 시나리오, 기능 요구사항, API 설계 등 다 같이 회의를 하며 서로의 의견을 말하고 설득하고 인정하는 시간을 가졌다. 살면서 이렇게 많은 회의를 한 게 처음이었고, 이렇게 많은 회의를 했는데도 아직 이야기하고 싶은 내용들이 더 있는 스스로에게도 놀랐다. 모르는 것을 거리낌 없이 물어볼 수 있고, 아는 것을 열정적이게 설명해 주는 모락 팀원들의 모습에 감동을 받기도 했다. 이런 팀 분위기 덕분에 자연스럽게 내가 아는 것, 학습한 것을 최대한 말하려고 하고 기록하려고 했던 것 같다. 특히 코드 리뷰라는 게 정말 재미있는 과정이라는 것을 알게 됐다. 누군가 내 코드에 관심을 가져주는 게 너무 좋다. 그리고 다른 사람의 코드를 보면서 질문을 하고 내 의견을 말할 수 있는 이 과정이 매우 소중하다는 것을 알게 됐다.

투표와 약속잡기 로직은 철썩철썩 파도풀 같았다. 우리만의 규칙을 가지고 있는 도메인을 구현하는 것은 너무 재밌는 일이다. 그리고 그 과정을 팀원들과 함께하는 것은 친구들과 파도가 나오는 바로 앞에서 파도가 나오기를 기다리는 그 설렘, 재미와도 같다. 하지만 파도풀은 재미있기만 한 녀석은 아니다. 밀려오는 파도에 어푸어푸 물을 먹게 된다. 예상치 못한 예외 케이스와 버그에 많은 물을 먹었다. 안정적이고 완성도 있는 서비스를 만든다는 것이 만만치 않은 일이라는 것을 깨달았다. 하지만 금방 적응해 파도에 몸을 맡기는 아이들처럼, 팀원들과 힘을 합쳐 우리 서비스를 완성해낼 것이라고 믿는다.

수영장에는 쉬는 시간이 있다. 수영장에서의 움직임은 물의 저항을 받기 때문에 더욱 많은 체력을 소모하게 한다. 그렇기 때문에 재미있다고 계속 놀기보다는 중간중간 쉬는 시간을 가지는 것이 더 오래 놀 수 있는 방법이다. 이번 팀 프로젝트 기간 동안 나와 우리 팀원들은 이 방법을 잊고 있었던 것 같다. 스프린트가 지날 때마다 밝고 웃음이 가득하던 팀원들의 표정이 점점 지치고 졸린 표정으로 변해갔다. 쉬어가는 것도 하나의 방법인데, 우리는 기능 구현에 이리 치이고 저리 치이다 보니 쉬어버리면 더 걷잡을 수 없을 것 같다는 생각에 계속해서 물장구를 쳤던 것 같다. 페이스 조절을 못 했던 게 큰 아쉬움으로 남는다.

"우리 다음에 또 와서 재미있게 놀자" 수영장에서 끝장나게 놀고 씻고 나오면 친구들과 다음을 기약한다. 우리 모락 팀원들도 남은 2주, 더 재미있게 물장구치고 씻고 나와 다시 레벨 4에서도 재미있게 놀기를 기약한다. 친절한 선생님 에덴, 든든한 교수님 차리, 누구보다도 따듯한 로봇 앨버, 모락팀의 행복 비타민 위니, 자이언트 베이비 배카라 소중한 우리 팀원들을 선물 받은 최고의 프로젝트라고 생각한다.

우리 팀원들!! 우테코가 끝나도 토이 프로젝트로 모락을 계속 이어 나가자던 처음의 다짐 잊지 않았지?😄


해피엔딩 밖, 진짜 행복을 찾아서

다들 동화 좋아하시나요? 저는 좋아합니다. 어릴 적부터 동화를 자주 읽었어요. 동화 속 주인공들의 해피엔딩을 기억합니다. 그러나 지금, 저는 해피엔딩 밖 진짜 행복을 찾아가고 있습니다. 지금부터 그 여정을 소개해드리려 해요.

서비스가 좋았던 공주 이야기👸

옛날 옛적에 한 공주님이 살고 있었습니다. 공주님은 서비스를 만들고 싶었어요. 많은 사람이 사용하는 세상에 도움이 되는 플랫폼을 만든 사람 중 하나로 남고 싶었답니다.

공주는 고민했어요. 어떻게 해야 좋은 서비스를 만들 수 있을까? 좋은 서비스를 만들기 위해서는 서비스를 구현할 솜씨 좋은 프로그래머가 필요했어요. 하지만 프로그래머를 구하기 위해서는 너무 많은 돈이 들었습니다. 그래서 누가 자신을 위해 서비스를 만들어줄 게 아니라면, 본인 스스로 프로그래밍 기술을 익혀서 1인 개발을 해야겠다고 생각했답니다.

그런데 막상 프로그래밍을 배우다 보니, 예전에 배웠던 기획이나 디자인보다도 프로그래밍이 좋아졌습니다!🥰 공주는 더 유능한 프로그래머가 되기 위해 우테코에 지원해 합격했습니다. 이제 공주는 좋은 환경에서 새로운 도전을 이어 나갈 수 있게 되었답니다.


죄송합니다… 동화의 주인공은 공주인 편이 익숙하잖아요?😉

아무튼 이 재미없고 뻔한 동화 속 주인공은 그래도 결말이 났다고 생각했습니다.

레벨1과 2 미션을 코치님들이 정해준 요구사항에 맞게 즐겁게 구현하며 행복했습니다. 과거야 어떻든 지금의 공주는 프로그래머입니다. 그 외의 설명은 오히려 현재에 집중하는 데에 방해된다고 느꼈습니다.

운영이 좋았던 왕자 이야기🤴

또 다른 동화 하나 들려드릴게요. 옛날 어느 옛적, 한 왕자님이 살고 있었습니다. 왕자님은 익명 커뮤니티를 만들고 싶었습니다.

정보보안과 익명 공론장에 관심이 많았던 왕자는 100% 익명 커뮤니티를 만들고, 깨끗하게 운영하는 경험을 해보고 싶었습니다. 사람들이 안전하게 서로의 의견을 나눌 수 있는 경험을 만들고 싶었습니다. 온전한 익명 커뮤니티 안에서도 사람의 선의들이 모여 좋은 문화를 만들어 나갈 수 있으리라 기대했고, 직접 확인해보고 싶었습니다.

그런데 어느 날, 배정된 조에서 익명 커뮤니티 아이디어가 채택되었습니다. 왕자님은 절호의 기회라고 생각했습니다. 우테코 프로젝트를 통해 익명 커뮤니티를 “잘” 운영하고 싶다는 자신의 소망을 이룰 수 있을 것 같았습니다. 우테코 4기가 끝나고 나서도, 이 서비스가 채택되거나, 사비로 서버 사용료를 대서라도 계속 이 서비스를 오래도록 운영해나가자고 다짐했답니다.


왕자님은 어떻게 될까요? 과연 그 뜻대로 오래오래 커뮤니티를 운영할 수 있을까요?

욕심 많은 개구리 이야기🐸

이번엔 우화 하나 들려드릴게요. 옛날 옛적, 한 개구리가 살고 있었습니다. 개구리는 자신이 진행하고 있는 프로젝트가 성공하기를 바랐습니다. 우테코 사람들이 자신이 만든 대나무숲 커뮤니티를 잘 쓰고, 나아가 이후 기수도 이 커뮤니티를 사용할 수 있으면 좋겠다고 생각했습니다.

그런데, 프로젝트를 진행하면서 느꼈습니다.

아, 나는 이제 기획자도 디자이너도 아닌 프로그래머인데. 분명 이번 프로젝트에서 사용하는 기술 스택에 대해 더 자세히 파보고 싶었는데.

그렇지만 개구리는 욕심을 버릴 수 없었습니다. 디자인에 대해서도, 기획에 대해서도 욕심이 자꾸 생겼습니다. 우리 프로젝트를 많은 사람들이 쓰길 바랐습니다. 좋은 “서비스"라고 말해주기를 원했습니다. 그로써 서비스의 퀄리티는 높아졌지만 본 목표였던 기술적 도전을 위해 쓸 시간이 나뉘었습니다.

개구리는 자신이 더 심화된 기술 스택을 쌓으며 개발 지식을 채워나가 더 단단한 백엔드 개발자가 되기 위해 여기에 있다는 것을 가끔 까먹었습니다. 기술보다 사용자 경험에 대해 고민했습니다. 하고 싶던 기술 스택이 있어도, 더 나은 사용자 경험에 방해된다는 생각이 든다면 시도하지 않으려 했습니다.

또, 욕심 많은 개구리는 결과에 집중했습니다. 그렇지만, 개구리는 지금 “프로젝트”를 하고 있었습니다. 옳은 결정을 내리는 것보다, 옳은 협업을 하는 것이 더 중요하다는 걸 몰랐습니다. 때로는 의견의 트레이드 오프를 이해하고 넘어가야 했습니다. 그러지 못할 때마다 회의는 길어졌습니다.

개구리는 혼란스러웠습니다. 그때쯤 이런 이야기를 들었습니다.

“아무리 의견이 (원론적으로) 옳더라도 실제로는 그렇지 않을 수도 있고, 설령 그렇더라도 팀을 설득할 수 없다면 채택될 수 없다.”

받아들이기까지 오랜 시간이 걸렸지만, 결국 개구리는 이해했습니다. 팀의 의사결정을 믿는다는 것은 곧 팀원들의 판단과 팀의 화합을 믿는다는 뜻입니다. 구성원들을 존중하고 러닝메이트로써 신뢰한다면 팀의 결정을 따라야 합니다. 개구리는 욕심을 조금 내려놓기 위해 먼 길을 돌았습니다.


동화 밖 어른이 되기😌

사실 공주는, 왕자는, 개구리는 모두 한 사람의 어느 모습입니다. 저는 기획자나 디자이너가 아닌, 개발자로서 이 공간에 있습니다. 제 주위에 있는 사람들은 좋은 협업 경험기술 스택을 1순위로 원하는 개발자입니다.

각자 서비스에 대한 욕심은 다르겠지만, 결국에는 서비스 그 자체보단, 그 안의 기술에 비추어 모든 것을 판단해야 합니다. 서비스 차원에선 조금 유용한 하나의 기능을 위해 너무 많은 설계의 변화가 생긴다면 포기해야 합니다. 기능들의 우선순위를 정할 때 기술적 난이도를 염두에 두어야 합니다.

동화 속 이야기는 언제나 해피엔딩 입니다. 저 역시 이 프로젝트가 해피엔딩으로 끝나길 바랍니다. 하지만 제가 바라는 해피엔딩은 너무 많습니다.

공주님은 서비스가 성공하길 바라고, 왕자님은 서비스가 지속해서 운영되길 바라고, 개구리는 디자인과 기획, 기술 스택 모두 포기하지 못한 채 프로젝트 의사결정이 자기 뜻대로 되길 바랍니다.

그 모든 엔딩이 제가 원하는 대로 이뤄지지 않을 수 있다는 걸 이제는 압니다. 설령 우리의 서비스가 사용되지 않더라도, 채택되지 않더라도 우리 속닥속닥 팀이 2개월가량의 시간 동안 함께했던 찐한 협업 경험은 남습니다. 그 사실만으로도 가슴이 따뜻해지고, 또 뿌듯합니다.

함께하는 팀원들에게 고마움을 표현하는 법을 배우고 있습니다. 스스로 만족하는 법을, 행복해지는 법을 배우고 있습니다. 그로써 동화 밖 어른이 되려 합니다. 아직 욕심 많은 저이지만 해피엔딩 밖, 진짜 행복을 찾아가고 있습니다.


We can do it

그땐 그랬지

팀 프로젝트가 정말 싫었다. 혼자서 가면 더 빨리 갈 수 있는 길을 에둘러 돌아가는 느낌이었다. 기계처럼 역할을 나누고, 일정을 나누는 것. 팀 내에서 자신이 맡은 역할만을 소화하는 것. 마지막으로 결과물을 취합하는 것. 이 모든 과정이 뚝뚝 끊기는 느낌이었다. 결과물을 취합하기 전까지는 아무것도 할 수 없었다. 그럴 때마다 혼자서도 할 수 있는 일을 굳이 왜 나눠서 해야 할까 답답함을 느끼기도 했다. 우아한테크코스에 오기 전 경험했던 대다수의 팀 프로젝트가 그러했다.

갈등이 정말 두려웠다. 팀 프로젝트에서 갈등은 반드시 피해야 할 존재라고만 생각했다. 갈등은 팀을 와해시키고, 서로의 감정을 상하게 하는 요소라고 생각했기 때문이다. 갈등이 발생한 뒤에 해결하기보다는 애초에 갈등을 막는 것만이 가장 좋은 방법이라 생각했다. 갈등의 씨앗이 보이기만 하면 어떻게든 짓누르려 했고, 갈등이 발생하는 팀 프로젝트는 실패라고 생각했다.

나보다는 우리

장기간 팀 프로젝트를 하는 경험은 이번이 난생처음이었다. 아침 데일리 미팅을 시작으로 저녁 데일리 회고, 이후 추가적인 개발까지 하루의 대부분을 팀원들과 함께했다. 심지어 점심, 저녁까지도 팀원들과 함께 먹었다. 기계처럼 역할과 일정을 나눴던 이전의 팀 프로젝트와 다르게 팀원들과 대면하는 시간이 많아졌다. 이에 따라 갈등의 발생 빈도 역시 자연스레 높아졌다. 하지만 그동안 생각했던 갈등의 이미지와는 정반대였다. 공동의 목표를 달성하기 위해 어떤 방안이 더 나을지 고민하는 과정에서 나오는 사소한 의견 충돌이 대부분이었고, 금세 해소되었다. 또한 이 과정에서 다채로운 의견들이 쏟아졌고 의견을 절충하는 과정에서 서비스가 좀 더 나은 방향으로 발전할 수 있었다. 그동안 왜 갈등을 무조건 금기시하고 피했을까? 후회가 드는 순간이었다.

레벨 3에 들어오면서 유독 많이 사용했던 단어가 있다. 누구 한 명뿐만이 아니라 팀원 모두가 그랬다. 바로 ‘우리’라는 단어다. ‘우리’ 이렇게 바꿔보는 건 어떨까? ‘우리’ 서비스에서 이게 굳이 필요할까? ‘우리’ 우선순위를 생각해보자. 레벨 2 방학식 날 서로 어색한 모습으로 모여 자신의 닉네임을 소개했던 팀원들은 이제 하나의 팀으로서 우리라는 단어를 자연스레 사용하고 있었다. 부르는 호칭만 우리가 된 것은 아니었다. 백엔드 크루가 프론트엔드 영역 개발에 참여하기도 했고, 프론트엔드 크루가 백엔드 영역 개발에 참여하기도 했다. 팀 내에서의 역할 역시도 우리가 된 것이었다. 팀의 목표를 달성하기 위해서라면 서로의 영역을 구분하지 않았다.

레벨 3의 찐한 협업을 겪으며 크게 깨달은 것이 있다. 갈등의 발생은 자연스러운 것이며, 갈등은 무조건 피해야 할 대상은 아니라는 것이다. 무엇보다도 중요한 점은 갈등을 마주했을 때 그것을 어떻게 해결하고 대처해 나갈지가 훨씬 더 중요하다는 점이다. 그동안 가지고 있었던 갈등에 대한 이미지는 팀 프로젝트에 대한 잘못된 선입견에서 비롯되었다. 기계처럼 역할을 나누려 했던 것과 갈등의 대상을 사람과 사람으로 한정 지으려 했던 잘못에서 비롯되었다. 분업보다는 협업을 지향해야 하며, 갈등의 대상은 오로지 우리의 목표여야만 한다는 점을 레벨 3에 와서야 비로소 깨닫게 되었다.

We can do it

레벨 3에 들어오면서 걱정이 정말 많았다. 지난 기수의 휘황찬란한 프로젝트들을 보며 과연 잘할 수 있을까 하는 생각에 밤을 지새우곤 했다. 그동안의 걱정이 무색할 만큼 어느덧 세 번의 스프린트가 지나고 레벨 3의 마지막 스프린트만을 남겨두고 있다. 스프린트마다 더 나은 방향으로 발전하는 우리의 서비스를 보며 매일 드는 생각이 있다. 우리가 아니었다면, 팀이 아니었다면 가능했을까?

우리의 프로젝트는 누구도 사용하지 않는 서비스가 될지도, 누군가에게 사랑받고 자주 사용하고 싶은 서비스가 될지도 모른다. 하지만 프로젝트의 성공 여부는 더 이상 중요하지 않다. 찐한 협업 속에서 우리가 배웠던 교훈이 있고, 어려움을 함께 헤쳐 나갈 사람들이 우리 곁에 있기 때문이다. 더 나은 서비스를 개발하기 위해 밤낮으로 고군분투했던 흔적 역시도 우리의 기억 속에 영원히 남아있을 것이다.

이제 레벨 3의 마지막 스프린트를 달려보고자 한다.

먼 훗날 2022년 여름을 돌이켜봤을 때, 뜨거웠던 여름의 날씨보다는 뜨거웠던 우리의 열정이 기억되기를 바라며.