구글을 떠나며
(airs.com)- 19년간 Google에서 일하다가 퇴사함
- Go 프로그래밍 언어 개발에 오랜 기간 핵심적으로 기여함
- Go가 널리 사용되며 주요 프로그래밍 언어로 자리잡음
- 프로젝트에서 컴파일러, 빌드 시스템, 제네릭 도입 등 다양한 역할을 수행함
- 환경과 프로젝트 변화로 인해 새로운 길을 찾는 결심을 하게 됨
구글에서 떠나기까지의 과정 소개
- 19년간 Google에서 일한 뒤 퇴사하게 됨
- 대다수 기간 동안 Go 프로그래밍 언어 개발에 행운처럼 참여함
- Go는 Rob Pike, Ken Thompson, Robert Griesemer가 2007년 가을에 시작하였음
- 2008년 6월 팀에 합류했으며 Russ Cox와 비슷한 시기에 참여함
- 뛰어난 인물들과 흥미로운 프로젝트에서 함께 할 수 있었던 점에 큰 행운을 느낌
Go 언어 성장과 기대 이상 성과
- Go가 지난 수년간 방대한 사용을 얻게 됨
- 현재는 모든 프로그래머가 필요에 따라 선택 가능한 ‘일반적 프로그래밍 언어’로 자리잡음
- 초기에는 Go가 다른 언어와 환경에 참고할 만한 아이디어 제공만 해도 성과라고 생각했음
- 보편적 언어로 성장한 것은 초창기 팀이 전혀 예상치 못했던 성과임
Go 프로젝트 내 주요 역할과 기여
- GCC 컴파일러에 Go 프론트엔드 추가하는 것으로 Go 프로젝트를 시작함
- 당시 Go는 Inferno C 컴파일러 기반 자체 컴파일러를 보유함
- 서로 다른 두 컴파일러로 언어 정의의 명확성이 확보됨
- 내부 빌드 시스템과 SWIG 툴에 Go 지원 추가 및 팀 관리 역할도 수행함
- Robert Griesemer와 함께 언어 변경 제안서를 개발하며 Go 1.18(2022)에서 제네릭 도입 기여함
문제 해결 방식과 한계
- 현재와 가까운 미래의 명확한 문제를 빠르게 포착해 해결에 기여함
- 그러나 사람들이 시도하지 않아 직접 경험하지 못한 문제, 예를 들어 Go 모듈 프록시, Go 취약점 데이터베이스 같은 혁신적 아이디어에는 접근이 느렸음
- 프로젝트 성공에 자신만의 방식이 전반적으로 유익했다고 판단함
변화와 이별 결단
- Google과 Go, 그리고 컴퓨터 프로그래밍 환경 모두가 크게 변화함
- 최근 1년간 본인은 Google의 Go 프로젝트에 더 이상 적합하지 않음을 느낌
- 새로운 단계로 나아가야 할 필요성을 인식함
앞으로의 계획 및 Go에 대한 생각
- 여전히 Go에 대한 흥미와 애정을 유지함
- 어떤 프로그래밍 언어도 완성된 채로 남아 있지 않으며 환경 변화에 맞춰 진화가 필요함
- Go와 같은 풍부한 표준 라이브러리를 보유한 언어는 특히 그 변화에 민감함
- 당분간 휴식을 취하나, 향후 Go에 다시 기여하길 희망함
Hacker News 의견
- 내가 Google에서 일할 때, Ian Lance Taylor가 무작위로 배정된 코드 리뷰어 중 한 명이었음. 그는 항상 예의 바르고, 단호하면서도 정보를 잘 알려주는 사람이었음. Taylor와 프로젝트에 대해 좋은 인상을 받았고, YC가 창업자에게 고객 지원을 직접 하라고 조언하는 것과 비슷한 느낌이었음. 정말 솔직하게 말하면, 그의 이니셜이 내 코드 리뷰에 나타나는 것만으로도 짜릿했음. golang에 대한 모든 노력에 감사함
- 이런 칭찬을 듣다니 참 멋진 일임. 누군가를 ‘예의 바른 사람’으로 기억하는 것이 신선하게 느껴짐. 나 또한 삶에서 정말 중요한 교훈을 얻었음. 똑똑하다든가, 10배 능력자라는 평판보다 예의 바르고, 친절하고, 좋은 사람이라는 평가를 받는 것이 훨씬 좋다는 것임
- Go에 “별볼일 없는” 외부 기여자 입장에서 말하자면(여섯 개 정도의 제안과 PR을 작업함), 끝내 떨어지거나 거절된 건에 대해서조차도 마찬가지로 평가할 수 있음. 예의 바르고, 단호하며, 정보를 주고, 호기심도 있었음. 이 프로젝트에 기여한 경험이 굉장히 좋았고, Ian이 큰 부분을 차지했음. Go처럼 큰 프로젝트에서 이런 경험을 주는 것은 대단한 일임
- 나도 Go의 코드 가독성(Readability) 프로세스가 참 마음에 들었음. 이 과정을 통해 훨씬 더 나은 프로그래머가 되었음. 예전에 Google에서 Python 코드 가독성 승인도 받아봤고, “이 큰 변경(CL)을 맡아서, 과정 끝에 좋아지면 통과”하는 식의 방식은 Go만큼 유용하지 않았음. Go만의 규칙을 만들어 적용한 것이 내게 큰 도움이 되었음(물론 새벽에 호출 받아서 그냥 이번 코드만 빨리 체크인하고 자고 싶다고 생각하긴 했지만)
- 내 경험도 비슷하지만, 대상은 내 마지막 c++ 코드 가독성 변경 당시 Titus Winters였음. 그의 코멘트 중 하나에 대해 의견을 내보기도 했음. 정말 뭐랄까, 정말 실력이 뛰어난 사람이 내 작업을 인정해줬다는 것이 멋진 느낌이었음
- Ian이 Go 커뮤니티, 그리고 더 넓은 프로그래밍 커뮤니티에 해준 서비스는 아무리 강조해도 부족함. gccgo뿐 아니라 gold linker도 만들었고, 컴파일러 툴체인에 관한 블로그도 많이 썼으며, gcc 코드베이스의 엄청난 부분을 관리함. 그리고 아마 내가 모르는 더 많은 공헌이 있을 것임. Ian과는 여러 차례 이메일을 주고받을 기회가 있었는데, 항상 내게 큰 영감을 줬음. Google에서 바쁜 와중에도 내 이메일이나 패치에 항상 통찰력 있는 피드백을 줬음. Go라는 언어 자체에 대해선 복잡한 감정이 있지만, Ian이 빠질 경우 언어에도 악영향이 있을 거라고 확신함. 원래 Go 팀은 Bell Labs 시절의 분위기가 났음 — 컴퓨터를 속속들이 이해한 몇몇 사람들이 어셈블러, 링커, 두 개의 컴파일러, 언어 사양, 문서 생성기, 빌드 시스템, 엄청난 표준 라이브러리까지 모두 다 만들었음. 지금은 Google의 중요도가 커지면서 좀 더 밋밋하고 기업적인 느낌이 강해졌음. Ian의 사임 메시지에서 이런 문화적 변화가 느껴졌고, 어떤 계기가 있었는지 궁금함. Ian이 충분히 쉬고, 이후 어떤 프로젝트든 따라가며 지켜볼 예정임
- go의 컴파일러 툴체인들이 잘 작동하는 것이 중복성과 기능 검증 면에서 매우 중요하다고 생각함. 그런데 궁금한 점이 있는데, 실제로 사람이나 조직들이 gcc-go를 특정 용도로 사용하는 경우가 있는지 궁금함
- "Gooogle도 변했고, Go도 변했고, 전체 프로그래밍 환경도 바뀌었음. 지난 1년 동안 이젠 내가 Google에서 Go 프로젝트에 더 이상 적합하지 않다는 것이 분명해졌음. 떠나야겠음" 이 부분이 좀 놀라웠음. 이런 이야기는 생략하거나 다른 이야기로 바꿀 수도 있었을 텐데, 굳이 이렇게 썼다는 건 뭔가 진짜 이유가 있다고 생각함
- 최근 몇 년간 Google에서 상위 엔지니어들이 많이 떠나는 것을 봤음. 관리자들의 압박이 엄청나게 커졌고, 신뢰는 엄청 줄었음. L7 이상 엔지니어들은 “충분한 영향력”을 가지려면 AI 프로젝트로 이동해야 하는 상황임. 압박이 세지면서 부서내 다툼도 심해지고, 단지 신뢰만 가지고는 부족하고 반드시 관련 문서 맨 위에 이름이 있어야 하게 됨. 2023년 이전에는 L7/L8급 엔지니어가 회사를 떠나는 이유가 대개 새 기회나 은퇴였는데, 이제는 대부분 업무 환경에 지쳐서 떠나고 있음. 정말 엉망임
- 만약 내가 말한다면… 실질적인 기반은 이미 열정적인 엔지니어들이 다 닦아놓았음. 지금 빅테크는 그저 돈을 벌러 가는 곳이고, 장기 비전에 관심이 없음. 열정도 상상력도 없고 외우기로만 입사하고 PIP나 해고된 뒤 다른 대기업을 전전함. 이런 사람들로 가득함. 옛날 구글 같은 스타트업에서 더 나은 기회가 있을 수 있음
- Sundar Pichai처럼 별로 뛰어나지 않은 인물을 구글 수장에 올린 순간, 구글을 단순 수익 창출 기업으로 바꾸고 원래 문화를 없애려는 의도가 명확해졌음
- 이런 “FAANG에서 20년 일하다 떠남” 글을 볼 때마다 느끼는 건, 사실 그동안 회사가 수십 배 성장한 덕분에 정말 부자가 되었고, 이제는 막상 출근하기 싫으면 그냥 출근 안 해도 될 만큼 돈이 많아져서 떠나는 것이라는 점임
- 엔지니어링과 박사급 연구자에 대한 존중이 사라졌고, CEO가 이윤과 매출, 상업성에만 집착함. 언급된 대로, Sundar Pichai의 비전 부족과 초기 구글 문화 유지에 관심 없다는 점이 문제가 되었음
- 두 번째 읽어보니, “Gooogle”의 o가 하나 더 많은 건 오타라기보다는 예전 구글 검색 결과 페이지에서 o가 많아지는 페이지네이션을 의도적으로 언급한 것일 수도 있음
- 놀랍다고 느끼는 점이 오히려 의아함. 구글이 Emerald Sea 때 완전히 변했다는 것은 전 Googler들에게 이미 잘 알려진 사실임. 이렇게 큰 조직도 곳곳에 괜찮은 팀이 남아 있긴 하지만, 이미 10년 넘게 정체와 쇠락의 길을 걷고 있음
- 경영진이 본격적으로 압박을 가하기 시작했다고 봄. 이제는 기술적이지 않은 관리자들이 대세임
- 지난 10년간 이런 이야기가 계속 반복되어 왔음. 2010년대 후반 대규모 채용과 2020년 초반의 채용 열풍으로 극히 뛰어난 인재들이 희석된 이후 구글은 지속적으로 하락세임. 이런 엔지니어 평균 수준의 심각한 하락은 보상과 복지, 그리고 결정적으로 자율성의 감소로 이어짐. 관료주의와 정치 싸움이 만연함. 10년 전 내가 떠날 때만 해도 20% 프로젝트 시간으로 Gmail 같은 서비스를 만들 수 있다는 생각 자체가 말이 안됐음. 20% 규정도 거의 사라지고, 형편없는 PM들이 자신의 영역 다툼에 새 프로젝트를 다 죽였음. 이제 구글은 B, C, D급 인재들로 가득 차서 완전히 회복 불가능하며, Intel이나 Cisco, IBM의 전철을 밟고 있음. 몇몇 뛰어난 인재들이 평균적인 직원들 사이에서 점점 무너지는 모습임
- Ian은 Yale 출신에 이미 수십억대 자산가일 가능성이 높으며, 대부분 일반인들에게 특별한 연민을 가지지 않을 것임. FatFIRE 목표 금액을 달성해서 떠난 것일 뿐임
- 2016년에 Google에서 일할 때, 팀 전체가 golang을 썼음. 첫 프로젝트하면서 Ian에게 여러 번 코드 가독성 승인을 받았음. 어느 날 승인과 함께 몇 가지 보완 요청이 있었는데 내가 확인하지 못한 채 변경을 반영함. Ian이 다시 메시지를 보내서 보완하라고 알려줬음. 나중에야 그가 core Golang 개발자 중 한 명이었음을 알게 됐음. 그는 꼭 그렇게까지 할 필요 없었는데도 친절하게 대해줬고, 그 덕분에 정말 기억에 남음. 실제 사용되는 방식을 직접 보고 핵심 문제를 찾아내는 데 큰 시간을 투자한 게 참 존경스러움
- Go 개발자로서, 이 언어와 커뮤니티에 대한 당신의 거대한 기여에 깊이 감사함을 전하고 싶음. 당신의 작업 덕분에 Go가 지금처럼 생산적이고 즐거운 언어가 됐고, 나를 포함한 수많은 엔지니어들에게 더 나은 소프트웨어를 만들도록 영감을 주었음. 헌신에 감사드리며 차세대 Go 개발자들에게 새로운 길을 열어주셔서 고마움. 앞으로의 행보를 응원함
- "Gooogle도 변했고, Go도 변했고, 컴퓨터 프로그래밍 환경 전체도 변했음. 지난 1년 동안 내가 더 이상 Google의 Go 프로젝트에 맞지 않는다는 것이 분명해졌음. 떠나야겠음" 이 대목에 더 설명이 있었으면 좋겠음. 정말 실질적인 변화가 있었고, Ian이 이를 눈치챈 것으로 보임
- 아마 더 AI스럽게 만들어달라고 했을 것 같음. “Go 컴파일러 오류에 Gemini를 추가하든지, 아니면 떠나든지” 같은 요구였을 수 있음
- 굳이 더 설명이 필요한가 싶음. 이미 대외적으로 잘 알려진 사실임. 반독점 문제, 단기 이익만을 쫓는 리더십, 오래도록 기술 리더였던 회사가 Microsoft/IBM식 평범한 기업으로 바뀜, 더이상 트렌드를 선도하지 않고 그저 유행(AI 포함)에 따라가는 회사로 전락함, 논란 많은 정부와 협력함으로써 “Do no evil”이라는 원칙도 버림, 더이상 참을 수 없는 거짓말과 회의적인 분위기에 지쳐서, 스톡 옵션 만기 시점에 맞춰 떠난 것임
- 여기서 핵심 질문은 2005년의 Google 같은 회사가 오늘날에도 존재하는지임. 정말 OpenAI가 그 역할을 하는지, 아니면 존재하지 않는 것인지 궁금함. 또, 많은 엔지니어들이 황금기로 기억하는 그 시절이 실제로 얼마나 오래 지속됐는지도 의문임
- 내 생각에는 2005년의 Google은 다시는 존재할 수 없음. 당시 기본 기술이 급속도로 강력해졌고, 그 시기에 창의적으로 투자한 회사들은 엄청난 부자가 됐음. 2022년에 Google에 입사해서 곧 떠났지만, 신입이 보더라도 이미 황금시대가 끝난 것뿐만 아니라 그 이후 시대마저 끝나가는 게 명확했음. 분위기가 더 나은 제품을 만들자도 아니고, 그저 "문제만 일으키지 말고 1~2% 개선만 해라"에 가까웠음
- Google 같은 회사는 이 시대에 존재하지 않음. Bell Labs처럼 동시대에 견줄 만한 팀 자체가 없음
- 존재하지 않음. 새롭게 만들 기회는 있음. 지금 이 세대 회사들의 문제는 기술력이 아니라 문화임
- 구경꾼 기준으로, 황금기는 대략 2013~2014년쯤 끝났음. 테크 기업 문화에 자본주의가 너무 만연해 더이상 그런 혁신과 실험 정신이 다시 일어나기 어려움. 이제는 그저 기존 기계에 기름칠하는 수준임
- 그런 회사는 아직 없음 / 우리가 아직 볼 수 없음. 1조 달러 이상 성장하는 산업, 그리고 검색(Searh)처럼 필수 툴을 제공하는 회사를 예측하고 있는 것임
- 여전히 Google임
- 흥미로운 점은, 블로그에 사실 거의 글이 없음. 정말 읽어보고 싶은 글은 “The 2016 Election”의 후속 글임
- 핵심 인물들이 chrome과 golang 프로젝트에서 떠나는 걸 보면, 경영진이 잘 못하고 있음이 분명함
- 다른 지표들도 있을 수 있지만, 이분이 19년이나 근무한 뒤에 떠나는 것 역시 무시할 수 없음
- AI에 모든 것을 걸고 있음. 이것이 생존이 걸린 싸움이라는 것을 경영진도 알고 있음
- 음모론을 만들려는 건 아니지만, 이번 일이 Ian Hickson이 Google/Flutter팀을 떠난 것과 관련 있을지 궁금함. Hickson은 구체적으로 지적했음. 근본적인 문제는 Sundar Pichai의 비전 없는 리더십과 초기 구글 문화 유지에 관심 없다는 점, 그리고 무능한 중간 관리자들의 확산임. 예를 들어 Jeanine Banks는 전략이 있다고 하지만, 수년간 설명을 듣고도 실제로 무슨 의미인지 단 한 번도 파악할 수 없었음. 팀의 전문성과 전혀 상관없이 엔지니어를 마치 부품처럼 대체했고, 피드백도 전혀 수용하지 않았음. 다른 조직은 더 정치적으로 노련한 리더가 Banks를 적당히 대하며 피해가도록 하는 법을 익혔다고 들음. 최고의 구글을 겪어본 입장에서는 이 새로운 현실이 참담하게 느껴졌음
- 엔지니어를 비인간적으로 자원(리소스)로만 취급해 팀원들 의사와 상관없이 역량에 맞지 않는 곳에 배치함. 그녀만 그런 게 아님. 다른 임원도 핵심 Python팀 전체를 해고하고 더 낮은 급여의 TypeScript 팀으로 교체했으며, 그마저도 더 급여 적은 로컬의 신규 인력으로 다시 충원함
- 그녀의 부서가 “전략”이 있다고 하는데, 실제로는 아무리 설명을 듣고 들어도 무슨 의미인지 전혀 모르겠었음. 이건 내 경험에서도 일치함. Google의 상위 중간관리자에서 VP, 때로는 SVP까지의 커뮤니케이션은 압도적으로 이해할 수 없고, 모든 것을 말하는 듯 하면서도 아무것도 말하지 않음. 변화가 크다고 하면서도 아무 변화 없다고 강조하는 식임. 내 생각엔, 방향 제시나 비전 혹은 목표를 위한 언어가 아니라, 다른 관리자들을 상대로 인상 남기기 위한 포장 언어임. 평과에서 공로를 챙기기 위해서 사용함. Google에서 “5초 이내에 본인이 어떤 팀에 속해 있는지 대답 못하면 구글러다”라는 농담이 있을 정도임. 엔지니어는 굉장히 뛰어나고(이 때문에 가짜 실력 콤플렉스도 많음), 실제로는 방향 감각 없이 각자 다른 방향으로 가는 느낌임. 대기업 운영을 어떻게 해야 할지 모르겠지만, 일단 쉬운 언어로 설명부터 하는 게 시작일 듯함. 심지어 이런 기업 언어를 해석하는 사람들조차 공통의 현실을 만들기 힘든 것 같음
- 사람은 회사에 입사하지만, 그만두는 건 부당한(혹은 나쁜) 관리자 때문임
- 이런 경험을 나눠줘서 고마움. 내 업계에서 가장 큰 두려움 중 하나는 초기 Google 같은 회사를 다시는 보지 못할 수 있다는 것임. Pichai가 회사 대표가 된 시점에서 이미 이름도 바꿨어야 했을 정도임. 이제 대부분 구글 출신들은 전혀 다른 조직 하에서 근무했음
- 역시, 사람을 “자원”으로만 여기는 배치 정책임
- 내 경험은 Google은 아니지만, 비슷한 규모의 미국 회사였음. 전략에 대한 이야기는 너무나 똑같이 적용됨. 비효율적인 중간 관리에 대한 비판도 동일함. 내부적으로 그런 상황을 만들어낸 정치를 부르는 공식 용어가 있지만, 여기서 쓰면 무조건 비난받을 것이기에 적지 않겠음. 전략을 갖지 않는 정책, 프로젝트 결과 측정도 하지 않는 정책, 직무와 책임 개념 없애고 “모두가 필요에 따라 뛰어들어야 한다”는 식의 체계임