brunch

You can make anything
by writing

C.S.Lewis

by 쿠우보이 Nov 21. 2019

소프트웨어는 사람들의 상관관계

소프트웨어는 사람들을 드러냅니다

우리 회사에는 개발팀이 2개 팀으로 존재한다. 하나는 웹사이트와 백오피스 툴을 만드는 팀, 또 하나는 학습시스템을 만드는 팀이다. 내가 두 팀 모두를 리드하기 어려워 웹, 백오피스 팀을 경력 개발자 동료에게 맡기고 수개월을 잊고 살아왔다. 여기서부터 비극은 시작되었다.


경력이 많은 개발자 동료를 믿고 모든 것을 기술적으로 다 해결해주실 것이라 생각했던 것 같다. 내가 리드하고 있는 학습관리 개발팀에선 어설프지만 그래도 지속적인 노력이 있었다  효율적이고 견고한 코드를 위해 계속적으로 코드 리뷰, 개발 회고, 데일리 스탠드업 등을 실험하고 적용해 나갔다. 하지만 나머지 팀에선 무슨 일이 벌어지고 있는지 내가 파악하지 못한 채로 프로젝트 종료 시점에 와서 다시 이야기를 하게 되었다.


다른 개발팀에서 2분의 개발자가 작업을 하였지만 거기에 협업의 흔적은 크게 찾아볼 수 없었다. 각 코드의 날카로움은 보였지만 전체 코드 안에서 조화롭게 돌아간다고 보이지는 않았다. 웹사이트 리뉴얼은 런칭이 어떻게든 되었지만, 코드의 시크릿 정보 관리, 전혀 준비되어있지 않은 README, 적절하지 않은 환경 변수 설정, 그리고 조밀조밀하지 못한 비즈니스 로직들이 발견되었다. 나는 책임자로서 굉장히 당황스러웠다.


처음엔 작업자 동료분들께 실망감이 컸고섭섭하기도 했다. 기본이라고 생각되었던 부분들이 안 지켜졌을 때 납득이 안 가기도 했다. 리뉴얼 런칭 이후, 결제 시스템에서 계속 나오는 장애와 버그, 치명적인 고객 쪽의 피해들이 드러나면서 더더욱 그랬다. 나라면 안 그랬을 텐데 라는 생각이 내 머릿속을 지배하고 있었다.


그때, 한 참 즐겨 듣고 있던 김진태 교수님의 재미있는 SW 지식 팟캐스트 방송에서 콘웨이의 법칙을 소개해 주셨다. 콘웨이의 법칙이란


organizations design systems that mirror their own communication structure
조직의 디자인 시스템은 해당 조직의 커뮤니케이션 구조를 반영한다 - 멜빈 콘웨이

어느 다른 블로거께선 이렇게도 의역을 하셨다.

시스템은 조직의 모습을 반영한다

즉 해당 프로젝트의 상태가 이렇게까지 엉망이었던 배경은, 각 개인의 잘못이라기보다 엉망이었던 우리 팀의 상태, 우리의 소통 구조 등이 반영된 것으로 이해가 되었다. 각 개인의 아쉬운 작업 결과라 할지라도, 해당 개발팀의 소통의 부재와 프로세스의 부재가 원인이었다. 무엇보다도 그 위에 가장 아쉬운 것은 해당 팀을 견제하고 지원하고 이끌었어야 할 나(PM 혹은 리드)에게 있었던 것이다. 즉 내가 제일 잘 못한 곳이고 모든 최종 책임은 나에게 있었던 것이다.


소프트웨어 개발 경력이 있으면 잘 챙겨주시겠지라고 생각했던 나의 가설 자체가 터무니없었던 것이다. 이것도 내 잘못이다. 소프트웨어는 팀으로 만드는 것이고, 각 개인의 퍼포먼스 위에 팀의 소통이 있다는 것을 뼈저리게 느낀 경험이 되었다.


우리는 잘못된 점을 고치기 시작했다.

정기 코드 리뷰를 살리고, 그동안 이루어지지 못했던 비즈니스 로직들을 같이 돌아보며 회고하고 기술적으로 고쳐나가기 시작했다.

바로 고칠 수 있는 부분과 장기적으로 봐야 하는 부분을 나누기 시작했다.

데일리 스탠드업을 매일 점심 먹기 전 20분씩 진행하면서 오늘 하루의 할 일과 어제 한 일들을 공유하기 시작했다.

상세한 README 문서와 배포 내용 문서화, 환경변수 사용 및 배포 자동화 구축을 시작했다. 운영팀에서 요청되는 태스크와 현재 리팩토링 필요 태스크의 우선순위를 논의를 거쳐 확실하게 정하기 시작했다.

치명적인 장애가 일어난 경우, 작업자에게 포스트모템을 요청해서 왜 그런일이 일어날 수 밖에 없었는지 총체적으로 회고를 하게 되었다. 이 경우 작업자 개인의 잘못이라기 보다는, 그 개인이 실수할 수 밖에 없었던, 그 실수를 잡지 못했던 시스템과 조직, 프로세스의 문제점을 들여다보게 되었다.


이렇게 코드는 조금씩 나아지기 시작했다. 아직도 갈 길은 멀다. 하지만 이렇게 나아지다면, 확실히 건강해질 것이 예상된다. 희망이 보인다.


이번 경험을 통해 확실히 깨달았다. 소프트웨어는 대충 저절로 좋게 만들어지지 않는다. 마치 축구 경기와 같아 각 명문 프로팀 선수들을 데려와도, 피파 100위권 밖의 팀에게도 질 수 있는 것이다. 각 개인과의 케미가 잘 맞아야 하며, 해당 팀 내 주장 역할을 하는 사람과 각 팀원의 역할이 중요하다.


그리고 무엇보다도 프로 필드 플레이어들을 견제하고 지원하는 감독의 역할이 중요함을 느꼈다. 경기가 시작되면 감독은 앉아 있기도, 서 있기도 하지만 그의 머리 속은 필드의 그 어떤 선수들만큼, 혹은 그 보다도 더 많이 땀을 흘리고 뛰어야 한다.



코드스테이츠라는 혁신적인 프로그래밍 부트캠프에서 건강한 개발자 분들을 양성하고 또 그에 필요한 시스템과 도구들을 만들고 있습니다. 현재는 웹 개발 뿐 아니라 Product Management, Growth, Data 부트캠프도 준비하고 있습니다. 저희와 함께 일하는데 관심있는 분들은 https://codestates.workfit.info/ 을 통해 지원해 주시기 바랍니다. 감사합니다. 
https://codestates.com 


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari