Stay Hungry. Stay Foolish. Don't Be Satisfied.

샌프란시스코 오피스 투어 #4

이 글은 샌프란시스코 오피스 투어 #3에서 이어진 글이다.


Github

IMG_3368

Github은 작년 가을에 meetup이 있어서 한번 가봤지만 얼마 전 Deview에 Github이 왔을 때 이틀 동안 Github 직원들이랑 어울리면서 한국분이 계신 걸 알게 되었다. 이때 이미 샌프란시스코로 갈 계획을 잡고 있었기 때문에 여기서 만난 James Kang님께 사무실에 방문해도 되느냐고 부탁을 해놓은 상태였다. 여행 전에 미리 메일을 보내서 확인하고 그 전주에 휴가를 가셨기 때문에 샌프란시스코에 있는 동안 일정을 확인하고 놀러 갔다.

2014 SF Trip
2014 SF Trip

이날은 비가 약간 왔는데 입구에서 James님께 전화하고 기다리고 있으니 시큐리티가 친절하게 들어와서 기다리라고 했다. 입구에는 백악관처럼 꾸며놓은 곳이 있어서 여기서 사진찍으면서 기다리고 있으니 James님이 오셨다.

2014 SF Trip
2014 SF Trip

1층은 좀 열린 공간으로 당구대나 탁구대가 있고 직원들이 좀 있었다. 왼쪽에는 음료를 먹을 수 있는 Pub이 있고 우측에는 세미나를 할 수 있는 공간이 있다.(작년에 왔을 때 여기서 D3 밋업을 했다.) 세미나 공간에는 방송시설이 잘 되어 있는데 Github에는 원격근무가 많아서(샌프란시스코에 있는 사람은 전체 150명 정도에 30% 정도밖에 안된다) 여기서 회사 행사를 하거나 회의를 하는 경우 온라인으로 방송하기 위해서 방송시설이 갖추어져 있다고 했다.

2014 SF Trip

엘리베이터를 타고 2층에 올라가자 마자 OctoShop이 바로 앞에 있었다. 오피스 투어하다가 갑자기 쇼핑 분위기로 전환됐다. 각자 필요한 Github 굿스를 사느라고 정신이 없었다. 사내에 있는 샵이라서 우리가 물건 찾을 때마다 James님이 왔다갔다하느라 좀 죄송하기도 했다.

이번에 얻은 레어템 2 #github 가방!!! 짐이커서 (쇼핑)백 하나 달랬더니 진짜 백을 줬;;

후드랑 여러 가지를 샀더니만 가방에 들어가지 않아서 백 같은 거 있느냐고 했더니 위처럼 예쁜 백을 줬다. ㅎㅎ 이때 카운터에는 처음 보는 디자인의 Github 티셔츠가 2개 있었다. 위에 아이디가 적혀있는 걸 보니 직원용인 것 같아서 물어봤더니 새 디자인이 나오면 직원들한테 먼저 제공하고 Shop에 내놓는다고 했다.(탐나!)

2014 SF Trip

이건 Github 사무실의 전체 상태를 볼 수 있는 상황판이다. 천장에 센서가 달려있어서 층마다 어디에 사람이 많이 몰려 있는지 한눈에 알 수 있도록 표시하고 있다. 아마 조용한 곳에서 일하러 갈 때 파악하라고 한 것 같고 어떤 메커니즘인지 모르지만 누가 어느 층에 있는지까지 표시가 된다. 프라이버시(?) 문제가 되는지 모르겠지만, 원격 근무가 많고 출퇴근 시간도 딱히 정해져 있지 않다 보니 사무실에 누가 나와 있는지 확인하는 용도가 아닌가 한다. Github의 CEO인 Chris WanstrathZach Holman은 2층에 있다.

2014 SF Trip

오~ 바로 앞에 Zach Holman이 앉아 있다. Github에서 워낙 유명한 사람이라 실제로 보게 되니 신기해서 같이 사진이라도 찍고 싶었는데 너무 집중해서 뭘 하고 있어서 말을 걸지는 못했다. ㅠ 아쉽게도 Bootstrap을 만든 Mark Otto도 이날은 출근하지 않았다. 2층은 넓은 공간으로 가운데 책상들이 몰려 있어서 사람들이 띄엄띄엄 앉아서 일하고 있었고 창가 쪽으로 회의실이나 방이 있었다.

2014 SF Trip

운동할 수 있는 Gym이 있다.

2014 SF Trip

게임을 할 수 있는 방. 사진처럼 클래식한 게임기 외에도 TV에 콘솔 게임기가 연결되어 있어 타이틀도 꽤 많이 쌓여 있었다.

2014 SF Trip
2014 SF Trip
2014 SF Trip

2층은 정해진 자리가 별로 없이 원하는 자리나 분위기에서 일하는 자리가 많고 3층은 주로 정해져 있는 자리가 많고 음악 좋아하는 사람이 많아서 음악을 틀어놓고 일하는 분위기라고 했다.

2014 SF Trip
2014 SF Trip

원격근무자와 화상통화나 연락을 할 수 있게 1인용 회의실이 여러 개 존재했다. 화상통화를 위해 마이크 같은 설비까지...

2014 SF Trip

3층 한구석에 있는 열린 공간.. 이 외에도 골방처럼 혼자 들어가서 어두운 분위기에서 코딩할 수 있는 방도 있었다.

2014 SF Trip
2014 SF Trip

James님이 속해 있는 Github Animation Studios와 얼마 전 오픈한 GitHub Enterprise on AWS의 홍보 애니메이션에 대한 스케치. 최근 이 작업을 바쁘게 하고 오픈한 뒤로 요즘은 여유가 꽤 있는 편이라고 하셨다.

2014 SF Trip

SpeakEasy라고 과거 미국의 금주령이 있을 때의 분위기로 꾸며 넣은 술 먹을 수 있는 공간이다.

2014 SF Trip

비가 와서 나가보진 않았지만, 옥상에도 앉아서 쉬거나 흡연을 할 수 있는 공간이 있었다. Github에서도 2시간 이상 있었는데 James님이 시간 여유가 많이 있다고 하셔서 편하게 여러 가지를 물어봤다.

조직 구조

프로젝트팀마다 매니저가 존재하는데 매니저가 정해져 있는 건 아니고 프로젝트가 바뀔 때마다 돌아가면서 한다.(물론 매니저를 하는 사람이 어느 정도는 정해져 있지만...) 임원 외에도 SteakHolder가 있어서 중요한 의사결정을 해야 하는 경우에는 SteakHolder가 개입하는 방식이다. 프로젝트가 완료되면 다음 프로젝트는 다른 팀에 가서 할 수도 있지만 그러려면 이전 프로젝트는 무조건 완료해야 한다. 어느 쪽으로 이동할지는 매니저가 조정한다.

평가 방식

평가는 1년에 2번 진행하는데 이런 정식 평가도 작년에 처음 도입되기 시작했다. 같이 일하는 사람들은 누가 일을 잘하고 아닌지를 알고 있으므로 평가를 진행하는데 큰 문제 없고 매니저가 평가할 때 Github의 컨트리뷰션 내역을 보기도 하는데 개발팀이 아닌 경우도 있으므로 매니저에 따라 다르다. 평가 자체가 개개인이 경쟁하는 구조가 아니라 다 같이 잘해서 프로젝트가 잘되면 모두가 평가를 잘 받는 구조이므로 다 같이 노력하는 분위기다.

