원격외노자로 일하고 있는 저희 회사를 얄팍하게 분석해서 기록해봅니다.
회사나 기술 관련 이야기는 딱히 할 이야기가 없을 것 같았는데, 사실 경제활동을 하는 사람이 일상에서 꽤 오랜시간을 쏟는 직장을 빼놓고 썰을 푸는 것도(?) 쉽지는 않은 것 같습니다. 일단은 제 기억 보존이 주 목적이지만, 온라인에서 알게된 꽤 다수의 분들이 궁금해 하셔서 살짝 끄적여보겠습니다.
1. 사용기술
뜬금없이 사용기술부터 이야기를 해야하는 이유가 있습니다. 현재 회사의 모양새가 갖춰진 계기와 관련이 있기 때문인데요, 제가 처음 합류한 회사는 Portland 근교의 ClearSight Studio 라는 곳이었고, Ruby 를 기반으로 웹(Ruby on Rails)과 모바일 (RubyMotion) 개발을 하고 있었으며, PHP 나 JavaScript 도 부차적으로 사용하고 있었습니다.
회사가 합병한지 8년인 현재는 TypeScript 를 주력으로 React-Native 개발을 하고 있고 그 전에는 React 와 Phoenix(Elixir), Angular 기반 웹 개발도 했었는데, 요즘은 RN 기반 모바일 개발에만 초점을 맞추고 있습니다.
중간중간 독특한 일들도 합니다. 예를 들면 웹 기반 가상 메이크업 프로젝트가 있습니다. 프랑스의 유명한 모 화장품 회사의 웹사이트에 적용했던 적이 있는데, 다른 회사에서 C++ 로 개발된 Computer Vision 알고리즘을 Emscripten 과 수작업을 통해 WebAssembly 로 옮기며 수정/보완하는 일을 컴퓨터 비젼 전공자라서 저 혼자(…) 했던 적이 있고요(잠도 잘 못자고 많이 힘들었습니다), 실리콘밸리의 한 화상회의 솔루션 회사의 데스크탑 애플리케이션 개발을 React-Native-Windows 오픈소스 개발 참여와 병행해서 하기도 했습니다. 또한 Groupon 의 백엔드 업무를 함께 하기도 했습니다. (제가 참여한건 아닙니다)
회사의 주력 기술은 정해져있지만, 이렇게 경우에 따라 조건이 맞는 이것저것들을 하는 편입니다.
2. 회사 합병
제가 입사하기 전부터 사장은 동료들과 RubyMotion 을 통해 모바일 개발을 하고 있었고, 편의를 위해 관련된 오픈소스를 만들어서 사용하고 있었습니다.
그 당시 샌프란시스코의 어떤 회사에서도 RM 을 사용하며 오픈소스를 개척하고 있었는데, 서로 친하게 소통하고 지내던 어느날 유럽의 Ruby 관련 컨퍼런스에서 회사 대표들이 만나서 각자 회사의 기술과 문화에 대해 허심탄회하게 이야기 하다보니, 이게 비슷한 점이 너무 많더라는 겁니다.
심지어 두 회사의 로고도 뫼비우스의 띠 모양으로 비슷했습니다
컨퍼런스 중 함께 식사하면서 우스갯소리로 “그럼ㅋㅋ우리ㅋㅋ 회사ㅋㅋㅋ 합치면 되겠넼ㅋㅋ” 이야기가 나온 몇 달 후 회사는 진짜 합병을 했습니다. 실화입니다. 이름은 합의 하에 Infinite Red 가 되었습니다. 저는 회사 이름이 아주 마음에 듭니다.
3. 회사형태
회사의 형태는 미국에 기반을 두고 있는 Development & Design Agency 입니다. 쉽게는 외주로 보시면 되는데요, 고객들을 위해서 주로 모바일/웹 앱을 포함한 개발과 디자인을 제작하고 컨설팅도 하고 있습니다. 모든 개발과 디자인에는 고객이 지속적으로 참여하며 주기적으로는 주간 화상회의, 실시간으로는 Slack 을 통해 끊임없이 소통하며 결과물을 만듭니다.
부차적으로는 RN 개발 관련 온라인 Academy 운영과 오프라인 교육, AI 관련 프로젝트들도 진행 중입니다.
예전에는 San Francisco Bay Area 와 Portland 근교에 사무실이 있었는데, 원격 근무를 미국에서도 일찍 적용한 편이라 시간이 지나면서 사무실들을 없에버렸고, 회사와 업무에 관련된 모든것은 온라인상에서 행해집니다.
4. 내부자들
현재는 사장단 세명(CEO, CTO, CIO)을 포함한 22명의 코어 인원과 8명 정도(정확히는 모르겠습니다…)의 프리랜서 개발 인력이 있고 기타 회계와 법무, 카피라이팅을 맡고 있는 계약자들이 있습니다. 대부분은 미국 서부에 거주하고 있고, 미국 중부, 동부, 캐나다에도 흩어져 있습니다.
제 직급은 이렇습니다. 보기만 해도 진지합니다.
저를 포함한 대부분의 개발자와 디자이너들은 시니어 레벨이고, 중간에 이탈한(?) 인원의 수는 매우 적어서 신입을 제외하고는 근속년수가 합병 후 회사의 연령(2022년 현재 8년)과 동일합니다. 아무래도 흔히 말하는 워라밸이 좋아서 그렇다고 생각하는데, 글의 뒷부분에 이야기를 조금 더 이어보겠습니다.
5. 고객
Microsoft, Zoom 과 같은 유수 대기업부터 소규모 업체와 개인까지 다양한 고객들을 위해 일을 해봤는데, 일반적으로는 웹서비스를 보유하고는 있지만 모바일 솔루션이 없거나 기존 모바일 앱의 개선을 위한 방법을 찾는 기업들이 주된 고객층입니다.
실제로 고객이 원하는 결과물을 저희 회사에서 특정 기한내에 제작해서 제공하는 것보다, 해당 고객사의 웹 개발팀이나 고객 당사자와 직접 소통하며 개발하는 경우가 더 많은 편입니다. 생각해봤을때 이런 경우가 많을까 싶었습니다만… 미국이 땅덩어리가 커서 그런지 의뢰와 일이 끊이질 않습니다. 여러해를 일했어도 여전히 신기합니다.
일반적으로는 2인, 적을때는 1인에서 많을때는 4인 규모로 한 프로젝트에 투입이 되고, 제가 가장 오랫동안 일했던 프로젝트는 1년 정도이며 가장 짧았던 것은 4주 정도의 PoC & 교육이었는데, 개인적으로는 쉽게 질리는 성격상 한 가지 제품이나 서비스를 개발하는 것 보다는 이렇게 프로젝트의 규모와 성격이 달라지는 업무를 선호하고 있습니다.
6. 업무 도구
Slack, Trello, Github, Google Workspace, Zoom 등 이미 잘 알려진 도구들을 업무에 적용해서 사용하고 있습니다. 고객사에서 사용중인 시스템들(Asana, Jira등)이 있으면 해당 시스템과 도구를 사용하는 것을 우선으로 합니다.
추가적으로는 Slab 을 사용해서 회사 내부적인 지식을 공유하고 있고요, 조금 재미있는 것은 Clue 라는 보드게임에서 착안한 동명의 웹앱을 만들어서 내부적으로 사용중인데, Zoom 과 연동해서 “채팅방”의 개념을 만들고, Slack 의 rollcall 채널 (출석, 퇴근, 자리비움등 간단한 메시지를 남기는 채널)과 연동해서 회사 사람들의 현재 상태를 보여줍니다.
이것은 기본 테마인 다크모드이며, 보드게임 Clue 의 테마도 존재합니다
원격근무의 특성상 화상회의를 잘 활용해야 하기 때문에 만들어졌습니다. 누가 누구와 이야기를 하고 있는지 시각적으로 파악할 수 있고, 어떤 주제로 이야기하고 있는지도 볼 수 있습니다. (고객 회의시에는 토픽을 잘 적지는 않습니다)
회사 내부회의, 고객과의 외부회의, 잡담방 등으로 각 방의 용도가 정해져 있어서 중요한 회의중에 눈치없이 난입하는 불상사를 방지하는데에도 효과가 있고(?), 심심하면 Kitchen Table 에 들어가서 일하다보면 다른 심심한 동료가 들어와서 함께 잡담을 나누기도 합니다.
여담으로, 회사 내부적으로는 격주마다 모두 모여서 회의를 합니다. 정확히 회의라기 보다는 그간 있었던 회사 내부적인 정보 교류와 잡담, 업무 외적으로 어떤 재미난 일들이 있었는지 소개하기도 하는 가벼운 친목의 시간입니다. 주말에 갔던 여행을 사진과 영상으로 공유하며 소개하거나, 집안 벽 색깔을 바꾸는 과정을 보여준다던가… 딱히 주제가 없습니다. 농담으로 시작해서 농담으로 끝나기 일쑤입니다. (물론 프로젝트나 세일즈, 일정과 같은 업무 이야기도 합니다! 조금!)
어쨌든 이런 도구들 이외에도 생산성이나 협업과 관련된 도구들을 찾아서 시도해보고, 경험을 공유하는 것은 계속 진행되고 있습니다.
7. Chain React
2017년에 회사에서 상큼한 아이디어를 냅니다. React-Native 컨퍼런스를 열어보자며… 조금 미친 이야기 같았습니다. 스무명 남짓의 인원으로 컨퍼런스 준비를 한다는게 불가능할거라 생각했었는데, 어떻게 그게 잘 되어버렸습니다(?)
SNS 에서 이름이 알려진 React-Native 를 사용하는 개발자부터 대기업 종사자까지 많은 개발자들이 발표자로 나섰고, 스폰서들도 상당히 많았으며, 행사진행도 수월하게 끝났던지라, 저희 회사가 컨퍼런스 주최대행 업체냐는 질문도 수 차례 받았습니다. (살짝 자랑입니다. 준비하느라 힘들었으니 이해를 부탁드립니다.)
발표자들의 발표도 인상 깊었지만, 여러 기업에서 일하는 실무자들과 세션 중간중간 기술 관련 이야기도 하고, 인적 네트워크도 형성하는 계기도 되었기에 생각보다 더 좋았습니다.
첫 시작을 했던 2017년 이후 2018, 2019년 모두 성황리에 행사를 마무리 했는데, 2020년 부터 올해인 2022년 까지는 코로나 시국으로 인해 잠정적으로 중단한 상태입니다. 내년에는 꼭 다시 할 수 있었으면 좋겠습니다!
8. All Treat™
무슨 뜻인지 의아해 하실겁니다. 사실은 All Team Retreat (전직원 야유회) 인데, 격주 회의 때 CEO 가 All Team Retreat 을 여러번 빨리 말하다가 All Treat 이 되어버린 이래로 계속 그렇게 칭하고 있습니다.
야유회는 대부분의 직원들이 거주하는 Portland 근교의 컨퍼런스룸을 빌릴 수 있는 호텔에서 (정확히는 lodge 입니다) 최근 몇 년을 치뤘고, 이 전에는 CEO의 집과 AirBnB 으로 대여한 큰 집(?)에서 했습니다. 월요일 오후에 모여서 식사 후 화요일부터 금요일까지 회사관련 발표, 코딩, 게임, 대화를 나누는 등 재미있고 알찬 행사라서 매년 기대하게 됩니다.
작년 10월에 있었던 행사는 촬영을 조금 했습니다. 처음 촬영해본거라 정작 중요한 컨텐츠는 많이 놓쳤습니다만… 어쨌든 여기서 보실 수 있습니다.
9. 방송, 뉴스레터
여러가지 컨텐츠도 주기적으로 제작하고 있습니다. 저는 영어로 말하는게 힘들고 부끄러워서(…) 직접 참여하진 않고 Newsletter 컨텐츠만 종종 공유하고 있어요.
- React Native Radio (Podcast) - https://react-native-radio.simplecast.com
- React Native Newsletter - https://reactnativenewsletter.com
- React Native Live - https://www.twitch.tv/jamonholmgren (CTO 의 트위치 채널입니다)
10. 수평적 조직
“수평적” 구조의 조직이라면 일반적으로 직급이 없는 회사라고 알고 있습니다. 국내에는 초기에 도입한 대기업들이 책임이 불분명 하다던가 호칭이 어렵다던가 하는 이유로 실패했다는 이야기도 들었는데, 저희 회사는 지금까지 문제가 된 적이 없었습니다.
호칭이야 어차피 이름을 부르면 되고, (~씨, ~님을 안써도 되는 영어… 매우 좋아합니다. 사장님 이름 불러보셨나요? 후후…) 개인 능력의 격차가 조금씩 있더라도 다들 사내에서 공식적으로 시니어 레벨이라서 서로 도와가며 상호보완이 되는 수준이라고 개인적으로 생각합니다. 그게 저희 조직이 수평적으로 유지되는 근간이 되는 것 같아요.
또한, 특별한 경우를 제외하고는 한 프로젝트에는 최소 2인 이상이 투입되는데, 어떤 프로젝트의 Secondary 가 다음 프로젝트에서 Primary 가 되기도 하는 방식으로 팀 구성이 이루어집니다. 물론, 경험이 부족한 Primary 는 누가 시키지 않더라도 뒤에서 다른 동료들이 task & effort estimation 이나 구조 설계, 회의 운영 등 전방위적으로 도움을 줍니다.
심지어는 연봉도 비교적 수평을 이루고 있습니다.(…) 물론 개개인별 연봉이 다르겠지만, 제가 얼핏 알기로는 회사 사장단 세명의 연봉이 직원들과 큰 차이가 없다는 것이고, 직원들도 마찬가지인 것으로 추정됩니다. 큰 회사가 아니라 아기자기 합니다.
11. 적당히 일하라
일을 오래하면 압박이 들어옵니다. 농담이 아니라 초반에는 사장들과 티격태격 한 적도 있습니다. 프로젝트 매니저나 고객의 피드백을 통해서 사장들이 알게되면 Slack 으로 DM 을 보냅니다. 왜 일을 더 했는지…
주중에 집중이 안되는 바람에 조금만 일한 후, 주말 이틀간 작업 후 커밋을 올렸다면 전혀 문제가 되지 않지만, Task 가 예측했던 것 보다 복잡해서 추가로 상당한 시간이 더 걸린 경우가 문제입니다. 최대한 빠른 시일내에 고객과 협의해서 Task 를 세분화해서 스케쥴을 확장한다던가 해야하는데 미리 그런것들이 처리되지 않았기 때문입니다.
그런 합리적인 이유를 수긍하지 않았던 고객은 한 번 밖에 겪지 못했습니다. 해당 고객은 그 뿐만 아니라 여러가지로 문제를 만들었기 때문에… (생략)
물론 예외적인 경우도 있습니다. 프로덕션에서 문제가 생긴 어쩔 수 없는 경우가 대표적이고, 고객이 예정에 없던 시연을 준비해야 하거나 출시일을 앞당기거나 하는 경우인데, 이런 경우에는 추가 업무 시간에 따른 비용을 고객에게 청구합니다. 업무 당사자는 유급 휴일이나 아마존 기프트카드 등을 받습니다. 자주 발생하는 이벤트는 아닙니다.
2년 전에 CTO 가 했던 말
5개월 전 CEO 가 했던 말
이렇게 8시간의 업무시간은 칼같이 지키라고 말합니다. 앞에 잠시 언급했던 “티격태격”을 조금 더 자세히 말씀드리면, 크게 두 가지 입니다.
“내 개인의 업무 역량이 부족해서 다른 동료라면 몇 시간만에 할 수 있는 일을 주말내내 붙들고 있었다”
혹은,
“막상 task 를 시작해보니, 예상했던 것 보다 복잡하고, 어떻게 해야할지 연구와 시도를 하는데 시간이 너무 많이 걸렸다”
…인데, 사장들은 제가 무조건 잘못한 것으로 판단합니다. 도움을 요청하거나, 이야기를 해서 데드라인을 미루는 방법을 써야지 왜 혼자 벽에 머리박고 있냐며… 아무튼 정확히는 제가 문제의 원인이 맞다고 동의를 합니다만, 입사 초창기에는 이상한 책임감 같은 것 때문에 다른 동료에게 부담을 주지 않고 혼자 해결하고 싶은 마음으로 주말을 많이 소비했었습니다. “적게 일하면 몰라도.. 더 많이 일한다는데 왜?”라는 국내 회사에서 일하던 버릇 때문이었던 것 같습니다.
요즘도 “내가 능력이 부족해서 이런거야” 라는 생각으로 업무시간을 초과해서 일을 더 하는 경우가 종종 있긴 한데, 도움 요청은 미리 하고있고, 시간이 일정선을 넘어가면 보고를 하는 등 어느정도 타협을 했습니다. 직접 고객과 이야기를 하는 경우에도 어떤 이유로 무엇을 시도했는지, 어떤 방향으로 진행중인지를 가감없이 보고하는 것으로 인해 거의 모든 경우 공감과 이해를 얻습니다.
이런일이 가능한 이유는 대부분의 경우 고객과 거리낌없이 긴밀하게 소통할 수 있는 문화적 차이의 영향인 것 같습니다. 예를 들어, “경험상 평균 이상으로 편한 고객”과 주간 회의를 할 때는 간혹 팔불출같이 야옹이 자랑을 하는데, 고객은 자신의 반려 멍멍이나 야옹이를 불러서 화답하는 경우가 십상입니다. 주말에 먹은 삽겹살이라던가 직접 담근 김치 이야기도 합니다. 의외로 해당 이야기의 화자는 제가 아니라 고객이었습니다. (K-컬쳐의 확산은 좋은 것입니다.)
12. 업무시간
상기 내용과 어느정도 맥락을 같이 합니다. 8시간을 칼같이 일하는데 어떻게 하는지 떠오르는 것만 요약을 해보겠습니다.
- 미대륙은 시차가 있기 때문에 전역에 흩어진 직원들로 인해 정해진 출근 시간이 없습니다.
- 대략 서부시간으로 오전 9-10시쯤이면 대부분 Slack 채널 “rollcall” 에 “나 왔어요”를 남깁니다.
- 저는 오전 11시-오후1시 쯤 출근을 합니다. (한국시간 오전 3-5시)
- 중간에 볼일이 있으면 이유를 남기고 자리를 비웁니다. “자동차 점검하러 갑니다”, “커피 사러 가요”, “병원 다녀 옵니다” 등등 시간에 구애받지 않고 개인사를 챙깁니다.
- 미리 예정된 회의는 시간에 맞게 어디서든 접속해서 합니다. 실제로 Digital Nomad 생활을 즐겼던 한 직원은 미국 전역을 RV(캠핑카)로 돌아다니며 일을 했는데, 운전하다가 갓길에 주차하고 모바일로 회의에 참석하기도 했습니다.
- 자고 일어나서 아프면 혼신의 힘을 다해서 rollcall 에 “나 아파서 오늘 쉬겠음”을 남기고 무조건 쉬어야 합니다. 그래야 다른 팀원들이 알 수 있으니까요. 일반적으로 이것이 불가능했던 경우는 없었습니다. 다행이에요.
- 대략 5시간 정도 다른 팀원들과 업무시간을 겹치도록 근무하는 것을 권장합니다. 협업과 친목을 위한 아주 약한 권장사항이라 어떤 동료는 밤부터 새벽까지 일하기도 합니다.
- 피치 못할 사정으로 공휴일이나 주말에 일해야 하면, 미리 알려서 일하고 평일 중 하루를 쉴 수 있습니다.
- 아무리 바빠도 미리 정해놓은 휴가 계획은 무조건 지켜야 합니다.
직원들이 솔직하고 책임감 있는 사람들이라서 이런 규칙과 권장사항이 악용된 적은 없었습니다. (적어도 눈에 띄는 경우는 없었습니다 ㅋㅋㅋ;;) 대략 이런 시스템으로 인해 모든 직원들이 회사가 유연하다고 인정합니다. 저도 100% 동의하고, 제가 이 회사에서 계속 일하고 싶은 이유이기도 합니다.
13. 경쟁 회사와의 공생
미국 전역에 상당수의 Development Agency 형태의 회사들이 분포하고 있습니다. Portland 내에도 몇 군데가 있고요.
회사에 입사한지 얼마 되지 않았을때 신기한 일을 경험했습니다. 개발인력이 모두 가동되고 있고 몇 개월 뒤에 시작되는 프로젝트도 몇 개가 예정이 되어있던 상황에 저희 회사에 웹앱 제작을 의뢰한 고객이 있었는데, 사장은 흔쾌히 경쟁회사의 대표와 연락을 해서 연결을 해주는 것이었습니다.
보통 한국에서라면 “우리 지금 일정이 다 차있어요. 네. 감사합니다.” 이런식으로 통화를 하고 끊을텐데, 여기저기 경쟁회사 사람들과 이야기를 나눈 후 고객을 보내는(?) 것이었습니다. 반대로 저희 회사에 세일즈가 부족한 상황에 다른 회사가 도움을 주는 일도 있었습니다.
“동일한 필드 위에서의 공평한 게임”을 하는 생태에 살짝 감명을 받았습니다. 알선에 따른 비용청구 같은 것도 전혀 없었고, 순수하게 서로 돕고 살자는 암묵적인 무언가가 상당히 강하다는 느낌이었습니다.
이 사례가 적용되는 분야가 미국이든 우리나라든 한정적이겠지만, 국내에도 이런 공생관계가 자라날 수 있으면 좋겠다는 바램이 있습니다.
14. 아마도 앞으로는…
대부분의 경우 쉽게 지겨워하거나 질리는 성격인데 8년을 일하면서도 괜찮다고 느끼는 것은, 다양한 프로젝트를 경험하게 되는 특성상 질릴 틈이 생기지 않는 것 때문만은 아니라고 생각합니다. 작게는 개인의 시간/노력 관리가 가능한 환경부터, 크게는 조직문화, 업계의 생태까지 항상 제자리를 지키도록 하는 매력이 있기 때문인 것 같습니다.
저희 회사 뿐 아니라 유사하거나 혹은 더 발전된 문화를 가진 회사들도 있지만, 약간은 괴짜같은 사장들과 능력있고 매너있는 동료들 덕분에 앞으로도 꽤 오랫동안은 이른 새벽에 일을 시작하는 것을 즐길 것 같습니다.