리드잇zine 2호 - 개발자의 도구들
이 글은 교보문고에서 발행하는 작은 매거진, 리드잇 Zine 2호에 기고한 글입니다.
내가 처음 몸담았던 회사 사장님은 운좋게도 사회생활 첫 멘토였다. 그분이 대규모 소프트웨어 구축 프로젝트의 기술리더로 참여하여 해당 프로젝트 책임자인 PM과 꽤 깊은 수준의 대화를 나누던 자리에서 이런 이야기를 하셨다. "프로젝트에서 가장 중요하고 어려운 일은 의사소통이죠." 당시만 해도 주니어였던 나는 그 말의 의미를 명확히 이해하기가 쉽지 않았다.
그러고 나서 십여 년이 지난 2016년, 중국에서 비즈니스를 시작한 나는 몇 명의 한국인 개발자들 외에는 모두 중국인으로 구성된 개발 팀과 일을 시작해야 했다. 그때 가장 두려운 점은 내가 중국어를 한마디도 못 한다는 사실이었다. 그렇다고 쌍방이 영어로 대화를 할 수도 없었을 뿐더러, 통역자를 두고 프로그램 개발 이야기를 나눈다는 일이 얼마나 어려운지는 이미 여러 차례 체험한 바 있었다. 하지만, 결론만 이야기하자면 한국에서 내가 일했던 스무 개가 넘는 개발 프로젝트보다 중국에서 더 빨리 결과를 낼 수 있었다. '함께 우리말을 쓴다'라는 조건이 의사소통의 성공을 보장해주지는 않았다. 나는 이 충격적인 경험을 지인들에게 이렇게 설명했다.
한국에서 일할 때 같은 언어를 쓰므로 서로 이해했다고 지레짐작하고 나서, 애초 기대와 전혀 다른 반응을 보이는 상태에게 '뒤통수 맞았다'는 식으로 치부하는 일들이 얼마나 많은가? 누군가와 논의를 나눈 이후 내 메시지가 제대로 전달되었다고 짐작하기 쉽다. 그런데, 열심히 노력해야 20% 정도 전달할 수 있다고 비판적으로 믿는 것이 현실을 바로 보는 일에 가깝다. 대화에서 오해가 차지하는 비중은 우리가 짐작하는 것보다 훨씬 크다. 한국에서 일할 때와 달리 중국에서는 서로 대화가 어려우니 내 말을 이해했는지 거듭해서 확인하고 기록도 하며, 화면이나 코드로 재차 확인하니 도리어 결과가 빨리 나왔던 것이다.
그런 일을 몸소 깨닫는 순간 마치 십여 년 전에 내 멘토 사장님께서 했던 말이 나에게도 와 닿은 듯했다. 그렇다. 소프트웨어 개발에서 가장 중요하고도 어려운 일은 '의사소통'이다. 그래서, 개발자 역시 의사소통을 코딩하는 행위 이상으로 중요하게 생각해야 한다. 반가운 소식은 그 어려운 일을 해결해낼 방도는 분명히 있다는 사실이다.
의사소통과 협업은 소프트 스킬로 도구가 대신해줄 수는 없다. 입장과 선호가 다른 상대를 인정하고 함께 공동의 비전을 만들어간다는 기조로 소통을 한다고 할 때 협업 도구는 분명히 효과를 높여줄 수 있다.
내가 4년여간 써온 NHN이 만든 두레이(Dooray)를 기준으로 예를 들어 설명해보자. 먼저 두레이는 프로젝트 단위로만 작업을 생성할 수 있다. 모든 글이나 그림 등의 자료가 작업을 기초 단위로 한다. 협업 도구니까! 함께 작업을 하는 도구다. 그리고 하나의 제약이 더 있다. 모든 작업은 프로젝트 안에 위치한다. 즉, 공동의 비전을 협업으로 만들어가는 활동에 바탕을 둔다.
동시에 두레이는 각 개인의 입장과 선호를 보장해준다. 입장은 프로젝트와 작업 단위의 권한 설정으로 보장한다. 그리고 선호는 다양한 장치를 제공하는데, 그중 내가 가장 애정하는 기능은 다음 그림과 같은 스트림 목록이다. 아무때고 좌측의 스트림 메뉴를 누르면, 그때까지 쌓여 있는 요청이나 작업 변화가 시간 순으로 펼쳐진다.
나는 비동기 협업을 즐기니까 그러한데, 몰입하며 일하고 싶은 개발자에게는 슬랙(Slack)과 유사한 메신저도 제공한다. 물론, 슬랙과 조합하여 채팅은 슬랙으로 하고 결과물은 프로젝트에 보관하는 방식도 가능하다. 두레이 메신저는 줌(Zoom)처럼 화상 통신 기능까지 제공한다.
게다가 팀과 개인의 상황 모두를 고려한 다양한 옵션이 있다. 여러분이 우리 모두 인간이라는 점을 염두에 두고, 치열하지만 감정적으로 안전한 소통을 하고자 한다면 두레이의 가성비는 가공할 수준이다.
하지만, 모든 경우에 두레이가 최적이라 할 수는 없다. 결국, 누구와 어떤 목적으로 협업할지 소통의 맥락에 따라 도구를 선택해야 한다. 최근 수년간 나는 컨플루언스(Confluence), 두레이, 깃허브(github), 트렐로(trello), 페이스북 워크스페이스, 슬랙, 노션 같은 여러 협업도구를 다양하게 써왔다. 그중 두레이는 단연 필수 도구로서 손꼽을 만하다.
협업 대상 중에 개발자가 아닌 사람이 포함될 경우에 깃허브 등의 도구를 함께 쓰기는 쉽지 않다. 그런데 두레이는 흔히 사용하는 웹 메일 인터페이스 형태이기 때문에 SNS를 사용조차 안 하시는 분과도 별다른 어려움 없이 협업할 수 있다. 또한 개발자들은 영업, 기획, 마케팅 분야에 종사하는 현장의 수많은 동료들과 소통할 수 있는 기회가 보석처럼 귀하다. 그런 귀한 기회를 한번의 '구두' 소통으로 날리는 대신에 협업 저장소 두레이를 이용하면 가치있게 만들어낼 수 있다. 단, 한 번의 구두 소통에 모험(?)을 거는 대신에 게시판이나 메일 형식으로 대면 미팅 전후에 의견을 주고받으면, 두레이는 이를 프로젝트와 작업 단위로 분류하고 보관해준다. 또한, 나중에 문득 새로운 아이디어가 생기거나 구현을 하다가 갑자기 궁금한 일이 생길 때에도 상대의 일상을 방해하지 않는 댓글로 소통을 이어갈 수 있다. 개발자가 현장의 동료나 사용자에게 이러한 피드백을 얻을 수만 있다면, 무엇을 만들어야 하는가, 라는 명확한 문제 정의가 주는 탁월한 생산력을 경험할 수 있다. 일반인들과 단 한 번의 대화만으로 개발자가 원하는 수준의 구체적인 정보를 얻기란 꽤 어려운 일이기 때문이다. 당연히 나는 우리 회사에서, 그리고 조직 전환을 돕는 모든 고객사에서 일할 때, 기본적으로 '두레이 + 깃허브(혹은 깃랩(gitlab))' 환경을 구축한다.
다만, 개발 일 외에 글쓰기나 포스터 제작 등의 디지털 콘텐츠가 강조되는 협업에는 노션(Notion)을 편리하게 활용한다. 나는 이 글을 쓰면서도 다음 그림과 같이 편집자와 협업을 했다. 두레이는 작업의 저장소로서 협업 과정의 정교한 소통에는 막강하지만, 결과물 자체가 중요할 경우는 노션이 좀 더 편리하다. 두레이도 위키 기능이 있지만, 두레이 프로젝트만큼 강력하지는 못하다.
결과물을 얻기 위해 거쳐야 하는 관문인 의사소통 과정은 분명히 어려운 일이다. 하지만 그러한 어려움에 맞서느냐, 피하느냐의 태도가 향후 우리 삶이 어떻게 펼쳐지는지에 지대한 영향을 끼친다. 오랫동안 해온 소프트웨어를 개발하던 시절의 경험을 반추해보면 "개발 업무를 통해 '나 자신도' 더불어 개발된다". 그런 점에서 비록 지금 개발을 하고 있지 않다고 하더라도, 나는 여전히 (자기) 개발자다. 그리고 무엇을 개발하더라도 사회에서 함께 하려면 의사소통과 협업은 중요하다.