2014 SF Trip

회사 문화

좋은 사람이 일하게 편하므로 예전에는 인격이 좋은 사람 위주로 뽑았는데 시간이 지나다 보니 실력이 없는데 말을 잘하는 사람도 있고 실력이 좋지만, 말은 잘 못하는 사람도 있고 해서 지금은 실력도 같이 보면서 뽑고 있다. 새로 직원을 채용하면 1,2주 정도 샌프란시스코로 불러서 (필요하다면) Git을 알려주고 Github이 어떻게 일하는지 등의 문화를 알려주는 시간을 갖는다. 전체 모임은 1년에 한 번만 하지만 팀별로는 종종 모이기도 하고 1년에 3~4번 정도의 비행깃값은 회사가 지원해 준다. 새로 입사하더라도 원격 회의나 채팅을 하면서 서로 친해지게 된다. 원격에서 일하므로 모든 업무는 async로 진행되므로 채팅보다는 이슈와 이메일을 주로 이용하고 있다. 샌프란시스코에 근무하지 않는 경우 사람에 따라 속도가 뒤처지는 느낌이나 시간대가 다르므로 바로 대응을 해주어야 하는 부담감을 느낄 수도 있는데 그렇지 않도록 배려는 하고 있지만 그게 불편해서 샌프란시스코에 와서 근무하는 사람도 있다.

의사 결정

아이디어를 제안해서 CEO 등 임원이 좋다고 하면 프로젝트로 진행한다. 직원이 100명 이내일 때는 그냥 각자가 하고 싶은 일을 했는데 150명이 넘어가니 관리도 좀 필요하고 비전도 공유할 필요가 생겼다. 현재는 Github.com과 Atom에 집중하고 있는 분위기이다. 현재는 Github.com에 충실히 하려고 노력하고 있고 다른 쪽으로 넓혀가려고는 하지 않지만 그러더라도 다른 스타트업의 아이디어를 가져다가 하지는 않으려는 분위기이다.

2014 SF Trip

마지막으로 생각하는 Octocat 앞에서 다 같이 셀카를 찍었다. James님이 다행히도 여유가 있어서 우리에게 시간을 많이 할애해 주셔서 Github도 자세히 둘러보고 궁금한 것도 많이 물어보고(역시 우리 말로 하니 대화의 깊이가 다른 느낌) 얘기를 즐겁게 할 수 있었다. Github은 항상 "역시 Github"이라는 말 밖에는...

Medium

Medium은 내가 정말 좋아하는 서비스 중 하나이다. 블로그가 있다 보니 Medium에 글을 쓰거나 하지는 않지만, 개인적으로 블로그는 죽고 SNS로 흐름이 넘어갔다고 모두가 생각하고 있을 때 "글쓰기"가 어떤 것인지를 새로 정의해서 판도를 다시 바꿔놨다고 생각하고 있다. Medium의 컨셉이나 글쓰기 창의 모습, 표현되는 글의 형태 등 모두 감탄하고 있고 특히 Crafting link underlines on Medium처럼 세세한 부분에 신경 쓰는 노력에 항상 반하고 있다. Medium에 있는 사람 중 어설프게라도 아는 사람이 전혀 없었지만, 꼭 가고 싶어서 Github의 Medium에서 개발자 목록을 돌아봤다. 누구한테 보내야 허락을 받을 수 있으려나 고민하다가 딱히 아는 이름도 없고 해서 유일하게 아는 이름인 fat에게 메일을 보냈다. fat의 본명은 Jacob Thornton인데 Bootstrap을 만든 사람 중 한 명이다.1

너무 유명해서 대답을 안 해주려나 했는지 보낸 지 5일 만에 괜찮다고 점심때 오면 좋겠다고 했다. 그래서 샌프란시스코에 있는 중에 메일을 몇 번 더 주고받고 날짜를 정했다. Medium을 방문하는 데다가 Jacob Thornton을 만난다는 생각에 이 전날은 많이 설렜다. 그래서 평소보다 준비도 많이 했고 질문리스트를 만들면서 이미 공개된 글을 웬만한 건 다 읽어보고 공개 안 된 부분에서 궁금한 질문리스트를 만들려고 노력했다.

2014 SF Trip

Medium은 유니온스퀘어에서 멀지 않은 Market 스트리트 한가운데 있었다. 시간 맞춰서 9층에 올라가서 두리번거리자 인포데스크에 앉아있던 여직원이 우리보고 들어오라고 손짓을 했다. 들어갔더니 "Jacob 만나러 왔지?"하길래 어떻게 알았느냐니까 Jacob이 말해놨다고 한다. 큰 규모의 회사가 아님에도 입구에서 등록하고 방문증을 받았다.

2014 SF Trip

로비에서 기다리고 있으니 곧 Jacob이 나와서 인사를 했고 좀 지나서 케이시(아마도?)라는 개발자도 같이 나왔다. 사무실 안에 들어가자 끝에 식당이 있었고 이날은 멕시칸 음식이었는데 먹고 싶은 걸 담고 자리에 앉아서 먹으려고 하자 점심에 식당에서 세미나가 있다고 했다. 그래서 반대쪽에 있는 휴게실 쪽으로 이동해서 식사하면서 점심을 먹었다. 사무실을 오랫동안 돌아다녔는데도 Medium에서 Jacob이랑 밥을 먹는다고 생각하니까 좀 긴장이 됐다. ㅎ

밥을 먹고 나서 사진을 찍어도 되는지 물어봤더니 자신도 잘 모르겠다고 몇 미터 앞에 있던 다른 사람한테 가서 사진 찍어도 되냐고 물어봤다. 그 사람은 모니터랑 화이트보드 같은 거만 찍지 않으면 괜찮다고 대답했는데 이 사람이 Ev Williams였다. Ev Williams는 Blogger를 만들고 Twitter를 만들고 지금은 Medium의 CEO이다. 보자마자 Ev인걸 알 수 있었지만(사실 로비에서 기다릴 때 우리 바로 앞에도 서 있었다.) 혹시나 해서 Jacob에게 다시 물어보니 맞는다고 했다. 돌아가서 사진이라도 찍자고 말하고 싶었지만 ㅠㅠ (아.. 에반 윌리암스를 보다니.. ㅠ )

2014 SF Trip
2014 SF Trip
2014 SF Trip

사무실은 2개의 복도를 두고 길게 생겼는데 양쪽으로 식당과 휴게실이 있었다. 가운데는 일하는 공간이고... 전체 직원은 70명 정도인데 뉴욕에 15명 있어서 샌프란시스코에는 55명 정도가 근무하고 있고 개발자는 25명 정도이다. 사무실에 55명 정도뿐이지만 쉐프도 있고 식당도 따로 있었다.

2014 SF Trip
2014 SF Trip
2014 SF Trip

