프로젝트 관리라는건 결국 방해요소와 그에 대한 대처를 위한 상세한 고민인 것 같다. 단순히 개발에서 부딪히는 문제들을 포함해 팀원들간 의견 차이가 생겼을 때 어떻게 해결할 것인가에 대한 사전합의까지 참 많은 것을 포함하는 것 같다. 심지어 우리처럼 프로젝트 규모가 커지면 그만큼 하드하게 관리했어야 했다.
우리는 당연히 별 생각없이 스크럼, 스프린트를 하기로(사실 아는 것도 그것밖에 없었다) 결정했고 그에 대한 자세한 내용은 하나도 정하지 않았다. 나는 스크럼을 한다는 것은 단순히 매일 짧은 회의를 하고 서로 개발한 내용을 공유하는 시간을 갖는거구나~ 하고 나이브하게 생각했었다. 개발 실력을 포함해 본인의 스타일이나 성격까지 고려해서 우리팀에게 부족한게 뭔지, 특히 내가 부족한게 무엇인지 파악해 돌파방식을 상세히 정하는게 핵심인 것 같다. 예를 들어 우리에게 지금 당장 가장 부족한것은 각 기술 스택을 다루고 잘 합칠 수 있는 지식이니까, 그걸 어떤 방식으로 나누어 채울지를 고민해야 했었다. 이사님께서 예를 들어주시기를 1. 한명은 지식만 쌓고 나머지에게 그를 기반으로 개발 방향을 제시해주는 1희생 3개발 2. 모르면 때리면서 가르치기(?) 3. 다같이 공부하는 시간 갖기 등 하나의 문제에 대해서도 여러가지 방법이 있고 우리 팀에게 맞는걸 찾아야 한다. 팀의 조합에 따라 한 사람이 이 팀에서는 이 방법으로 1 commitment를 해낼 수도 있고, 저 팀에서는 같은 방식으로는 0.5commitment를 할 수도 있는거라고 하셨다. 결국 우리 팀 조합과 어울리는것을 찾아내야 하는 것이다. 이 과정은 프로젝트가 끝날 때 같이 끝나는 것으로 끊임없이 고민해야 하는 부분이라고 하셨다.
하지만 이렇게 방법적인 부분에 집중하다보면 실제 개발시간이 줄어들것이고 그 밸런스를 잘 맞춰야하는것도 일이다. 서버개발캠프를 시작하면서 막연히 내 열정으로 다 해내야지!라고만 생각했던것 같다. 그런데 이사님 말씀을 듣다보니 당장 스크럼 방식을 결정하는것만으로도 상세히 정하자면 한달은 걸릴것 같은 느낌.. 인간이 한번에 컨트롤할 수 있는 양은 정해져 있다는 것을 인정하게 되었다. 스크럼도 완벽하게, 개발도 완벽하게, 지식도 완벽하게 쌓기란 힘들테니 밸런스를 위해 마음에 100퍼센트 차지 않아도 포기할 줄도 알아야겠다.
우리 프로젝트의 궁극적인 목표가 뭐냐는 질문에 딱히 생각나는 말이 없었다. Clone을 하고싶으면 먼저 개발했던 사람들의 고민들을 따라가면서 그야말로 clone하면서 공부하든지, 우리만의 것을 만들고싶으면 스스로 고민하든지 뭔가 주도적인 부분이 있었어야 했던 것 같다. 우리는 이것도 저것도 좋아보이는건 일단 다 우겨넣어서 이도저도 아닌게 되어가고 있었다. 점점 내가 정말 공부하고 개발하고 싶은게 뭔지보다 일단 정한 주제에 어울리는 구조, 통상적으로 필요한 것들이 뭔지 그런걸 더 찾아보게 되었다.
처음부터 주제가 중요하다고 생각하지 않았고, 큰 규모의 서버를 어떻게 배치할 지 이해하고 직접 다뤄볼 수 있다면 상관없다고 생각했다. 사실 분산처리를 해볼거라고 생각해본적은 없었고 딱히 관심있던 분야도 아니였다. 하다가 어려우면 나는 웹 서버 하면 되지 하는 안일한 마음으로 바로 오케이 했던것 같다. 내가 진짜 하고싶은 것과 주제에 대한 고민을 너무 패스해버리지 않았나 싶다.
주제를 정한 후에는 빅데이터 분산처리라는 생소하고 어려운 개념에 집중하게 되면서 알아볼것도 많아지고, 신경이 쏠리게 되면서 데이터 파이프라인쪽으로 치중되고 있었던것 같다. 데이터 파이프라인쪽은 이사님 말씀처럼 내 열정이 확 타오를만한 관심있는 분야는 아니였다. 조금 알아본 지금도 마찬가지긴 하지만, 아주 싫은것도 아니고 새롭게 공부하기에 괜찮아보여서 상관없었던것도 사실이다. 사실 지금 당장도 굳이 이쪽으로 파야 한다면 상관은 없고 열심히는 할 것이다. 그런데 이번 캠프의 목적이 그게 아닌건 맞는 것 같다
이사님 말씀을 들으면서 나는 "1명의 사용자에게 잘 분산처리된 데이터 전달하기" 보다는 "1000명의 사용자에게 요청한 데이터 빠르게 전달하기"에 더 관심이 있으며 웹 서버 최적화에 집중하겠다고 팀원들에게 말해야겠다고 생각했다. 제일 고생했고 또 재미있게 들었던 네트워크 수업 때 처음으로 맞는 분야를 찾은 것 같았다. 고생했던 소켓 프로그래밍, 패킷 분석이나 관리 등 네트워크 과제가 재밌었지만 그렇다고 내가 네트워크 7계층의 2~3단계쯤 되는 Low level의 통신 프로토콜만 더 파보고싶은 것은 아니다. 그래서 내가 내린 결론은 나는 통신한다는 것 자체에 재미를 느꼈고, 유저의 더 나은 사용 경험에도 관심이 많으니 클라이언트에서 요청을 받은 직후의 일!을 처리하는 어플리케이션과 가장 근접한 서버 개발자를 하면 재미있지 않을까? 라는 것이었다.
그런데 그런 서버를 제대로 설정하고 만들어본 적이 아직 한번도 없다. 특히 내가 테스트하는 1명의 나라는 클라이언트가 아니라 1000명, 10000명이 되는 많은 숫자의 클라이언트의 요청에 대한 처리에 대해 공부해본적이 없다. 항상 막연히 해보고싶다.. 언젠간 해보겠지~ 생각만 하고 과제하느라, 알고리즘 하느라, 종강부터 하고, 스프링 공부 먼저 하고... 라는 핑계로 미루어왔었다. 나는 이번 캠프에서 그쪽에 대해 공부하고 우리 서비스의 서버 파트에 직접 관여하면서 다뤄보고 싶다.
너무 공감하고 갑니다 :) 힘내서 하시길 바랍니다🙋♂️