구글에서의 14년 동안 배운 21가지 교훈

1 month ago 12

  • 코드보다 사람과 문제 해결이 엔지니어 성장의 핵심임을 강조하며, 기술보다 사용자의 문제를 깊이 이해하는 태도가 중요함
  • 협업과 정렬(alignment) 이 개인의 기술적 정답보다 프로젝트 성공에 더 큰 영향을 미침
  • 완벽주의보다 실행과 피드백 중심의 행동 편향이 학습과 개선을 가속함
  • 명료함·단순함·지속가능성이 장기적 코드 품질과 조직 효율을 결정함
  • 경력 전반에 걸쳐 사람, 네트워크, 학습의 복리(compounding) 가 가장 큰 자산으로 작용함

사용자 중심 사고

  • 최고의 엔지니어는 기술이 아닌 사용자 문제 해결에 집착함
    • 기술에 먼저 매료되기보다, 사용자의 고통과 맥락을 깊이 탐구해 해법을 도출
    • 지원 티켓, 사용자 인터뷰, 관찰 등을 통해 문제의 근본 원인을 파악
  • 해결책에서 출발한 접근은 불필요한 복잡성을 낳음

협업과 정렬

  • 정답을 맞히는 것보다 함께 맞히는 과정이 중요
    • 기술 논쟁에서 이겨도 프로젝트를 잃을 수 있음
    • 타인의 의견을 수용하고, 불확실성 속에서 유연하게 사고해야 함
  • 강한 의견, 약한 집착(Strong opinions, weakly held) 태도가 효과적

실행과 학습

  • 행동 편향(Bias towards action) 이 성과를 만든다는 원칙
    • 완벽한 설계보다 빠른 프로토타입과 사용자 피드백이 더 큰 학습을 제공
    • “먼저 만들고, 그다음에 제대로 만들고, 나중에 더 잘 만든다”는 순서 강조
  • 모멘텀은 명확성을 낳고, 분석 마비는 아무것도 만들지 못함

명료함과 단순함

  • 명료함은 시니어리티의 상징, 영리함은 오버헤드임
    • 유지보수 가능한 코드는 2AM 장애 대응 시 읽는 사람을 위한 전략 문서
    • 새로운 기술 도입은 부채로 간주해야 하며, 혁신은 꼭 필요한 곳에만 사용
    • “지루한 기술”이 실패 모드를 예측 가능하게 만들어 안정성을 높임

영향력과 가시성

  • 코드 자체는 당신을 대변하지 않음, 사람이 대변함
    • 조직 내 평판과 추천은 회의와 요약 문서에서 형성됨
    • 자신의 영향력을 명확히 전달할 수 있어야 함
  • 쓰지 않은 코드가 최고의 코드
    • 불필요한 기능을 만들지 않는 것이 유지보수 비용을 줄임

확장성과 호환성

  • 규모가 커지면 버그조차 사용자 의존성이 됨
    • API의 비공식 동작도 외부에서 활용될 수 있음
    • 호환성 유지와 폐기 설계를 제품의 일부로 간주해야 함

팀과 정렬

  • 대부분의 “느린 팀”은 실행력이 아니라 정렬 실패 때문
    • 방향, 인터페이스, 우선순위의 불일치가 병목을 초래
    • 시니어 엔지니어는 코드보다 방향 조율에 더 많은 시간을 씀

통제 가능한 영역에 집중

  • 대기업에서는 통제 불가능한 변수가 많음
    • 재조직, 시장 변화 등 외부 요인에 집착하면 비효율 발생
    • 자신이 통제할 수 있는 품질, 학습, 대응에 에너지 집중

추상화와 이해

  • 추상화는 복잡성을 제거하지 않고 지연시킴
    • 결국 누군가는 하위 계층을 이해해야 함
    • 시니어는 스택의 하부 원리를 계속 학습해야 함

글쓰기와 학습

  • 글쓰기는 사고를 명료하게 만드는 도구
    • 개념을 설명하려다 보면 자신의 이해의 빈틈이 드러남
    • 가르침은 자기 이해를 디버깅하는 과정

보이지 않는 일의 가치

  • 문서화, 온보딩, 프로세스 개선 같은 ‘글루워크’는 필수적이지만 종종 평가받지 못함
    • 이를 시간 제한, 자동화, 산출물로 전환해 가시적 영향으로 만들어야 함

논쟁과 저항

  • 모든 논쟁에서 이기는 것은 침묵한 저항을 낳음
    • 진정한 정렬은 타인의 관점을 이해하고 피드백을 반영하는 과정
    • 단기적 승리보다 협력적 실행력이 더 중요

측정과 왜곡

  • 지표가 목표가 되면 측정 기능을 잃음
    • 코드 라인 수, 속도 등 단일 지표는 쉽게 왜곡됨
    • 속도와 품질을 함께 추적하고, 절대값보다 추세 해석이 필요

심리적 안전과 리더십

  • “모른다”는 말이 팀의 안전과 학습 문화를 만든다
    • 리더가 불확실성을 인정하면 질문과 탐구가 활성화됨

네트워크의 지속성

  • 직장은 유한하지만 네트워크는 지속
    • 관계 구축은 기회, 협업, 신뢰의 기반
    • 호기심과 관대함으로 관계를 쌓는 것이 장기적 자산

성능과 단순화

  • 성능 개선의 핵심은 불필요한 작업 제거
    • 캐시나 병렬화보다 “이 계산이 필요한가?”를 먼저 물어야 함
    • 가장 빠른 코드는 실행되지 않는 코드

프로세스의 목적

  • 프로세스는 불확실성 감소를 위한 도구
    • 위험을 줄이고 협업을 쉽게 만드는 것이 목적
    • 문서화가 일보다 많아지면 실패한 프로세스임

시간의 가치

  • 경력 후반에는 시간이 돈보다 귀중
    • 승진이나 보상보다 삶의 균형과 선택의 의식적 판단이 중요

복리로 성장하는 경력

  • 전문성은 장기적 반복 학습의 복리 효과로 쌓임
    • 글쓰기, 재사용 가능한 구성요소, 경험의 축적이 장기적 차이를 만듦
    • 경력을 복리 투자로 보는 엔지니어가 더 멀리 감

결론

  • 모든 교훈은 호기심, 겸손, 사람 중심의 일로 귀결
    • 실수와 학습을 반복하며 성장하는 긴 여정
    • 초기 경력자는 시간이 지날수록 풍부해지고, 숙련자는 경험을 나누며 계속 발전함

Read Entire Article