복도를 가운데 두고 일하는 공간이 쭉 있다. 위 사진에 a라고 표시된 방은 타이포그래피를 연구하는 부서로 방문했을 때도 2명이 서서 의논을 하고 있었다. 타이포그래피 전문가 같았는데 온 벽에 타이포그래피도 있었고 최근에 대회에 나가서 수상했다는 타이포그래피도 액자로 걸려 있었다. 점심시간임에도 많은 직원이 책상에 앉아서 일하고 있었고 Jacob이 우리를 데리고 투어를 시켜준다고 한 바퀴 돌면서 부서마다 어떤 일을 하는지 설명을 해주었는데 미리 오늘 방문자가 있다고 전체 공유를 한 것인지 우리가 지나갈 때마다 일하다 말고 웃으면서 손을 흔들어 줬다.(진짜 투어온 기분...) 소개받은 팀은 iOS 팀, 상품 마케팅팀, VC담당, Typography, Data Analyzing, 백 앤드 팀 등이 있었다.

2014 SF Trip
2014 SF Trip

Medium 사무실의 인테리어.

2014 SF Trip

사무실 끝에는 이런 방에 몇 개 있어서 들어가서 혼자 작업을 하거나 쉬거나 할 수 있다.

Medium의 프론트엔드 아키텍처

먼저 부연 설명을 하자만 Medium 서비스를 자세히 보면 Hybrid 렌더링 방식을 쓰고 있는 걸 알 수 있다. Rise of the SPA라는 글에서 Medium이 어떻게 접근하고 있는지를 설명하고 있는데 Single Page Application과 서버사이드 렌더링의 장점을 모두 취하기 위해서 최초 URL 요청은 서버에서 렌더링하고 이후부터는 필요한 부분만 클라이언트가 렌더링하는 방식인데 정말 자연스럽게 잘 동작해서 눈치를 챌 수 없을 정도다.(역시 Medium) Less를 쓰고 Closure Tools를 쓰고 빌드에는 Grunt를 쓰면서 대단한 걸 쓰고 있진 않다고 했다. Hybird 방식이지만 로딩 후에는 SPA 방식을 사용하고 리드 개발자인 Daniel F Pupius이 전에 구글에서 Gamil을 만들던 사람이고 뉴욕에는 Closure Tools 커미터가 있다. AngularJS나 Ember 같은 프레임웍은 쓰지 않고 페이지 내비게이션을 하는 내부 프레임워크만 있는데 이는 나중에 공개할 예정이다.

하이브리드 렌더링을 어떤 식을 적용했는가?

템플릿 엔진으로 Medium에서 만든 soy를 사용하고 있다. 전에 Twitter에서는 mustache를 사용했었는데 soy가 훨씬 좋다고 생각한다. 웹의 백 앤드는 모두 Node.js를 사용하고 있어서 프런트 앤드와 백 앤드가 템플릿을 같이 쓰고 있어서 Hybrid로 SPA를 하더라도 별로 불편한 점은 없다. 백 엔드에는 Golang으로 구현된 부분도 있는데 주로 추천 알고리즘, 친구 추천, 이미지 프로세싱 등에 사용하고 있다.

조직 문화

수평적인 조직으로 구성되어 있어서 아이디어가 있는 경우 제안을 하면 CEO나 Technee가 괜찮다고 하면 업무로 할당받아서 일할 수 있다. 일이 할당되면 그 업무는 사람의 책임이 되고 업무가 끝나면 역할을 바꿔가면서 하기도 하는데 서버에서 프런트 앤드로 바꿔가면서 하기도 한다. 아이디어에 따라서는 디자이너, 상품 담당이 다 모여서 회의를 하기도 하고 일정이나 릴리즈 주기 같은 개념을 별도로 없는 듯하다.

사용하는 도구

Github를 주고 사용하고 가끔 프로젝트에 칸반보드가 필요할 때는 Trello를 쓰기도 한다. 최근에는 Slack도 쓰고 있다.

Professional & personal growth is more important than team stability
- Engineering Values

2014 SF Trip

딱 점심시간에 한 시간 정도만 있었는데 끝나고 셀카봉을 선물했더니 참 좋아하면서 자기도 선물 받았으니 티셔츠라도 주겠다면서 창고 열쇠 찾아서 한참을 돌아다녀서 Medium 티셔츠를 하나씩 줬다.

워낙 가보고 싶었던 회사이면서 만난 사람인 fat이라서 그런지 끝나고 나와서 상당히 흥분되고 고무되었다. 나는 웹을 좋아하기도 하고 현재 만들고 있는 서비스도 콘텐츠 중심의 서비스라서 Medium의 접근 방식에 대해서 인사이트도 많이 얻고 나왔다. 기분 탓인지 업무에 상당히 몰입된 분위기였는데 오피스 투어 중에도 케이시는 중간에 회의 있다고 다시 갔고 Jacob도 곧 일해야 하는 분위기라 시간을 많이 뺏을 수가 없었다. 뭔가 사무실 내에서 서비스에 몰입된게 느껴진다고 할까 하는 그 분위기에 우리 모두 상당히 고무되었고 이는 다른 사무실과는 또 꽤 다른 느낌이었다. 영어에 한계가 있어서 더 많은 대화를 하지 못한 게 아쉬울 뿐이다.

Automattic

Automattic는 PHP 블로그 플랫폼으로 유명한 WordPress의 회사이다. Automattic과 연결된 얘기를 하려면 예전 얘기를 해야 하는데 Socket.IO의 창시자인 Guillermo Rauch와 약간의 친분(?)이 있다. 한 2년 정도전에 Guillermo가 어느 날 메일을 보내서 GSoC의 멘토를 해줄 수 있느냐고 물었고 이후에 채팅도 몇 번 했는데 당시 "난 Socket.IO 구조도 모르는데 내가 어떻게!"라고 속으로는 생각했지만, 직감적으로 이건 뭔가 엄청난 기회라고 생각했고 GSoC까지는 여러 달이 남은 상태였기 때문에 몇 달 죽어라 파면 어찌 되지 않을까 해서 알았다고 했다. 물론 그해 Socket.IO는 GSoC에 선정되지 못한 관계로 무사히(?) 넘어갔다. 그리고 그해 나는 Nodeconf에 갔고 거기서 Guillermo를 한 번 더 만났다. 그 이후 우리는 Instagram에서 사진에 Like를 눌러주는 사이가 되었다.(응?)

아무튼, Guillermo는 LearnBoost를 나와서(아마도?) Cloudup이라는 회사를 창업했는데 이 회사가 작년에 Automattic에 인수가 되었다. Automattic이 아니어도 연락을 했겠지만, 최근에 anarcher님이 바지 벗고 일하면 안 되나요?를 읽고 계속 얘기하셔서 우리 모두 이 책을 한 권씩 사게 된 관계로 Automattic도 가보고 싶었다. Cloudup의 사무실이 어디 있는지는 몰랐던 관계로 그냥 Guillermo한테 메일을 보냈더니(다행히 기억해 줬다... 인스타그램에서 Like를 2년간 누른 게 헛되지 않았어.) 반가워하면서 지금은 덴마크에 있고 이후에는 일본에 갈 예정이라 회사에서 오피스 투어 시켜줄 사람을 찾아봐 주겠다고 했다. 그리고 30분 정도 지나서 Automattic 사무실 정말 좋다면서 오피스 투어 해줄 사람을 찾았다고 하면서 Nathan Rajlich를 소개해 주었다. Nathan도 Cloudup에 속한 개발자인데 Node.js에서는 유명한 사람으로 전 Node.js 커미터 중 한 명이고 지금 Node.js가 크로스 플랫폼에서 빌드가 가능하게 만든 node-gyp를 만든 사람이다.

