2013년 실리콘밸리에 와서 트위터와 에어비앤비에서 일을 하면서 처음 몇 년 동안은 이 회사들이 도저히 이해가 가지 않았다. 어떤 사람들은 오전 10시에 출근해서 오후 5시에 퇴근했으며 점심시간을 두 시간씩 쓰는 사람도 있었다. 그런가 하면 밤낮없이 열심히 하는 사람들도 있었고, 바쁜지 점심도 자리에서 먹고 마는 사람들도 있었다.
회사는 나에게 딱히 일을 시키지 않았다. 나는 이러다 잘리는 것이 아닌가 싶을 정도의 자유를 누렸다. 하루는 우리 집 강아지가 아파서 병원에 데려가야 한다고 이메일을 보냈다. 그랬더니 팀원들이 가족이 최우선이라며 당연히 회사는 안 나와도 된다고 했다. 반차를 쓴 것도 아니었다. 그냥 안 나갔다. 트위터는 어차피 무제한 휴가 정책이 있어서 휴가시 따로 신청할 것도 없긴 했다.
이후로 3년 정도 나는 꽤 열심히 일했다. 매니저는 매주 1:1 미팅을 통해서 내가 할 일을 찾고 있지 못하면 할 일을 정해주었다. 나는 정말 온갖 삽질을 다 하는 엔지니어였다. 컴퓨터 전공을 하지 않고 인문학인 영문학과 문헌정보학을 전공했던 나에게 엔지니어링은 정말 낯선 영역이었다. 그럼에도 매니저와 주위 동료들의 조언과 도움으로 곧 좋은 엔지니어로 성장해갈 수 있었다.
일을 열심히 하는 사람이었지만 아침 일찍 회사에 간 것도 아니었고, 늦게 퇴근한 것도 아니었다. 집에 가서 일을 한 것도 아니었다. “(출근하지 않고 ) 집에서 일하겠습니다”(Work From Home)라고 이메일을 보내 놓고 집에서 하루 종일 일을 하기도 했다.
나는 내 프로젝트를 내 페이스에 맞추어 진행했고, 많은 것들을 만들었고, 그것들을 보고 있으면 자랑스럽고 뿌듯했다. 윗사람이 좋게 평가해주어, 또는 승진을 해서 기쁜 것이 아니었다.
내가 하는 프로젝트 자체가 신나고 내 일을 사랑했다. 내가 잘 못하는 수학적인 부분이나 알고리즘적 부분은 그 분야를 좋아하고 잘하는 동료들이 맡아서 했다. 나는 내 단점을 고치기 위해 노력하기보다, 사용자를 먼저 생각하는 인문학적인 시각과 전체적인 설계를 잘하고 새로운 개념들을 만들어내는 데 능한 내 장점들을 활용해 일을 해나갈 수 있었다.
한 번은 굉장히 권위적인 매니저와 일을 할 때가 있었다. 그 매니저는 내가 해야 할 일을 정해주었고, 언제까지 그 일을 끝내면 내가 승진을 하도록 도와주겠다고 했다. 처음에는 꽤나 끌리는 제안이라고 생각했다. 이제까지 누구도 그렇게 명확하게, 언제까지 무엇을 하면 승진을 시켜주겠다고 한 사람이 없었다.
그 매니저 아래의 사람들은 다들 데드라인(deadline; 마감)을 가지고 일했다. 매니저가 정해준 데드라인에 일을 끝내면 승진도 할 수 있었고, 매니저가 전체 이메일로 크게 칭찬을 해주기도 했다.
데드라인은 늘 타이트하게 정해졌고 모든 팀원들이 정신없이 바빴다. 너나 할 것 없이 바쁘다 보니 서로 도와주는 것은 큰 희생으로 인식되었다. 그리고 바쁘고 서둘러서 하다 보니 최대한 빠른 방식으로 소프트웨어를 만들어갔다. 테스트를 꼼꼼히 하기보다는 “지금은 테스트할 시간이 없다”는 말을 많이 했다.
인문학인 영문학과 문헌정보학을 전공했기에, 컴퓨터공학을 전공한 보통의 엔지니어가 가지고 있는 수학적 엔지니어적 실력이 부족한 나에게는 지옥 같은 시간의 시작이었다.
모든 것을 거의 혼자 해야 했고, 도움을 받으려면 정말 어렵게 허락을 받아서 빨리 질문을 해야 했다. 모두가 ‘바쁘다’를 입에 달고 살았고 서로 피곤해하는 모습을 보면서 동질감을 느꼈다. 그리고 표준화된, 시키는 일을 잘하는 엔지니어가 되기 위해서는 모두 다 비슷한 실력을 갖추어야 했다. 그래서 나는 장점을 살리기보다는 단점을 보완하기 위해 더 많이 노력해야 했다.
그 팀에 있을 때에는 스트레스를 매우 많이 받았다. 데드라인의 압박 속에서 코드의 품질을 희생하면서 빠르게 코드를 쓰기에 바빴다. 그러다 보니 막상 데드라인을 맞추어도 버그 때문에 나중에 더 고생을 하곤 했다. 그리고 1년 후에는 번아웃(Burnout)이 왔다. 더 이상 일을 하기가 싫었다. 이렇게 계속 살면 회사도 일도 너무 싫어질 것 같았다. 늘 즐거운 취미였던 코드 쓰기는 더 이상 내 취미가 아니게 되었다. 일할 때 외에는 코드를 보기도 생각하기도 싫어졌다.
번아웃이 오고 나서 매니저와 1:1 미팅에서 내가 요즘 많이 힘들다는 이야기를 했다. 매니저는 큰 프로젝트를 하고 나면 흔히 있는 일이라며 휴가를 권했다. 그렇지만 내게 필요한 것은 단순한 휴가가 아니었다. 나는 나의 프로그래밍에 대한 사랑을 다시 찾고 싶었다. 더 이상 데드라인에 쫓겨 일을 하고 싶지는 않았다. 그래서 밤새 고민한 끝에 팀을 옮기기로 결정했다. 다행히 회사 내 팀 이동이 매우 쉬웠다. 팀을 옮기고 내 단점보다는 장점을 살리고 동료들의 장점이 내 단점을 보완해주는 팀에서 일을 하게 되었다. 내 단점들은 서서히 보완되어 나갔지만 그것에 집중할 필요는 없었다.
권위적인 매니저 아래의 팀에서는 사람들이 열심히 일했지만 1-2년 후 약속된 승진을 하고 나면 일을 안 하기 시작했고, 경험을 쌓은 시니어 엔지니어들은 코드를 쓰기보다 말로 때우고 신입 엔지니어들에게 일을 주는 일에 집중했다. 경험 있는 엔지니어가 쓰지 않은 코드들은 종종 많은 버그를 가지고 있었고, 그들은 그 한 프로젝트만을 위해서 일했으므로 장기적인 계획이 없었다. 향후 프로젝트에 초석이 될 코드가 되기에는 테스트도 너무 부족해서 처음부터 다시 만들어야 하는 경우도 많이 생겼다.
반면 매니저가 리더로서 할 일을 정해주기보다는 엔지니어들이 일을 잘할 수 있도록 보조해주는 역할을 하는 팀에서는 엔지니어들이 힘들게 일을 하지 않았다. 시간이 쫓겨 열심히 일을 하기보다는 장기적인 측면에서 프로젝트를 평가하고 미래의 프로젝트가 쉬워지는 방법을 택했다. 그래서 신기술을 도입하고 많은 테스트를 거쳐서 향후 프로젝트들의 초석이 되도록 프로젝트를 진행하였다. 일을 열심히 하지 않은 것은 아니다. 각 사람이 자신이 만들고 있는 프로덕트를 사랑했고 멋진 프로덕트가 되길 바랐다. 그래서 장기적인 관점에서 최선의 방향을 선택하려고 노력했다.
무언가를 만드는 것은 정말 재미있는 일이다. 특히 만드는 데에 희열을 느끼는 종류의 사람들이 있다. 레고를 만들거나 게임을 통해 도시를 만들면서 밤을 새우면서 즐거워하는 사람들이 있다. 실리콘밸리는 그런 사람들이 마음껏 자신이 하고 싶은 것을 하게 하는 데 최적화되어 있는 시스템이었다.
어떠한 취미도 일로 하면 재미없다는 이야기들은 상식과 같이 통한다. 그렇지만 실리콘밸리의 기업에서 소프트웨어를 만드는 사람들은 그런 사람들도 많겠지만, 그렇지 않은 사람들도 많았다. 최소한 나는 팀을 옮긴 이후에는 일을 하는 것이 하루하루 재밌었다. 세계인이 사용하는 소프트웨어를 만들어 내놓은 것은 정말 짜릿한 경험이다.
그런데 권위적인 매니저와 일을 하면서 데드라인에 맞추어 일하는 동안에는 일하는 즐거움을 찾기 어려웠다. 일을 과중하게 하다 보니 어떻게 하면 일을 안 할까를 고민하게 되었다. 최고의 프로덕트를 만드는 것보다 열심히 일하는 것 자체에 관심을 두는 사람들 앞에서, 나는 쉬고 싶을 때는 핑계를 찾아야 했고 테스트는 최소한으로 해야 했다. 그리고 한번 만든 코드를 수정하여 더 좋게 개선하는 것은 많은 눈총을 받았다. 시간도 없는데 처음부터 제대로 하지 않았다는 비난을 감수해야 했다.
반면 지금의 팀에서 나는 늘 이미 써놓은 코드를 수정하여 더 좋게 만든다. 이것을 ‘코드 리펙터링(Code Refactoring)’이라고 하는데 이렇게 코드들을 잘 수정하여 다져놓으면 향후에 수정할 때에 오류도 훨씬 줄일 수 있고 개발 시간도 단축할 수 있다. 코드 리펙터링은 기존의 코드가 잘못되어서라기보다는 더 개선할 수 있어서 하는 일이다. 더 읽기 쉽고 관리하기 쉽도록 만들어 놓는 것이다.
소프트웨어는 레고를 쌓는 것과 같다. 아래를 대충 쌓으면 위가 튼튼할 수가 없다. 아래부터 잘 설계하고 수정하고 다지면서 제대로 쌓아가야 큰 작품들이 있는 레고랜드를 만들 수 있다. 빠르게 쫓겨서 만들다 보면 만들다 만 블록들이 가득한 곳이 되어버린다. 그리고 어느 순간 어디서부터 손을 대야 할지 모르는 상황에 직면하게 된다.
유호현님의 브런치에 게재한 글을 편집한 뒤 모비인사이드에서 한 번 더 소개합니다.