메타와 구글에서 배운 것들

Jayson·2024년 12월 25일
post-thumbnail

이번 블로그 글에서는 메타, 구글, 현재는 몰로코에서 시니어 개발자로 활동하고 계신 이한결님의 경험과 인사이트를 공유하고 정리해보려고 한다.

이한결님은 스탠포드 대학교에서 컴퓨터공학 석사를 마치신 후, 메타와 구글에서 테크 리드를 경험하셨다. 현재는 몰로코에서 시니어 개발자로 활약하고 계신다.

이번 인터뷰를 정리하면서 많은 유익함을 느꼈다. 개발자로 성장하는 과정에서 마주할 고민들을 간접적으로 경험해볼 수 있었고, 협업을 통해 슬기롭게 팀의 성장을 도모하면서 개인의 성장도 함께 이루는 방법에 대해 깊이 생각할 수 있었다. 특히, 효과적으로 시간을 관리하고 사용하는 방법 그리고 기록에 대한 인사이트가 인상적이었다.

최고의 테크 회사들이 시니어 개발자들에게서 바라는 모습

시니어 개발자로 성장하면 단순히 코드를 잘 작성하는 것을 넘어 다양한 책임과 역할을 수행해야 한다. 최고의 테크 회사들은 시니어 엔지니어들에게 다음과 같은 역량과 태도를 기대하기 때문이다.

설득과 근거 기반 진행

시니어 개발자는 설득하는 일이 많다. 단순히 자신의 아이디어를 제안하는 것을 넘어, 명확한 근거를 가지고 팀원들과 이해관계자를 설득해야 한다. 이는 엔지니어링뿐만 아니라 프로세스를 설계하고 운영하는 역량도 포함된다.

매니저 vs 엔지니어의 역할

회사는 높은 레벨의 엔지니어에게 더 큰 범위의 진행 사항에 대해 책임지기를 기대한다. 예를 들어, 프로젝트의 성공적인 결과뿐만 아니라 팀의 성장, 조직 내 기술 방향성 등에도 기여하는 것이 중요하다.

메타(Meta)의 4가지 엔지니어 원형

메타에서는 시니어 엔지니어의 유형을 다음과 같은 4가지로 나눈다:

  1. 코드 머신(Code Machine): 뛰어난 코딩 능력을 바탕으로 문제를 해결하는 엔지니어.
  2. 프로덕트 엔지니어 하이브리드(Product Engineer Hybrid): 사용자 관점에서 제품을 설계하고 개발하는 엔지니어.
  3. 제너럴 리스트(Generalist): 폭넓은 기술 스택과 다방면의 문제를 해결할 수 있는 엔지니어.
  4. 아키텍트(Architect): 대규모 시스템 설계와 아키텍처 구축에 전문성을 가진 엔지니어.

매니저가 인턴에게 들려준 비유

시니어 개발자로 성장하는 과정은 건축을 배우는 것과 비슷하다. 매니저가 인턴에게 들려준 비유를 통해 이 성장 단계를 살펴보자:

  1. 인턴 단계: 방 한쪽 벽면에 선반을 만드는 법을 배우는 단계.
  2. 초급 엔지니어 단계: 도움 없이 선반을 만들 수 있는 단계.
  3. 중급 엔지니어 단계: 선반 제작을 책임질 수 있는 단계.
  4. 시니어 엔지니어 단계: 벽면 전체를 담당할 수 있는 단계.
  5. 리드 엔지니어 단계: 건물 한 층을 설계하고 완성할 수 있는 단계.
  6. 최고 엔지니어 단계: 건물 전체를 책임질 수 있는 단계.
  7. 더 높은 단계: 도시 전체를 설계하고 관리할 수 있는 단계.

책임의 중요성

책임을 맡게 되면 그 안에서 자유롭게 일할 수 있는 권한이 주어진다. 이는 신뢰를 기반으로 하는 성장의 핵심이다.

코드 머신의 조건

코드 머신이 되려면 단순히 코딩 실력만으로는 부족하다. 시스템과 사람에 대한 깊은 이해가 필요하다. 기술적인 능력뿐만 아니라 팀워크와 조직의 목표를 이해하고 협력하는 태도가 중요하다.

커리어를 시작하는 개발자가 가져야 하는 마인드셋

개발자로 커리어를 시작할 때, 올바른 마인드셋을 갖추는 것은 성공적인 성장을 위한 중요한 요소이다. 다음은 신입 개발자가 참고할 수 있는 실질적인 조언들이다.

도움의 활용: 혼자 해결 vs 도움 받기

  • "내가 하나의 테스크를 도움 없이 끝내고 싶다"는 마음은 자연스럽지만, 초반에는 도움을 받고 빨리 끝내는 것이 더 효과적일 수 있다.
  • 매니저가 자주 강조하는 말처럼, 결국 중요한 것은 팀의 성공이다.
  • "괜찮습니다"라며 도움을 거절하면, 예상치 못한 문제가 발생할 수 있으니 적극적으로 도움을 요청하자.

초반 단계에서 중요한 자세

질문의 중요성

  • 초반에는 질문을 많이 하는 것이 중요하다. 문제를 명확히 이해하고 해결책을 찾는 능력을 키우자.
  • 첫 1~2개월 동안 질문이 많아도 괜찮다. 시간이 지나면서 적합한 질문을 할 수 있는 역량을 갖추면 된다.

기대치 관리와 커뮤니케이션

  • 일이 언제 끝날지 예상하는 능력은 매우 중요한 스킬이다. 이를 키우기 위해 다음 방법을 참고하자:
    • 파이 룰: 예상 시간을 과소평가하지 않도록 주의하자. 어떤 교수님의 조언처럼, 내가 생각한 시간에 3.14를 곱한 값이 실제 소요 시간에 가깝다.
    • 하루 정도 걸릴 일이라고 생각된다면 3일 정도로 예상치를 설정하자. 이는 초반에 일에 대한 이해도가 낮아서 생기는 자연스러운 현상이다.
    • "얼마나 걸릴 것 같냐"는 질문을 받을 때, 즉답하지 말고 시간을 가지자:
      • "조사 후 오늘 밤, 퇴근 전, 혹은 내일 아침에 말씀드리겠다"고 답변하자.
  • 회사에서는 기대치를 맞추는 것(Expectation Alignment)이 매우 중요하다.

기록의 중요성

  • 사소한 것이라도 메모를 통해 기록하자. 노트를 적극 활용하여 필요한 정보를 정리하자.
  • 매주나 매 분기마다 스스로 복기(회고)를 하는 습관을 들여보자. 이를 통해 자신의 성장 과정을 점검하고 개선할 수 있다.

초보 개발자에게 주는 조언

  • 질문하기를 두려워하지 말자. 질문을 통해 배우는 것은 성장의 지름길이다.
  • 3개월이 넘어가면 사소한 질문은 스스로 해결하는 습관을 들이자. 이 시점에는 기본적인 문제 해결 능력을 갖춰야 한다.
  • 초반에는 많은 질문을 통해 학습하며, 시간이 지나면서 자립적인 문제 해결 능력을 키우자.

업무 일기

페이스북 매니저들은 비교적 젊고, 업무 파트너 같은 느낌을 주는 경우가 많았다. 그분들은 현업에서 쌓은 실질적인 경험과 노하우를 바탕으로 일하는 모습이 인상적이었다. 다만, 특정 형식이 정해져 있지는 않았다. 반면, 구글에서 만난 매니저는 50대 정도로, 매니지먼트에 대한 깊은 통찰을 가진 분이었다. 그는 관련 책, 세미나, 그리고 세미나 운영 구조에 대해 깊이 고민하는 분이었다.

그와 업무 일지에 대해 이야기를 나눴는데, 그가 보여준 업무 일지 샘플은 크게 세 가지 섹션으로 구성되어 있었다:

  1. 생각해야 할 것들
  2. 오늘 했던 것들
  3. 오늘 배운 것들

이 일지를 매일 작성한다고 하셨다. 이를 따라 해보니 처음에는 어려운 점도 있었다. 특히, 생각해야 할 것들 섹션은 시간이 지날수록 내용이 계속 쌓여갔다. 하지만 이 형식을 자신에게 맞게 변형하고, 매일 꾸준히 사용할 수 있는 형태로 만드는 것이 중요하다는 것을 깨달았다.

스타트업에서는 배운 것들이 곧 해야 할 일로 이어지는 경우가 많다. 하지만 구글처럼 규모가 큰 조직에서는 이러한 과정을 수행하는 것이 훨씬 더 오래 걸린다. 업무 일지를 작성하면서 깨달은 점은, 이 세 가지 섹션이 결국 과거, 현재, 미래를 아우르는 구조라는 것이다. 이를 통해 업무에 대한 성찰과 계획을 꾸준히 할 수 있는 형식으로 변형하는 것이 효과적인 것 같다.

또한, 커리어의 시기에 따라 적합한 형식이 다를 수 있다는 점도 중요하다. 이 업무 일지 포맷은 어떻게 보면 자아 성찰에 가까운 도구라고 볼 수 있지만, 동시에 구체적으로 오늘 했던 것들 섹션도 필요한다. 커리어가 발전할수록 하루하루의 성과가 눈에 보이는 경우는 줄어들기 마련이다. 이는 하루 동안 임팩트를 준 일이 적어 보일 수 있기 때문입니다.

커리어 초반에는 할 일이 많기 때문에 이를 파악하고 기록하는 것이 중요하며, 내가 하고 있는 것들이 특히 의미가 있습니다. 하지만 커리어 후반으로 갈수록 내가 하고 있는 일이 줄어들고, 대신 생각하고 배운 것들을 기록하는 것이 더 중요해질 수 있다. 이런 변화를 고려하며 업무 일지를 지속적으로 발전시켜 나가는 것이 필요하다고 생각한다.