이렇게 Automattic은 아주 쉽게 연결이 되나 싶었는데 내가 메일을 2번이나 보냈음에도 Nathan이 답장이 없었다. 바빠서 그런가 보다 하면서 계속 조르기도 좀 뭐해서 메일을 안 보내고 있다가 샌프란시스코에서 Medium 방문 일정을 잡고 귀국 이틀 전 마지막 시도라고 생각하고 메일을 다시 보냈다. 내일 마지막 날인데 시간이 되면 방문하고 싶다고 했더니 까먹고 있었다고 미안하다며 와도 된다고 바로 답장이 왔다. ㅎㅎ

2014 SF Trip

Automattic 사무실도 멀지 않은 곳에 있었다. 상당히 큰 2층짜리 건물에 Automattic 간판이 보였다. 입구에서 벨을 누르자 Nathan이 나와서 반갑게 맞아주고 Guillermo와 어떻게 아냐는 등의 얘기를 나누었다.

2014 SF Trip

들어가자마자 왼쪽에는 WordPress 샵이 있었고 직원용 샵인지 Nathan은 여기서 티셔츠를 하나씩 꺼내서 우리에게 주었다.

2014 SF Trip
2014 SF Trip

1층을 라운지라고 소개했는데 체육관처럼 엄청나게 큰 공간에 가운데만 테이블이 몇 개 있고 4명 정도만 앉아 있었다. 한쪽에는 음식을 먹을 수 있는 휴게실이 있었다. Automattic도 대표적으로 원격업무를 하는 회사고 세계 각지에 직원들이 분산되어 있다. 샌프란시스코에는 20명이 있는데 현재는 4명 정도만 출근했다고 했다.(그러니까 이 공간도 20명을 위한 공간이다. Medium보다도 커 보이는데!)

2014 SF Trip
2014 SF Trip
2014 SF Trip
2014 SF Trip

1층이 라운지라서 2층에 사무 공간이 있나 했는데 회의실이 하나 있고 나머지는 휴식할 수 있는 공간이었다. 게임기랑 타이틀이 준비되어 있고 당구대 등이 있었다.(직원이 몇 명 없어서 같이 게임을 할 사람도 없을 것 같은데...) Nathan은 처음 보는 우리에게 친절하게 사무실을 보여주고 회사에 대해서 설명해 주었다.

WordPress 에디터

Cloudup이 주 업무이긴 하지만 WordPress 차기 에디터도 개발하고 있다면서 보여주었다. 약간은 Medium 스타일의 에디터로 단순하게 생긴 WYSIWYG 에디터를 보여주었다. 작성하면서 바로바로 스타일을 수정할 수 있도 동영상 등을 추가하면 에디터 내에서 플레이도 되는 방식이었다. 차후 WordPress에 추가돼서 기본에디터가 될 예정이라면서 contentEditable은 좀 별로라 제대로 만들기가 정말 어렵다면서 불평을 했다.

Cloudup 개발

파일공유 서비스인 Cloudup은 Automattic에 인수된 후에도 계속 만들고 있다. 전부 Node.js로 만들어져 있고 MongoDBRedis를 사용하고 있다. 별도의 배포도구는 사용하지 않고 빌드 스크립트를 작성해서 git pull을 해서 배포를 하고 있다. Cloudup에는 Jenkins나 Travis는 안 쓰고 있지만, 모듈 개발에는 사용하고 있다. WordPress 에디터의 경우 아직 테스트를 많이 작성하지는 않았지만 Travis CI에서 테스트를 하고 있고 여기에 SauceLab에서 크로스 브라우저 테스트를 진행하고 있다. 테스트 프레임워크는 mocha를 사용하고 있다. 크로스 브라우저 테스트의 경우 wrap-command처럼 환경변수로 테스트할 브라우저를 제어하고 있다. 이런 테스트를 포함해서 WebModules와 관련해서 (당시 기준으로)다음 주에 JSConf.ar에서 발표할 예정이라며 그 다음 날 출발할 거라고 큰 가방을 보여주기도 했다.

2014 SF Trip

업무에 사용하는 도구

업무에는 이메일은 약간만 쓰고 대부분의 논의는 WordPress 플러그인인 p2를 이용해서 하고 있다. 대부분의 이슈와 토론이 p2에서 이뤄지고 Cloudup 개발에는 Slack도 사용하고 있지만, 개인적으로는 IRC를 더 좋아하는 편이다. 물론 Github도 많이 사용한다. 매니저는 존재하지만, 수평적인 구조이다.

Node.js 관련

Node.js의 파이가 커지자 여러 회사가 차지하려고 다투고 있다. Node Advisory Board에도 속해 있지만 이러한 상황을 달갑지 않아서 많은 얘기를 하는 편은 아니다. 현재는 Joyent의 TJ Fontain이 거의 혼자 개발하고 있고 대부분의 커미터들이 빠져나왔다. (11월 중순이므로 io.js가 나오지 않은 상황이고 그사이에 달라진 상황은 io.js가 나오기까지... 참고.) TJ Holowaychuk은 Go로 갔지만 계속 Node.js를 할 계획이고 node-gyp도 계속 개발할 예정이다. npm, Inc에서 node-gyp 프로젝트의 소유권을 이전해 달라고 요청했지만, 그것도 거절했다.

2014 SF Trip

Nathan이 키가 엄청나게 크다 보니 키 차이가 엄청나게 나는구나. ㅎ 바쁜 업무시간에 들렸음에도 이것저것 보여주고 궁금한 거에 대해 자세히 답변해 주고 재미난 시간이었다. Nathan은 원래 알고는 있었지만 실제로 얘기해보는 건 처음인데 친절하고 활달해서 얘기하기가 꽤 편했다.

Stripe - Speaker Series: Koen Bok & Jorn van Dijk

원래 이날은 다른 밋업을 가려고 생각했었는데 갑자기 Stripe에서 주최하는 Speaker Series: Koen Bok & Jorn van Dijk 밋업이 생겨서 이쪽에 갔다 왔다. Koen Bok은 프로토타입 도구인 Framer를 만든 사람이고 Jorn van Dijk도 Framer의 디자이너이다. 최근에 Framer에 관심이 많았는데 Framer를 만든 사람이 발표한다기에 망설임 없이 갔다.

2014 SF Trip

발표는 Koen Bok이 진행을 했고 깊은 내용보다는 Framer를 소개하는 발표라서 대용적으로 대단한 것은 없었다.(창시자가 굳이 소개하는 발표를 할 필요가 있나 싶기는 한데...) 발표 후에 Stripe의 진행하에 질문 답변 시간을 가졌고 아무래도 관심 있는 사람들이 왔으므로 협업하는 방법이나 팀에 도입 혹은 디자인팀에 커피스크립트를 가르쳐 주는 방법, 다른 프로토타입과의 비교 등의 질문이 많았다.

