올해 성공한 일들은 어느 정도 주변에 알렸기 때문에 회고에서는 실패한 것들만 돌아보고 기록으로 남기고자 한다. 실패를 돌이켜 보고 글로 적는 게 뭐 그리 어려울까? 알고 보니 정말 쉽지 않았다.
올해 블로그에 작성한 글을 보면 도서 리뷰와 오픈소스 기여 경험, 이 두 가지 주제뿐이다. 실무에서 맞닥뜨렸던 문제와 그 문제를 기술적으로 어떻게 해결했는지에 대한 글은 단 한 편도 작성하지 않았다.
문제와 해결 방법 모두 인터넷에 잘 정리되어 필요성을 느끼지 못한 경우도 많다. 혹은 이미 해결한 문제를 다시 방문하는 건 봤던 영화를 다시 보는 것과 마찬가지라고 느꼈을 수도 있다. 전문 리뷰어가 아니라면 두 번 보는 게 낭비라는 생각이 들 거다.
그럼에도 불구하고 몇 자라도 적어본 적이 있지만 마무리를 짓지 못했다. 그 이유를 생각해 보면 첫째, 마감을 정하지 않았고 둘째, 글쓰기에 투자할 시간을 따로 빼내어 일정에 포함하지 않았기 때문이다. 글쓰기를 프로젝트처럼 바라봤다면 절대 이렇게 방치하지 않았을 텐데.
기획서 리뷰를 마치고 협의가 필요한 부분이 정리되고 나면 바로 구현으로 다이빙하곤 했다. 추가하거나 수정해야 하는 부분을 찾으면 머릿속에서 대략 구상만 하고 즉시 키보드로 손을 뻗쳤다. 이 방법은 초기에는 나름대로 잘 작동했지만 장기적으로는 모래성 상태였던 코드 베이스를 점점 엉망으로 만들고 있었다.
가령 관심사가 적절히 분리되었는지 고려하지 않았다. 하나의 기능을 위해 다소 관련성이 부족한 여러 파일에 변경이 일어나는 경우가 있었다. 이 때문에 확인해야 할 범위가 늘어나도 구조가 이상하다고 느끼기보다 원래 개발은 힘든 거라고 생각했다.
이처럼 설계의 중요성을 느끼지 못한 이유는 개발자가 하는 일을 관계자들과 소통하며 기능을 만들고 버그를 고치는 데에만 한정했던 것이 원인인 듯하다. 개발자가 뭘 할 수 있는지 더 넓은 가능성을 살펴보기보다 눈앞에 당장 주어지는 문제만 쳐내고 만족했다.
사수 없이는 조금도 성장할 수 없다는 건 당연히 말도 안 되는 이야기다. 하지만 2년 차에 접어들자 했던 일을 반복하는 것 같고 다음 스테이지로 넘어가지 못하고 있다는 생각이 종종 들었다.
스터디나 커뮤니티 그리고 행사 참여와 같은 외부 활동을 통해 다양한 사람들과 만나며 시야를 넓혀 보려 했고 이직도 시도해 보았다. 이직에 성공하지는 못했는데 준비가 부족한 적도 있고 옮겨도 메리트가 없다고 느껴진 경우도 있으며 역량을 더 쌓아야겠다고 반성한 케이스도 있었다.
이중 인상적인 면접관 분들과 좋은 채용 프로세스를 경험한 회사가 있었는데 면접 경험을 통해 회사에 코드 리뷰 문화를 도입해 보고 싶다는 생각이 들어 탈락 후 메일로 조언을 구했다. 놀랍게도 면접관 중 한 분이 직접 전화를 통해 팁을 알려주며 응원해 주셨고 실제로 코드 리뷰를 도입할 용기를 낼 수 있었다.
코드 리뷰 문화를 도입하는 것까지는 그래도 어렵지 않았다. 개발 문화에 대해 목소리를 자주 내는 편이었고 동료들도 코드 리뷰에 대해 긍정적인 반응을 보였다. 용기가 떠나기 전에 구글 코드 리뷰 가이드와 기타 글을 참고로 회의에서 논의한 사항을 정리해 노션에 가이드를 만들고 본격적으로 코드 리뷰를 시작했다.
하지만 문화라는 건 on/off 할 수 있는 스위치가 아니다. 동기가 충만한 나 스스로도 처음에 합의한 대로 프로세스를 따르고 습관을 들이는 게 어려웠다. 나와 팀원들이 장애물을 마주할 때마다 아래와 같은 조치들을 취해보았다.
하지만 결론적으로 다들 꿈꾸는 것처럼 코드 리뷰가 멋지게 진행되지는 않았다. 잘 지켜지지 않는 부분들에 대해 피드백도 해보았고 반대로 개선할 점이 없는지 의견도 물어보았으나 그냥 리뷰를 받아서 정말 좋다는 답변뿐이라 진퇴양난인 상태로 도입을 취소해야 할지 고민만 깊어졌다.
코드 리뷰를 도입하고 여러 어려움을 겪으면서도 이런저런 방법론을 따르고 모범을 보이면 될 거라고만 생각했다. 이전에 면접 이후 멘토링 해주셨던 개발자분에게 연락해 상황을 설명하고 도움을 구해볼 생각은 전혀 하지 못했다. 아니, 정말 왜 안 물어봤을까?
회사에서는 매주 KPT 회고를 진행했다. 잘하고 있으며 계속 해야할 것, 문제가 되어 개선이 필요한 것, 해결을 위해 시도해 볼 것 등을 서로 이야기하는데 여기에서 문제점으로 언급되는 것들에 대해서도 스스로 얘기하고 스스로 고치거나 다른 사람들의 고민을 풀어나가려고 한 적이 많았던 것 같다.
스타트업에 입사하고 거의 입사 기간이 비슷한 주니어 개발자 두 분과 함께 어찌저찌 헤쳐 나가는 데 익숙해지며 기댈 곳이 없으니 혼자 책임져야 한다는 생각이 굳어진 걸 수도 있다. 혹은 도움을 구하면 부족한 자신의 모습을 보여야 한다는 게 부담스러웠을지도 모른다.
TMI이지만 회사의 내부적인 사정으로 팀 전체가 권고사직으로 처리되어 12월부로 실직 상태다. 🫠 갑작스러운 통보를 받고 퇴사하기까지 팀 동료분들에게 커피챗을 신청해 한 분 한 분과 이야기를 나누었다.
원래 상반기쯤부터 퇴사하는 분들에게 커피를 사드리기 시작했는데 퇴사하기까지 많은 번뇌와 굳은 결심이 필요하다는 걸 알기 때문에 배웅하는 의미에서 앞날을 응원했었다. 이번에는 남아 있는 분들에게 작별 인사를 한다는 점이 달랐지만 앞으로의 계획을 이야기하고 서로를 응원하며 인사를 나눈 건 똑같았다.
이 기억을 떠올리다 문득 이런 커피챗 시간이 1:1 피드백을 요청할 수 있는 마지막 순간이 아니었나 하는 후회가 들어 실패 항목에 넣어 보았다. 회사에 피드백 프로세스가 전무했기 때문에 부족한 점을 물어볼까 싶어도 늘 망설이며 용기를 내지 못했다. 그런데 부담 없이 솔직해질 수 있는 순간에 개선해야 할 행동에 대해 피드백을 요청하지 않고 그냥 스쳐 지나갔다고 생각하니 참 아쉬운 마음이 들었다.
정리하면 다음과 같은 기준으로 실패를 나눌 수 있다.
시도도 안 해서 실패:
시도는 했지만 실패:
시도를 한 실패들은 물론 뼈아팠지만 그 과정에서 좋은 인연도 만나고 무엇이라도 배운 게 있었다. 일단 첫 걸을 내딛고 나면 다음 걸음은 자연스럽게 따라온다. 하지만 시도도 하지 않은 실패에서는 아무것도 얻은 게 없었다. 사실 정말 뻔한 이야기지만 내 경험을 기반으로 하니 느껴지는 바가 달랐다.
글을 처음 써나가기 시작했을 때는 실패를 떠올리는 것도 힘들었다. 막상 하나씩 실패한 일들이 떠오르자 썼다 지우기를 반복하며 망설임이 차올랐다. 이것만 보고 나에 대한 의견이 바뀌지 않으면 어쩌지? 스스로 돌아보면서 많이 배웠으니까 만족하고 임시 저장으로 둘까? 이런 생각들이 머릿속에 맴돌았다.
그래도 이렇게 실패를 마주하고 나니 마음이 가벼워졌다. 특히 넘어지고 나서 뭔가 줍고 일어났다는 걸 깨닫게 되니 기분이 좋았다. 좋은 방향으로든 나쁜 방향으로든 나를 변화시켜 왔기 때문에 사람은 변할 수 있다고 생각한다. 앞으로도 내가 계속 변하리라고 믿는다. 그냥 올해는 다양하게 더 많이 실패하자.