8년 만에 수석 개발자가 된 사람이 알려주는 승진 빨리하는 방법

1. 나의 성과를 정의하라

  • 개인적인 기준을 수립하라.
    • 내가 중요하게 여기는 기준과 회사가 기대하는 기준을 비교하고 조율하기.
    • 현재 수준에서 다음 단계로 도약하려면 무엇이 필요한지 구체화하기.

2. 매니저와 명확하게 소통하라

  • 정기적으로 대화하라.
    • 매주 매니저에게 내가 잘하고 있는지, 앞으로 어떤 개선이 필요한지 피드백 요청.
    • 강점, 개선점, 보완점 등을 구체적으로 묻고 기록하기.
    • 매니저의 피드백을 통해 나의 역량을 더 객관적으로 평가하고, 레벨업 전략 수립.

3. 팀을 활용해 성과를 극대화하라

  • 팀의 시간을 효율적으로 활용하라.
    • 다른 사람이 나를 위해 시간을 쓰는 것이 아니라, 상호 도움을 주는 방식으로 팀의 역량을 활용.
    • 팀원들과 협력하여 더 큰 성과를 만들어 내기.

4. 성과를 분리해 작은 단위로 관리하라

  • 긴 프로젝트는 짧은 목표로 쪼개라.
    • 2년짜리 프로젝트라도 3개월 단위로 분리해 성과를 지속적으로 측정.
    • 작은 결과물이 쌓이면 동기부여와 성취감 유지.

5. 자신을 과소평가하지 말라

  • 성과를 기록으로 남겨라.
    • 한 일이 작아 보이더라도 꾸준히 기록하고 모으기.
    • 여기저기 흩어진 성과를 모으면 나의 방향성과 기여도가 명확해진다.

6. 단기 목표를 설정하라

  • 유연하게 목표를 설득하라.
    • 프로젝트가 캔슬되더라도, "여기까지가 목표였다"는 논리로 내 성과를 인정받기.
    • 진행 중이던 프로젝트를 일시적으로 떠나도 다시 돌아올 수 있도록 컨텍스트를 유지.

빅테크 수석 개발자가 알려주는 일(코딩) 잘하는 법

1. 컨텍스트 스위칭의 중요성

  • 업무 집중을 방해하는 컨텍스트 스위칭을 최소화하기 위해 우선순위를 명확히 설정.

2. 개인 프로젝트 관리 방법

  • 체크포인트를 세부적으로 작성하라.
    • 세부적인 계획을 수립하고 단계별로 체크포인트를 설정.
    • 체크포인트를 기준으로 구현을 진행하며 진척 상황을 파악.

3. 첫 번째 업무 완료 후 피드백 받기

  • 초기 모멘텀을 잡기 위해 우선 주요 작업을 마무리하고 이후 추가 질문이나 피드백을 수용.

4. 변경 사항은 관리 가능한 크기로 나누기

  • 작은 단위로 진행하라.
    • 변경사항이 2,000줄이라면 100줄 단위로 나누어 문제없이 진행될 수 있도록 설계.
    • 실제 기능 변화는 100줄 이하로 유지하며, 테스트 코드 등은 400줄 이하로 작성.

5. PR(코드 리뷰 요청)을 승인받기 쉽게 만들기

  • 가독성과 이해도를 높여라.
    • 다른 개발자가 쉽게 이해하고 승인할 수 있도록 PR을 작성.
    • 내가 컨트롤할 수 없는 영역에서 발생할 수 있는 문제를 최소화.

이직과 성장의 상관관계

1. 장기적으로는 편안한 곳을 벗어나라

  • 현재의 안락함에서 벗어나 더 큰 도전을 찾아보자.
  • 본인이 원하는 목표, 확신, 기준을 명확히 설정하고 이를 기반으로 성장 전략 수립.

워라벨을 지키기 위해 하는 노력

1. 건강과 가족을 우선시하라

  • 업무가 가족과 건강에 부정적인 영향을 미치지 않도록 균형을 유지.
  • 매일 운동 1시간, 유튜브 1시간 등 개인 시간을 확보하기 위해 불필요한 시간을 줄이려 노력.

말하기 전에 한번 생각하는 습관

1. 상대의 상태를 고려하라

  • 상대가 받아들일 준비가 되었을 때, 효과적으로 메시지를 전달하기.
  • 전달 방식을 고민하며 적절한 방법을 선택.

내 프레임에 상대를 가두지 말고 경청하자

1. 상대방의 관심사에 집중하라

  • 자신의 아이디어를 강요하지 말고 상대의 관심사를 파악하며 대화.
  • 상대가 내 아이디어에 대해 질문할 때, 의견을 공유하며 신뢰 형성.

2. Active Listening을 실천하라

  • 상대방의 말을 정리하고 다시 전달할 정도로 집중하여 경청.
  • 적극적인 경청으로 상대가 이해받고 있다고 느끼게 하라.
profile
Small Big Cycle

0개의 댓글