2014 SF Trip

마친 Stripe에서 이날의 밋업을 촬영해서 공유했으므로 궁금하신 분을 영상을 직접 보는 게 나을 것 같다. 내가 갔던 밋업의 영상이 저렇게 올라오니까 기분이 색다르기도 하고.. ㅎㅎ

오피스투어 소감

처음 며칠에는 일정이 좀 어그러진 부분도 있고 해서 이번 여행 망했나 싶기도 했는데 중간을 넘어가면서는 매일매일 재밌고 흥미로운 시간이라서 9일이 순식간에 지나가 버렸다. 꽤 큰돈을 들여서 멀리까지 와서는 관광도 안 하고 오피스만 돈 여행이었지만(이런 취향으로 멤버 구성하기도 어려워 보이는데...) 상당히 알차고 재미가 있었다. 뒤로 갈수록 우리 사이에서는 약간의 흥분감과 감동(?) 같은 게 좀 퍼져있어서 숙소에 오면 방문한 회사나 기술에 관해서 얘기를 나누게 되었다. 영어의 부족함을 철저히 느끼면서도 이렇게 우리끼리 소감을 얘기하는 시간도 꽤 즐거웠다. anarcher님의 말대로 9일 동안 5명짜리 회사에서 2,500명짜리 회사까지 스타트업에서 회사가 커가는 과정을 압축적으로 봤다고 할 수도 있다.

물론 우리가 가본 회사들은 실리콘밸리에서도 내로라할만한 잘나가는 회사들이므로 이 회사들을 보고 실리콘밸리가 어떻다고 말하기는 어렵지만, 우리가 방문했던 회사들을 봤을 때는...

  • 실리콘밸리가 인력경쟁이 심하다고 들었는데 회사 분위기나 식당 같은 복지 자체가 매력적인 장점이라기보다는 그러지 않으면 안 되는 기본사항이라는 느낌을 받았다. 사실 Medium 같은 규모는 요리사와 식당을 제공하는 것보다 점심값을 주는 게 더 쌀듯한데 그런 부분은 기본으로 제공하는 분위기다.(일을 더 시키려고 그럴지도...)
  • 조직은 대부분 수평적인 부분이다. 우리나라는 대부분 계층적인 조직구조로 되어 있으므로 회사마다 다 물어봤는데 대부분은 대수롭지 않다는 듯이 bottom to top으로 아이디어가 진행되는 방식을 얘기했다. 너무 당연하다는 듯이 말해서 더 묻기도 어려웠고 나중에는 물으면서도 뭐라고 대답할지도 대충 예상이 됐다. 이미 이들은 이런 식으로 일하는 것이 자리 잡았다는 느낌이라 오히려 우리 상황을 설명하면 그렇게 위에서 일을 시키면 어떻게 일을 제대로 할 수 있는지 궁금해할 것 같았다.
  • 나도 원격업무를 좋아하고 목표로 삼은 것 중 하나이지만 충분히 원격으로도 퍼포먼스를 낼 수 있고 경험해 봤을만한 사람임에도 어느 회사는 원격중심으로 일하고 어느 회사는 출근해서 모여서 일을 했다. 서비스 타입에 따라 다를 수도 있고 회사 분위기에 따라 다를 수도 있지만, 원격이냐 아니냐 자체가 중요한 건 아니라는 생각이 들었다.
  • 실리콘밸리에서도 Github의 위상은 대단하다. 우리가 가본 회사 중에 Github을 헤비하게 쓰지 않는 회사는 단 하나도 없었다.
  • 오픈 소스가 어떤 목적이나 이해타산을 넘어서 당연히 해야 하는 일이라는 느낌이다. 대부분 사내에서 만들 걸 시간이 지나면 오픈 소스로 만들어서 공유하고 기술을 공유하거나 개인적 혹은 팀 차원에서 오픈 소스 프로젝트를 진행하는 것에 거리낌이 없다. 그 가치를 논하는 차원을 이미 넘어서서 당연히 해야 하는 일이라는 느낌이었다. 물론 업무에서 오픈 소스로 진행하는 구체적인 내용은 잘 상상이 안가지만...

즐거우면서 한편으론 생각도 엄청나게 많아진 여행이다. 어쨌든 결론은 영어공부를 빡시게 하자.(응?)

끝!


  1. Bootstrap은 트위터에 근무 중이던 Mark OttoJacob Thornton 둘이서 만들었다 현재 Mark Otto는 Github에서 근무하고 있고 Jacob Thornton은 Medium에서 근무한다. 

2014/12/18 23:59 2014/12/18 23:59

샌프란시스코 오피스 투어 #3

이 글은 샌프란시스코 오피스 투어 #2에서 이어진 글이다.


이제 오피스 투어도 좀 익숙해지고 있었다. 영어로 의사소통도 쉽지 않지만 할 얘기도 있어야 하므로 점점 저녁에 들어오면 다음 날 방문할 회사의 서비스나 기술들을 살펴보고 공개된 기술자료 같은 걸 보면서 질문할 질문 리스트를 작성했다. 아무래도 우리가 부탁해서 찾아간 거다 보니 말할 소재를 잃으면 좀 미안하기도 하고 영어다 보니 현장에서 영어가 팍팍 잘 튀어나오는 것도 아니니 미리 질문을 만들어 놓으니 좀 나았다.

Sourcegraph

Sourcegraph는 Github에서 코드를 분석해서 코드리뷰를 쉽게 해주거나 사용한 프로젝트 등을 알려주는 서비스다. Github 프로젝트의 소스코드를 분석해서 웹상에서 코드의 정의로 바로 이동하는 등 코드 리뷰를 할 때 분석이 쉽도록 해주고 API를 수정할 때 해당 API를 누가 사용하고 있는지 확인해서 알림을 보내거나 예제로 참고하기 위해 특정 라이브러리의 함수를 사용한 곳을 검색할 수 있다. 나도 원래 서비스에 대해서는 잘 몰랐는데 Sourcegraph는 Go 언어를 쓰는데 오픈소스로 공개한 프로젝트도 많고 외부 발표도 많이 해서 Go쪽에서는 많이 알려진 듯 하다.

나는 올 초에 읽었던 5 surprisingly painful things about client-side JS라는 글도 Sourcegraph의 글이라는 걸 이번에 알게 돼서 반갑기도 했다. 원제가 "Why we left AngularJS"라서 글이 당시 많이 퍼졌었다.

2014 SF Trip

사무실은 중심가에서 멀지 않은 곳에 있었는데 입구에서 벨을 누르자. 마케팅 쪽은 담당하고 있는 듯한 Charles Vickery가 내려왔다. 4층에 있었는데 엘리베이터는 공사장 같은 데서나 보던 문이 없이 셔터 같은 걸 내리고 버튼을 누르고 있으면(계속 누르고 있어야 한다는 의미) 올라가는 클래식한 엘리베이터였다. 우리 온다고 미리 티셔츠랑 스티커도 준비해 놨고 전날 점심 메뉴주문을 받아서 시킨 햄버거가 테이블에 놓여 있었다.(친절해!)

