21 전략 입문
대부분의 사람들은 전략(Strategy)보다 전략 게임(Strategy Games)에 더 익숙합니다. 둘은 미리 계획해야 한다는 점에서 겉보기에는 비슷하지만, 그 차이는 결정적입니다.
여기서는 James P. Carse의 『유한 게임과 무한 게임(Finite and Infinite Games)』의 용어를 빌리겠습니다:
- 게임에서의 전략은 유한 게임을 무한히 반복해서 플레이할 기회를 제공하며, 그 안에서 여러분은 거의 완전한 정보를 가지고 있고 규칙은 바뀌지 않습니다.
- 삶의 전략은 잘못된 정보가 정보보다 많고 규칙이 끊임없이 바뀌는 무한 게임을 단 한 번만 플레이하게 합니다.
실제 삶의 상황을 모델링하는 데 게임을 잘못 사용하는 것을 루딕 오류(Ludic Fallacy)라고 합니다. 우리가 실생활 전략에 이토록 준비되지 않은 채 자라는 것도 무리가 아닙니다! 현실 삶의 전략은 여러분의 코딩 커리어와 어떤 관련이 있습니까?
올바른 문제에 매달리는 것이 문제를 얼마나 빨리 실행하느냐보다 훨씬 중요합니다. “10배 엔지니어(10x engineer)”는 널리 쓰이는 용어입니다. 이 개념은 이미 여러 차례 반박되었지만, 엔지니어마다 영향력에 큰 차이가 있다는 것만큼은 분명한 사실입니다. 그런데 코드 지표를 살펴보면, 영향력이 큰 엔지니어라고 해서 코드 줄 수나 커밋 수가 두드러지게 많지는 않습니다. 한 구글 직원의 말을 빌리면 다음과 같습니다:
Google 내부에서 일하는 분이라면 Jeff(Dean, Google Brain 책임자)와 Sanjay(Ghemawat, MapReduce 공동 개발자)의 커밋 기록과 코드 리뷰 대시보드를 살펴볼 가치가 충분합니다. 실제로 작성한 코드의 양만 놓고 보면, 이들은 자기 코드베이스를 잘 아는 괜찮은 SWE3보다 그다지 더 생산적이지 않습니다. 이들이 록스타라는 명성을 얻은 이유는 이 생산성을 정말 중요한 일에 쏟을 수 있기 때문입니다. 이들은 문제에서 정말 중요한 부분을 골라내 그곳에 노력을 집중할 수 있으며, 그 결과 최종 결과물이 SWE3가 작성한 것보다 훨씬 더 큰 영향력을 발휘하게 됩니다.
엔지니어링 리더도 처참한 결정을 내릴 수 있습니다. 추상적으로 들으면 당연한 말 같지만, 직장에서는 HIPPO(Highest Paid Person’s Opinion, 가장 높은 연봉을 받는 사람의 의견)를 비판적인 사고 없이 받아들이는 일이 흔합니다. 이는 여러분의 커리어에 직접적인 영향을 미칩니다. 여러분은 당연히 성공할 프로젝트에서 일하고 싶을 것입니다. Vic Gundotra 밑에서 Google Plus를 작업하는 상황을 상상해 보십시오. 혹은 Google 알고리즘 업데이트 이후 진행된 Digg의 v4 재작성 작업을 떠올려 보십시오. 혹은 기술 업계에서 조용히 묻혀 버리는, 이보다 덜 극적인 수천 건의 다른 실패들도 있습니다. 여러분은 자신의 코딩이 놓인 더 큰 맥락을 이해해야 하고, 적절한 때에는 반대 의견을 내야 하며(요령 있게 반대 의견을 내는 것은 아주 훌륭한 커리어 기술입니다), 회생 불가능한 실패로 떠밀리고 있을 때는 다른 업무로 재배치해 달라고 요청해야 합니다.
주체성. 주변 상황을 인식하고 자신이 하는 일을 스스로 통제하기 시작할 때, 비로소 커리어의 주인이 됩니다. 주체성 = 수완 + 주도성입니다. 예전에는 괜찮은 프로그래머라면 IBM에서 30년을 일할 수 있었고, 충분히 오래 머물기만 하면 IBM이 커리어를 책임져 주리라 기대할 수 있었습니다. 그런 시절은 이미 오래전에 지나갔습니다. 오늘날의 일자리는 여러분이 API의 위에 있는지 아래에 있는지로 양분됩니다. 여러분이 기계에게 무엇을 할지 지시하거나(API 위에 사는 것), 기계가 여러분에게 무엇을 할지 지시합니다(API 아래에 사는 것). 통제할 것인지, 통제당할 것인지는 스스로 선택할 수 있습니다. 행동하십시오. 그렇지 않으면 휘둘리게 됩니다. 좋은 매니저는 여러분의 개인적인 여정에서 협력자가 되어 주지만, 나쁜 매니저는 여러분을 자신의 목표를 이루기 위한 도구로만 볼 것입니다. 하지만 좋은 매니저와 함께하더라도 커리어에 대한 궁극적인 책임은 여러분에게 있습니다. 결코 매니저에게 있지 않습니다.
여담: 네, 엄밀히 말하면 “API 아래”에 사는 경우에도 대개는 기계 뒤에서 무엇을 하라고 지시하는 누군가가 있습니다. 기계 자체에는 자유 의지도 주도성도 없습니다. 하지만 누군가가 여러분을 API 아래에 둘 수 있다면, 그 사람은 그 일을 굳이 여러분이 하든, 비용이 50% 덜 드는 다른 나라의 누군가가 하든, 심지어 비용이 99% 덜 드는 로봇이나 알고리즘이 하든 전혀 개의치 않는다는 점에 주목하십시오. 여러분의 일을 결정론적인 요청-응답 루프로 모델링할 수 있다면 그 일은 기계에 맡겨야 합니다. 결국에는 기계가 하게 될 것이기 때문입니다.
21.1 전략이란 무엇입니까?
세상에는 전략에 대한 정의가 정말 많이 있지만, 그중 좋은 것은 일부에 불과합니다. 어쨌든 여기는 기업 비즈니스 용어의 영역이니까요! 몇 가지를 인용해 보겠습니다:
- 전략이란 어떤 문제를 풀지 선택하는 문제입니다.
- 전략은 “우리는 무엇을 해야 하는가?”라는 질문에 답합니다.
- 전략은 어디에서 경쟁하고 어떻게 승리할지를 정의합니다.
전략에는 네 가지 측면이 있습니다:
- 현재 현실에 대한 멘탈 모델 - 여러분과 경쟁자, 그리고 더 넓은 기술 지형이 지금 어디에 있고 어디로 향하고 있는지
- 미래에 대한 비전 - 여러분이 가고자 하는 곳
- 현재 위치에서 목표 지점까지 가기 위한 계획(Plan)
- 명확한 근거와 트레이드오프에 대한 이해를 바탕으로 무엇을 할지, 그리고 무엇을 하지 않을지를 선택하는 정책(Policy)
참고: 이는 Henry Mintzberg가 처음 Plan, Pattern, Position, and Perspective로 정식화한 것으로(비즈니스 하는 사람들은 두운을 좋아하기 때문입니다), 여기에 미끼/페이크 전략을 위한 다섯 번째 P인 “Ploy”가 추가되었습니다. 저는 이 요소들을 기술 전략과 여러분의 개인 커리어 전략에 더 잘 적용할 수 있도록 재정의했습니다.
좋은 전략과 나쁜 전략이 무엇인지 알아 두면 도움이 됩니다. 다행히 바로 그 주제를 다룬 책이 있습니다.
좋은 전략:
- 단순하고 명확합니다 - 복잡함에 대해 아니라고 말합니다
- 극복해야 할 핵심 과제에 대한 이론 또는 진단을 가지고 있습니다
- 도전 과제를 극복하기 위한 지침 정책과 실행할 행동을 포함합니다
- 일관성이 있습니다 - 모든 행동이 서로 경쟁하지 않고 서로를 강화하고 뒷받침합니다
나쁜 전략:
- 미사여구가 잔뜩 있습니다 - 기업식 비즈니스 화법
- 과제에 맞서지 못함 - 회사가 직면한 핵심 문제
- 목표를 전략으로 착각함 - 구체적인 계획이 아니라 바람을 나열한 것입니다(충분히 간절히 원하기만 하면 이룰 수 있다고 여깁니다)
- (불편하다는 이유로) 핵심 문제를 다루지 못하는 목표를 세웁니다
21.2 전략은 어떻게 사용합니까?
지금까지 설명한 모든 것이 다소 먼 이야기처럼 느껴질 수도 있습니다. 여러분은 장군도 아니고 창업자도 아닙니다. 아직 시니어 엔지니어링 리더조차 아닙니다. 충분히 이해합니다.
하지만 전략은 불확실성 속에서 되돌릴 수 없는 중대한 결정을 내릴 때면 언제든 적용됩니다. 직관적으로도 이해가 되는 이야기입니다. 어떤 결정이 되돌릴 수 있는 것이라면 그냥 시도해 보고 “무엇이 효과가 있는지 확인”하면 됩니다. 그리고 불확실성이 전혀 없다면 내려야 할 결정은 자명할 것입니다. 모든 의사 결정이 그렇듯, “전략 없음”도 하나의 전략입니다. 이는 여러분의 운명을 다른 누군가의 전략적 선택에 맡기는 것입니다. 직업적으로 성장하기를 바란다면, 결정하지 않는 것은 점점 더 타당하지 않은 선택이 될 것입니다.
이 섹션은 코딩 커리어의 주요 전략적 측면을 깊이 생각해 보는 데 도움을 줄 것입니다. 기술에 어떻게 베팅할지, 스페셜리스트가 되어야 할지 제너럴리스트가 되어야 할지, 기술 비즈니스 모델, 그리고 그 사이의 모든 것을 다룹니다.
또한 현실을 이해하기 위한 사고의 틀을 갖추려고 노력해야 합니다. 네, 이 문장을 쓰는 것도 읽는 것만큼이나 어처구니없게 느껴졌습니다. 기술은 엄청나게 복잡하고 소란스럽지만, 그 안에는 여러분이 꾸준히 파악하고 있어야 할 뚜렷한 슈퍼사이클과 승자가 존재합니다. 정보 기술에 관한 정보를 걸러내고 정리할 방법이 필요합니다. 시스템 사고, 생태계 인식, 그리고 메가트렌드를 다루겠습니다.
여러분이 하는 일의 경제학을 이해해야 하므로, 기술 전략(Tech Strategy)의 기초도 소개하겠습니다. 광고 vs SaaS vs 마켓플레이스 비즈니스 모델. 수평적(Horizontal) vs 수직적(Vertical). 그리고 소프트웨어 비즈니스의 그 밖의 기본 개념들.
전략을 가르치는 것은 야심 찬 일입니다. 저는 전문가가 아닙니다. 저는 여러분의 구체적인 상황을 알지 못하며, 저와 제 친구들의 경험이 일반적인 경우를 대표하지 않을 수도 있습니다. 제가 바라는 것은 여러분 대신 생각해 드리는 것이 아니라, 여러분이 스스로 전략에 대해 생각하는 법을 가르쳐 드리는 것입니다.
21.3 너무 스트레스 받지 마십시오
전략을 이해하려면 보기 드문 천재성이 필요합니다. 저는 분명 그렇지 못합니다. 하지만 저는 전략을 이해하는 사람들을 알아보고, 그들의 말에 진심으로 귀 기울이고, 그것을 제 상황에 맞게 옮기는 법은 압니다. 여러분도 이 점에 눈을 뜨게 되기를 바랍니다.
또한 전략에 너무 깊이 빠져들지 않도록 주의하라고 말씀드리고 싶습니다. 분석 마비는 누구에게도 도움이 되지 않습니다. 여러분은 실수를 하게 될 것입니다. 실수를 되돌리려 하지 마십시오 – 이미 일어난 일은 일어난 일이니, 매몰 비용에 대한 감정적 미련 없이 다시 평가하십시오.
소프트웨어 업계에 종사하는 사람으로서 여러분의 기술은 다른 곳에서도 통용되므로, 다른 직종의 사람들보다 한곳에 얽매일 일이 적습니다. 마지막으로, 충분히 긴 시간의 관점에서 보면 대부분의 결정은 되돌릴 수 있게 됩니다. 스트레스를 받는다면 더 길게 내다보십시오. 이 또한 지나갈 것입니다.
마지막으로 한 가지 생각을 덧붙이겠습니다. 피터 드러커는 “문화는 전략을 아침 식사로 먹어 치운다”라는 말로 유명합니다. 여러분이나 리더십이 어떤 화려한 전략을 채택하든, 사람이 언제나 일의 중심에 있다는 것을 기억하십시오. 훌륭한 사람들은 강한 문화로 하나가 될 때 나쁜 전략도 극복할 수 있습니다.