- 기술 회사에서 엔지니어가 조직 정치에 효과적으로 참여할 수 있는 실용적 전략을 제시하는 글로, 많은 엔지니어들이 가진 정치적 무력감을 극복하는 방법을 다룸
- 엔지니어는 정치 게임의 플레이어가 아닌 도구이지만, 고위직 프로젝트의 성공을 적극 지원하거나 조직의 우선순위 변화에 맞춰 기술 아이디어를 제안함으로써 정치적 영향력을 행사할 수 있음
- 조직의 관심사는 파도처럼 변화하므로, 안정성, 개발자 경험, 성능 개선 등 다양한 방향의 기술 프로그램을 미리 준비해두고 적절한 시점에 제안하는 것이 핵심 전략
- 정치적 필요성과 좋은 아이디어의 부재가 충돌할 때 최악의 기술적 결정이 내려지며, 시니어 엔지니어는 적시에 올바른 아이디어를 제시할 책임이 있음
- 이는 냉소적으로는 권력 투쟁의 도구가 되는 것이지만, 낙관적으로는 경영진의 우선순위 설정을 존중하면서 자신의 기술적 목표를 달성하는 방법으로 볼 수 있음
엔지니어의 정치적 무력감에 대한 일반적 믿음
- 많은 소프트웨어 엔지니어들은 회사 정치에 대해 운명론적 태도를 가지고 있으며, 참여가 무의미하다고 믿음
- 기술적 결정이 종종 완전히 이기적인 이유로 이루어져 선의의 엔지니어가 영향을 미칠 수 없음
- 강력한 이해관계자들이 너무 무능하고 기능 장애적이어서 그들의 요구를 파악하고 솔루션을 제공하는 것이 사실상 불가능함
- 정치 게임은 엔지니어가 가지지 못한 비공개 정보에 의존하므로, 참여 시도는 그저 허둥대는 결과만 초래함
- 관리자와 경영진은 대부분의 시간을 정치에 쓰는 반면 엔지니어는 엔지니어링에 쓰므로, 엔지니어는 시작부터 심각한 정치적 불리함에 처함
- 소프트웨어 엔지니어는 진정한 정치 운영자들과 같은 수준에서 게임을 할 수 없다는 것이 사실
- 엔지니어가 Game of Thrones처럼 음모를 꾸미기 시작하는 것은 끔찍한 실수이며, 그러한 계략은 즉시 발각되어 불리하게 이용됨
- 계략을 꾸미려면 연습과 권력이 필요하지만, 둘 다 소프트웨어 엔지니어에게는 없음
정치 참여의 실용적 방법
- 대기업에서 소프트웨어 엔지니어는 정치 게임의 플레이어가 아닌 도구라는 것이 단순한 사실이지만, 계략 없이도 정치에 참여하는 많은 방법이 존재함
- 가장 쉬운 방법은 고위 프로필 프로젝트의 성공을 위해 적극적으로 일하는 것
- 이는 일반적인 업무의 일부로 해야 할 일과 거의 같음
- 회사가 새로운 프로젝트(요즘은 AI 프로젝트일 가능성이 높음)에 많은 투자를 하고 있다면, 엔지니어링 능력을 사용해 성공시키는 것은 해당 프로젝트를 주도하는 VP나 임원에게 정치적으로 유리한 움직임
- 그 대가로 보너스, 승진 도움, 향후 고위 프로필 프로젝트의 직위 등 임원이 기술 회사에서 줄 수 있는 보상을 받게 됨
기술 아이디어를 정치적 캠페인에 활용하기
- 조금 더 어렵지만 더 많은 통제권을 주는 방법은 자신의 선호 아이디어를 기존 정치 캠페인에 활용 가능하게 만드는 것
- 기존 기능을 별도 서비스로 분리하고 싶다고 가정할 때 두 가지 방법이 있음
- 어려운 방법: 자신의 정치적 자본을 소비하여 지지를 모으고, 관리자에게 중요성을 알리고, 회의론자들을 천천히 설득하여 프로젝트 승인을 받음
-
쉬운 방법: 임원이 (훨씬 더 큰) 자신의 정치적 자본을 프로젝트에 쓰도록 허용함
- 프로젝트와 일치하는 목표에 대한 전사적 지시가 있을 때까지 기다림 (예: 주요 사건 이후 안정성 강조)
- 그런 다음 관리자에게 자신의 프로젝트가 이에 적합할 수 있다고 제안
- 올바르게 판단했다면 조직이 프로젝트를 지지하며, 정치적 자본을 소비하는 대신 오히려 증가시킴
조직의 관심사 파도 타기
- 조직의 관심은 파도처럼 찾아옴
- 안정성 시기가 되면 VP들은 무언가를 하는 것에 절박해하며, 상사에게 보여줄 그럴듯한 안정성 프로젝트를 찾고 싶어하지만 스스로 할 능력이 없음
- 이들은 일반적으로 엔지니어링 팀이 제안하는 것이면 무엇이든 기꺼이 자금을 지원함
- 반면 조직의 주의가 다른 곳(예: 대규모 신제품 출시)에 집중되어 있을 때는, 엔지니어가 고객에게 보이지 않는 내부 안정성 중심 리팩터링에 시간을 쓰는 것을 원하지 않음
- 기술 회사에서 기술적 작업을 완수하려면 적절한 파도를 기다려야 함
- 여러 다른 방향의 기술 프로그램을 미리 준비하는 것이 좋은 아이디어
- 강력한 엔지니어는 일반적인 업무 과정에서 자동으로 이런 것들을 발견함
- 예시 계획들:
- 청구 코드를 캐시된 API 호출 대신 웹훅으로 업데이트되는 저장 데이터로 마이그레이션
- 오래된 수제 빌드 파이프라인을 제거하고 Vite로 교체
- 트래픽이 많은 지저분한 Python 서비스를 Golang으로 재작성
- 공개 문서를 지원하는 느린 CMS 프론트엔드를 빠른 정적 사이트로 교체
적시 제안의 중요성
- 임원들이 청구에 대해 우려할 때 청구 리팩터링을 안정성 개선으로 제안할 수 있음
- 개발자 경험에 대해 우려할 때 빌드 파이프라인 교체를 제안할 수 있음
- 고객이 성능에 대해 불평할 때 Golang 재작성을 좋은 옵션으로 제시할 수 있음
- CEO가 공개 문서 상태를 확인하고 당황할 때 정적 사이트로 재구축할 수 있는 주장을 펼칠 수 있음
- 중요한 것은 그달의 유행이 무엇이든 간에 즉시 실행 가능한 상세하고 효과적인 작업 프로그램을 준비해두는 것
최악의 기술적 결정이 만들어지는 순간
- 이런 방식을 따르지 않아도 어떤 프로그램은 자금을 받게 되지만, 이렇게 하지 않으면 어떤 프로그램이 될지 통제할 수 없음
- 회사가 최악의 기술적 결정을 내리는 곳이 바로 여기: 무언가를 해야 한다는 정치적 필요성과 좋은 아이디어의 부재가 충돌할 때
- 좋은 아이디어가 없을 때는 나쁜 아이디어라도 쓰게 되지만, 아무도 이 결과를 선호하지 않음
- 임원에게 나쁨: 실망스러운 기술적 결과를 성공인 것처럼 팔아야 함
- 엔지니어에게 나쁨: 시간과 노력을 잘못된 아이디어를 구축하는 데 써야 함
- 매우 시니어한 엔지니어라면 VP들이 조용히 이를 비난할 것이며, 그들이 옳음
- 적시에 올바른 아이디어를 준비하는 것은 당신의 책임
두 가지 관점
- 냉소적 관점: 회사를 운영하는 소시오패스들이 끝없는 내부 권력 투쟁에서 사용할 편리한 도구가 되라는 제안으로 읽을 수 있음
- 낙관적 관점: 임원들이 회사의 전반적 우선순위를 설정하도록 하고(그것이 그들의 일이므로), 자신의 기술 계획을 거기에 맞추라는 제안으로 읽을 수 있음
- 어느 쪽이든, 적시에 올바른 계획을 추진하면 더 많은 기술적 목표를 달성할 수 있음
Hacker News 반응 및 관련 인용
- 이 글은 Hacker News에서 주목을 받았으며, 정치에 관한 다른 글들보다 훨씬 긍정적인 반응을 받음
- 한 댓글은 Milton Friedman의 인용문을 언급하며 이 글의 아이디어를 일반 정치 정책에 적용
- "위기(실제든 인식된 것이든)만이 진정한 변화를 만들어냄. 그 위기가 발생했을 때, 취해지는 행동은 주변에 있는 아이디어에 달려 있음. 이것이 우리의 기본 기능: 기존 정책에 대한 대안을 개발하고, 정치적으로 불가능한 것이 정치적으로 불가피한 것이 될 때까지 살아있고 이용 가능하게 유지하는 것"
- 일부 댓글은 이 접근법을 지나치게 게임적이고 이기적이라고 비판했지만, 저자는 이것이 목표에 달려 있다고 봄
- 한 댓글은 이 글의 요지를 잘 요약함: "지시를 기다리고 공백이 있을 때 나쁜 아이디어에 냉소적이며 원하는 것을 하지 않는 대신, 저자는 중요한 사람이 무언가가 우선순위라고 말할 때를 위해 제기할 좋고 중요한 아이디어의 백로그를 유지함. 타이밍에서 타협하면서 원하는 것을 완수함"