2014 SF Trip
2014 SF Trip

Sourcegraph는 이번에 방문한 회사 중 가장 작은 규모의 회사로 직원이 5명인고(4명이 개발자이고 한 명이 사업이나 마케팅을 하는 듯) 길게 생긴 사무실에 가운데는 회의도 하고 밋업도 할 수 있는 공간같이 있고 끝에는 일하는 공간인 방이 있었다. 작은 규모의 스타트업이다 보니 서비스를 어떻게 생각하는지 피드백도 많이 궁금해했고 한국에 돌아가서 얘기도 많이 해 달라고 부탁도 했다.

2014 SF Trip
Sourcegraph의 마스코트이자 CEO인 Quinn SlackMilton


5 surprisingly painful things about client-side JS에 대해서...

정확히는 SPA(Single Page Application)를 버리고 서버사이드 렌드링 100%로 갈아탄 얘기였는데 초기에 제목을 "Why we left AngularJS"라고 하는 바람에 글의 의도가 다르게 흘러가서 고생을 좀 했다. 현재는 React.js를 만족하며 사용하고 있고 전체적으로 보면 서버 렌더링이 95%정도이고 클라이언트 렌더링이 5%이고 의존성은 webpack을 사용 중이다.

업무에 사용하는 서비스나 도구는?

Github을 헤비하게 써서 대부분의 논의는 Github issue를 사용하고 모든 기록도 이슈에 모으는 편이다. 로깅에 Papertrail을 사용하고 그룹 채팅으로 Flowdock를 사용하고 있다.

작은 규모의 회사인데 외부 발표나 오픈 소스 프로젝트를 많이 진행하는 이유는?

자신들도 다른 사람들에게 많이 배웠기 때문에 자신들이 프로젝트를 하면서 배운 것을 다른 사람들과 다시 공유하고 있는 것뿐이다. 그리고 콘퍼런스 등에서 발표하거나 오픈 소스 프로젝트를 진행하면 서비스나 프로젝트에 대한 피드백을 받을 수 있고 서비스를 홍보하기 위한 전략이기도 하다.

Go 버전 관리는 어떻게 하는가?

Godep을 사용하고 있다.

Tagged!

Sourcegraph 사람들은 셀카봉을 주자 특히 신기해하고 재밌어 했다. 전날 급하게 서비스랑 기술을 공부해서 갔지만 꽤 재밌는 시간이었고 우리한테도 잘 대해줬다. 회사 방문해서 친근하게 얘기 나누고 분위기 파악해 보기에는 작은 회사가 더 좋은 것 같기도.. ㅎ

CoreOS

CoreOS는 Docker와 함께 주목받은 컨테이너를 위한 경량 OS다. 난 써본 적은 없고 같이 갔던 anarcher님이 이쪽을 잘 알아서 대충 개념 정도만 알고 있는 정도이다. CoreOS의 Jonathan Boulle올해 Deview에서 발표를 하러 왔었는데 어쩌다 보니 끝나고 자정까지 감자탕을 함께 먹게 돼서 끝나고 11월에 가면 사무실 놀러 가도 되냐고 미리 얘기해놨던지라 메일 보내서 자연스럽게 약속을 잡았다. 이때도 CoreOS를 많이 쓰고 계신 subicura님과 함께 방문했다.

CoreOS는 샌프란시스코 남쪽으로 외진 곳에 있어서 Uber를 타고 이동했다.(돌아올 때는 버스 타고 무서운 동네의 스릴감을 느끼면서 돌아왔다.) 1층에서 벨을 누르자 brian이 내려와서 반갑게 맞아줬다. CoreOS는 2, 3층을 쓰고 있었는데 2층에는 회의실 하나 정도만 있고 사무실은 3층에 있었다.

2014 SF Trip
한쪽에는 일하는 공간이 있다.
2014 SF Trip
반대쪽에는 부엌과 회의실이 있다.

전체 직원은 잘 모르겠지만, 우리가 방문했을 때는 7~8명 정도가 있었고 뉴욕 쪽에도 4명이 일하고 있다고 했다.

2014 SF Trip

사무실을 구경하고는 Jonathan Boulle와 2층 회의실로 내려가서 brian이 서비스나 기술에 대해서 설명해 주는 시간을 가졌다. 우리가 다 개발자들이다 보니 이렇게 시간을 내서 시연을 해주고 설명해주는 게 무척 고마웠다. TV에는 행아웃이 세팅 되어 있었는데 이걸로 컨퍼런스 콜등을 하는 것 같았고 저런 식으로 안 써봐서 모르겠는데(크롬캐스트인가?) 시연도 그 안에서 다 했다.

quay

가장 먼저 보여준 건 CoreOS가 인수한 quay인데 컨테이너 이미지 저장소이고 Docker의 Docker Hub와 같은 포지션을 가진 서비스다. 미리 알고 있던 서비스가 아니라서 새로운 기능인지 아닌지 모르겠지만 타 서비스와 비교하면 이미지의 크기가 아주 작다고 자랑을 하면서 히스토리를 압축해서 다시 하나로 만들 수 있는 squashed image 기능도 보여주었다. 이미지를 Pull 받은 로그도 웹상에서 다 볼 수 있고 사용자별로 권한을 제어하거나 인증 방식을 토큰이나 비밀번호를 사용하도록 세세하게 제어할 수 있다. 물론 모든 기능은 API로 다 열려있고 이미지를 Dockerfile로 만드는 대신 Github 저장소의 webhook과 연결해서 소스를 커밋할 때마다 quay로 바로 가져올 수도 있다.

Base image는 무엇을 사용하는가?

이건 Jonathan과 brian이 역으로 물어온 것인데 우리가 그냥 Ubuntu를 사용한다고 하자 Buildroot를 보여주었다. Buildroot는 CoreOS의 서비스는 아니고 임베디드 리눅스의 이미지를 만들어 주는 도구인데 이미지를 만들 때 커널은 어떤 커널을 사용하고 glib이나 패키지 매니저 등을 다 세세하게 선택해서 이미지를 만들 수 있다. 정확히는 못 물어봤지만, Ubuntu가 호스트 OS로는 무거우니까 Buildroot도 원하는 이미지를 만들어서 쓰라는 의미로 보이는데 프로덕션에 적용하려면 이런 식으로 커스터마이징이 필요하다는 늬앙스를 풍겼다.

Base image 서비스를 만들 생각은 없는가?

Buildroot로 만들 수는 있지만 모든 개발자가 커널이나 저수준 도구까지 다 아는 것은 아니고 buildroot가 아주 편해 보이지는 않아서 베이스 이미지를 만들어주는 서비스를 따로 만들 생각이 없는지 물었다. 필요한 부분이라고는 생각하지만, 자신이 시스템 엔지니어가 아니기도 하고 CoreOS가 해야 하는 부분인지는 잘 모르겠다고 했다.

Toolbox

