대형 기술 기업에서 '일을 끝낸다'는 것이 실제로 무엇을 의미하는지, 항상 추가 작업이 가능한 환경에서 어떻게 성과를 가시적으로 만들고 완성도를 정의할 수 있는지 탐구합니다.
일을 끝낸다는 것은 무엇을 의미할까요? 추상적으로는 수학적 증명이나 문제 세트를 완료할 수 있지만, 현실 세계는 훨씬 모호합니다. 내 뒤뜰에 나무를 심었다고 가정해 봅시다. 어린 나무를 땅에 심으면 그게 끝난 것일까요? 사실 그렇지 않습니다. 땅을 정리하고, 물을 주고, 해충을 막고, 가지치기를 하는 등의 추가 작업이 계속 필요합니다. 대규모 웹 애플리케이션을 프로그래밍하는 것은 수학적 증명을 완성하는 것보다 나무를 심는 것에 더 가깝습니다. 서비스를 만들었다고 해도, 원한다면 평생 계속해서 개선할 수 있습니다.
대형 기술 기업에서는 이 사실이 유능하지만 자기 주도성이 부족한 엔지니어들에게 함정이 됩니다. 그들은 자신이 할 수 있는 무한한 할 일 목록을 보고, 특정 하위 시스템에 대해 사소한 개선을 끊임없이 반복합니다[1]. 스스로는 엄청난 성과를 내고 있다고 느낍니다. 최대 속도로 일을 내고 있고, 대기 시간이나 타팀의 의존성도 없습니다. 하지만 실제로 그들이 해야 할 일, 즉 회사에 최대한의 가치를 제공하는 일을 하고 있는 것은 아닙니다. 그들의 매니저나 상위 임원 입장에서는, 이들이 사실상 '아무 일도 끝내지 않은' 것처럼 보입니다.
그렇다면, 대형 기업에서 진짜로 '일을 끝낸다'는 것은 무엇일까요? 가장 중요한 것은 무언가를 마무리하는 것입니다. 시스템을 무한정 개선할 수 있는 환경에서 어떻게 '끝내기'란 게 가능할까요? 회사 내 의사결정권자들이 만족하는 상태까지 도달시키는 것입니다. 그 지점에 오면, 과감히 "이겼다!" 선언하고 다음 일로 넘어가야 합니다. 제가 본 많은 엔지니어들이, 이미 그들의 프로젝트가 성공으로 인식된 시점을 지나서 계속해서 사소한 개선이나 리팩토링을 이어갑니다. 그 시기를 지나면 더 이상 성공 프로젝트가 아니라, '시간 낭비'로 여겨집니다. 차라리 그 시간에 두 가지 더 새로운 일을 하는 편이 낫습니다.
두 번째로, 회사의 의사결정권자들에게 가독성 있는 일을 해야만 합니다. 즉, 내 매니저와 1~3단계 상위 임원이 명확하게 인지할 수 있는 일을 말합니다. 가장 쉬운 방법은, 이미 그들이 알고 있는 프로젝트(직접 요청받았거나, 관련 사고가 커서 그들이 관여하는 일 등)를 납품하는 것입니다. 물론 그 외의 일도 그들에게 가독성을 줄 수 있습니다. 예를 들어, 내 작업이 돈을 벌거나 절약하게 된다면 그 임팩트는 즉시 드러납니다(혹은 정말 설득력이 있어도 가능). 원래라면, 엔지니어가 한 일은 보통 임원들에게는 '알 수 없는 기술적 잡음'일 뿐입니다. 그 일이 정말 중요한 고임팩트 작업인지, 아니면 무의미한 코드 정리인지 알 수 없으므로, 대체로 후자로 생각합니다.
요약하면, 일을 끝낸다는 것은 아래와 같은 상태에 도달하게 하는 것입니다:
(a) 임원들이 무슨 일이 일어났는지 명확히 이해하고, (b) 그 결과에 만족함
많은 사람들에게 이 정의는 만족스럽지 않을 수 있습니다. 여러 엔지니어들은 "그저 사회적 합의일 뿐"이라는 설명보다 더 확고한 정의를 원할 것입니다. 그러나 철학을 배운 저로서는 사회적 구성 개념을 침착하게 받아들입니다. “의자”의 개념도 사회적 구성물이지만, 의자는 분명히 현실입니다[2]. 오히려 "일을 끝낸다"는 개념은 더 현실적일 수도 있습니다. 내 월세를 내줄 수도 있고, 이를 무시하면 짤릴 수도 있습니다.
수정: 이 글은 Hacker News에서 여러 댓글과 함께 논의되었습니다.
이 글이 마음에 드셨다면, 이메일 구독으로 새 글 소식을 받아보실 수 있습니다.
2025년 5월 6일 │ 태그: shipping, tech companies