얘기하다가 지금 얘기해 줄 수는 없지만 CoreOS에서 다음 달에 큰 발표를 할 거라는 얘기를 했다. 우리가 궁금해하면서 힌트라도 좀 달라고 하자 Infrastructure in CoreOS라고만 대답했는데 지금 와서 보면 이게 Rocket이 아닌가 생각한다.(이후에 다른 발표가 또 있을 수도 있고...) 그러면서 대화는 CoreOS의 Toolbox로 넘어갔다. 당시 다음 달의 발표가 뭔지 몰랐으므로 왜 Toolbox로 대화가 이어졌는지는 우리도 모른다. 아무튼, Toolbox를 써봤느냐면서 시연을 했는데 CoreOS 상에서 Toolbox로 이미지를 띄우고 익스포트 한 다음에 이미지를 제거하고는 Toolbox로 컨테이너 안으로 들어가서 호스트와 컨테이너를 왔다갔다하면서 프로세스 등을 확인하는 걸 보여줬다. 계속 물어보면서 우리끼리도 얘기를 나누었지만, 우리 중 아무도 지금 뭘 보여주고 있는 건지 제대로 이해하지 못했다. 디버깅 목적으로 사용하는 것은 확실한데 구체적인 사용례를 이해하지 못했고 Brian은 호스트 OS와 컨테이너 양쪽에 모두 팔을 넣고 있는 것이라고 설명했지만 역시나 이해는 제대로 못 했다. Toolbox를 오랫동안 설명듣느라고 우리는 모두 멘붕에 빠져서 티셔츠 하나 달라는 얘기도 못 했다. ㅠ

etcd

etcd는 0.5에서 많이 바뀔 것이지만 훨씬 안정화되었고 자동 마이그레이션을 지원할 것이다. 0.5부터는 standby 모드가 없어지고 금요일(11월 21일)부터 beta0을 릴리즈하고 매주 금요일에 릴리즈할 계획이다.

회사에서 사용하는 도구는?

Jenkins CITravis CI를 모두 사용하고 당연히 Github은 쓰고 있다. 팀 커뮤니테이션에는 Slack을 쓰고 고객 지원에는 Zendesk를 쓰고 있다.

돈은 어디서...

주력 제품이 오픈 소스이므로 수익은 주로 컨설팅을 통해서 낼 것이고 현재도 소니 플레이스테이션과 진행 중인 부분이 있다. 그 외에도 quay를 통한 private 계정을 통한 수익을 계획하고 있고 기술지원에 대한 계약도 생각하고 있다. 다른 것보다 오픈 소스가 가지는 강력함을 신뢰하고 있다.

2014 SF Trip

앞에 있는 사람이 Jonathan이고 뒤에 있는 사람이 Brian이다. CoreOS에서만 한 2시간 정도 있었는데 시연해주면서 설명을 해주니까 물어볼 것도 많고 재미난 시간이었다. 내가 CoreOS를 잘 몰라서 오히려 아쉬웠을 뿐... 얘기 중에 Brian이 Docker도 그렇고 CoreOS도 그렇고 새로운 것을 만들어낸 것이 아니라 기존에 존재하던 기술들의 좋은 부분을 모아서 컨테이너를 사용하기 쉽게 만들었을 뿐인데 이것이 정말 가치 있는 일이라고 했는데 동감한다.

Docker Meetup

Docker MeetupYelp 본사에서 열렸는데 샌프란시스코 중심가에 위치하고 있었다.

2014 SF Trip
2014 SF Trip
2014 SF Trip
2014 SF Trip

Meetup이다 보니 사무실 안으로는 못 들어가서 세미나실과 식당이 연결된 곳까지만 들어갔다. 피자가 많이 쌓여있어서 배부르게 저녁을 해결했고 Yelp라 그런지 먹을 것도 잘 준비가 되어 있었다. 그냥 Meetup 참가자들도 맘대로 꺼내먹을 수 있었고 생맥주도 제공돼서 편하게 맥주나 따라먹으면서 Meetup을 기다렸다.

Building System Packages With Jenkins And Docker At Yelp

첫 세션은 시간표에는 없던 세션으로 Docker와 Jenkins로 Yelp에서 시스템을 어떻게 패키징했는지를 공유하는 세션인데 아마 Yelp에서 장소를 제공해주다보니 한 세션을 내어 준 게 아닌가 싶다. 다양한 OS나 환경에 대한 패키징을 해야 할 때 이전 같으면 종류별로 서버를 준비해 놓고 빌드했겠지만 Jenkins와 Docker를 이용해서 빌드를 돌릴 때 파이프라인으로 종류별로 컨테이너를 실행해서 빌드했다는 얘기였다.

"Sneak Preview of Docker Clustering" by Andrea Luzzardi and Victor Vieux

Docker에서 직접 와서 새로 도입될 클러스터링 기능을 시연하고 기술을 미리 소개하는 세션이었다. 아직 이 클러스터링 기능은 공개 안 된 것으로 알고 있다. Docker를 몰라서 자세히 정리하기는 어렵지만, 마스터(grand master)가 존재하고 마스터에 클러스터링할 서버를 등록한다. 마스터 서버에 명령을 내리면 여러 호스트에서 컨테이너를 실행할 수 있는데 cpu 1g를 지정하면 cpu 1G를 가진 서버에 컨테이너가 실행되고 메모리를 지정하면 해당 메모리를 가진 서버에서 실행되고 지정한 스펙의 서버가 없으면 오류가 발생한다. 물론 CoreOS의 fleet처럼 태그 기반으로 컨테이너를 실행하는 것도 가능하다.

이후 CloudHQ에서 Flocker를 소개하는 라이트닝 토크가 있었다.

2014 SF Trip

이번 밋업은 끝나고 걸어오면서 anarcher님이랑 대화하는 시간이 더 즐거웠는데 Docker Clustering 발표에 꽤 흥분해 계셨다. ^^ 이는 꽤 흥미로운 부분인데 Docker를 중심으로 한 컨테이너 시장을 키우기 위해서 여러 회사가 협력해서 생태계를 만드는 구조이면서 자세히 들여다보면 Docker의 Docker Hub를 CoreOS가 quay로 뺏으려고 하고 CoreOS의 fleet 기능을 Docker가 클러스터 기능으로 빼앗아 오려고 싸우고 있는 구조이다. 물론 이 싸움에는 Google의 Kubernates도 있다. 같은 목표의 프로젝트를 진행하면서 치열하게 경쟁하는 구조가 오픈 소스 답다는 생각이 들었다. 물론 지금 시점에서는 플랫폼을 쥐고 있다고 볼 수 있는 Docker가 여러 부분에서 이점이 있다고 본다. 트위터가 사진을 지원하면서 twitpic이 날아가 버리듯이 Docker에 기능이 추가되면서 서드파티는 언제든 날아가 버릴 수 있으니... 그런 면에서 CoreOS가 Docker에 Rocket을 쏴버린 건 당연한 움직일지도..

Twitter

Twitter는 내가 정말 좋아하는 서비스라서 대부분 정보를 Twitter에서 얻고 모든 소셜활동을 Twitter를 거쳐 가게 구성해 놨다. 그래서 난 Facebook보다 Twitter의 가치를 훨씬 높게 치고 있다.(보통 내가 좋아하는 서비스는 잘 안 되긴 하지만... ㅠㅠ)

2014 SF Trip

Twitter는 샌프라시스코의 Market 스트리트에 위치하고 있다. 중심가에서는 약간 벗어난 위치에 있는데 샌프란시스코에서 일종의 빈민가 같은 Tenderloin의 경계에 위치하고 있다. 나중에 듣기로는 이곳도 Tenderloin에 속해 있는데 Twitter가 들어오면서 분위기가 많이 달라졌다고 한다. 이전에는 가구건물인 곳을 사들여서 건물이 엄청나게 크다.

2014 SF Trip

올 초에 실리콘밸리의 한국인 : K-Group과의 만남에 초대합니다!행사를 보다가 Twitter에 근무하시는 유호현님을 트위터상에서 알게 되었고 트위터 사무실 가고 싶다는 얘기를 하다가 담에 오면 연락 달라고 하셔서 이번에 연락을 드렸다.(일단 영어로만 얘기하다가 우리 말로 얘기하니까 편해!) Twitter는 회사가 크다 보니 미리 방문자 등록을 해서 입구에서 방문증을 받았다. 이 건물의 5층부터 11층까지 트위터가 이용하고 있는데 올라가서 기다리고 있으니까 유호현님이 나오셨다.

2014 SF Trip
트위터의 점심 메뉴
2014 SF Trip
2014 SF Trip
트위터답게 음식 종류마다 해시태그로 간판을 달고 있다.
2014 SF Trip
2014 SF Trip

회사가 크다 보니 사무 공간에는 못 들어가 보고 식당에만 들어갔다가 왔는데 꽤 큰 식당이 여러 층에 걸쳐서 있었다. 다양한 메뉴가 있어서 취향에 맞게 맘껏 담아서 오랜만에 맛있는 걸 많이 먹었다. 밥 푸고 있을 때 식당에 CEO인 Dick Costolo가 있었다는데 나는 보지 못했다. ㅠㅠ 이 건물에는 2,500명 정도가 있고 개발자는 1,800명 정도 있다고 했다. Twitter는 개발자는 주로 본사로 불러서 같이 근무하는 분위기라고 한다.

조직 구조

수평적인 조직으로 구성되어 있고 매니저가 존재하지는 하지만 윗사람이라는 의식은 거의 없다. 프로젝트별로 매니저가 할당되어 있지만, 프로젝트의 업무는 각 팀 내에서 정하고 이를 매니저에게 알려주는 방식으로 진행되는데 2주 단위의 스프린트로 할 일을 정하고 이를 매니저와 공유한 뒤에 업무를 진행한다. 임원이 정기적으로 전체를 모아 놓고 비전을 공유하는 회의를 하고 있으며 이 회의에서 회사의 비전이나 방향을 공유하고 있다. 평가는 관리자가 따로 없으므로 팀원들끼리 피어 리뷰로 진행한다.

Twitter의 오픈소스 프로젝트

프로젝트를 진행하다가 오픈 소스로 하고 싶다고 매니저에게 얘기해서 동의하면 오픈 소스화가 진행된다. 팀에서 이번 한 달은 오픈 소스 작업만 하겠다고 해도 매니저가 크게 이의제기를 하지 않으면 그대로 진행되는 편이다. 상당한 실력을 갖춘 오픈 소스 팀이 별도로 존재해서 오픈 소스를 진행할 때 라이센스 처리도 해주고 프로젝트도 오픈 소스에 맞게 새로 말아주고 코드 리뷰까지 다 해준다. 트위터는 내부에서 Pants 빌드도구(Python + ant)를 사용하는데 최근에 유호현님이 작업하고 있는 트위터 한국어 처리기의 메이븐 빌드도 오픈 소스팀에서 말아 준 것이라고 한다.(개인적으로 Scala인데 SBT를 안 쓴 이유가 궁금하긴 했다.) 거의 모든 오픈 소스는 트위터 내부에서 사용하고 있는 프로젝트다.

트위터 한국어 처리기

한국어 파서의 경우 대부분 회사가 가지고 있지만, 오픈 소스는 없어서 대부분 회사가 각자 만들고 있었으므로 오픈 소스로 존재하면 의미 있을 것 같아서 공개하기로 했다고 한다.(Scala도 좀 만져본 상태라 공헌을 해볼까 하는데 시간이 잘 안 난다 ㅠ)

2014 SF Trip

직급

트위터는 개발자가 D1, D2, Senior 단계로 되어 있고 그 위에는 임원급 개발자이다. 10년이 지나도 D2로 있는 개발자도 있지만 다들 크게 신경을 쓰지 않는 분위기이고 매니저로 이동하더라도 승진이라고 생각하는 사람은 아무도 없다. 샌프란시스코에서(트위터 말고) 연봉은 보통 12~15만 불 사이에 대부분 형성되어 있는 것 같다.(1억 연봉을 부러워하지만 우리가 3천~5천 정도에 보통 구성되어 있는 거 보면 최하 연봉선이 다를 뿐 간격차이는 비슷한 것 같다. 세금이 40%나 되고 집세 같은 거 생각하면 크게 차이가 나진 않는 느낌적 )

개발 문화

Twitter의 코드 베이스는 대부분 Scala로 되어 있다. Scala는 러닝 커브가 좀 있다고 생각하는데 자바를 잘하는 개발자도 트위터에 입사하면 프로젝트를 2~3개는 진행해야 Scala를 제대로 이해하게 되는 것 같다. 1년에 2번 정도 Hack Week이라는 행사가 있어서 한 주 동안은 새로운 아이디어를 개발한다.

Tagged!

사무공간에는 못 들어가 봐서 아쉽지만 나는 트위터 사무실에 와봤다는 것만으로도 감격스러웠다. ㅠ 우리말로 얘기하다 보니 다른 오피스때와는 달리 회사 분위기나 샌프란시스코 분위기에 관해서도 얘기를 편히 나누다가 점심 이후에 유호현님이 회의가 생기셔서 적당한 시간에 마무리하고 나왔다.

GoSF - Optimizing Go

GoSF - Optimizing Go 밋업New Relic 사무실에서 열렸다. 난 Go는 한번도 안해봤지만 일행중에 Go에 관심있는 사람이 있어서 갔다왔다.

2014 SF Trip

약간 늦게 가서 저녁도 못 먹고(ㅠㅠ) 바로 세션을 들었는데 세션은 Go에서 성능개선 경험을 공유한 "Optimizing Go : Going from 3K req/sec to 480K req/sec per core"와 ORM 혹은 Model Mapper를 만든 경험을 공유한 "Go and SQL"가 있었는데 솔직히 발표가 엉망이었다. 뒤에 앉기도 했지만 발표자료의 글씨가 너무 작은데 색도 배경색과 비슷해서 앞에서는 보이나 할 정도로 아무것도 안 보였고 영어도 다 못 알아듣는데 발표자료도 안보이니 거의 알아듣기가 힘들었다. 두 번째 발표는 영어 발음이 알아듣기 너무 힘들어서 거의 넋 놓고 있었다.

2014 SF Trip
2014 SF Trip

세미나 공간 옆에 있던 New Relic의 로비와 식당사진만 건졌다.


이 글은 샌프란시스코 오피스 투어 #4로 이어진다.

2014/12/17 02:26 2014/12/17 02:26