개발 언어/기타 웹개발 지식

프로젝트 히드라 효과: 끝없는 시작과 마주하기 (번역)

jjiiiinn 2024. 9. 9. 10:47
728x90

아래 내용은 The Art of Finishing 블로그 글을 번역한 내용입니다.

프로젝트 히드라 효과: 끝없는 시작과 마주하기

조용한 토요일 오후. 드디어 코딩에 집중할 수 있는 소중한 몇 시간을 확보했습니다. 뜨거운 커피 한 잔을 옆에 두고 익숙한 충동에 따라 프로젝트를 시작하려고 자리에 앉습니다. 터미널을 열고, 직면하게 되는 것은 이제 너무나도 익숙해진 도전입니다: 여러 미완성된 프로젝트 중 어느 것을 선택할 것인가.

프로젝트 디렉토리로 이동하면, 마치 묻혀 있는 고대 유적지처럼 반쯤 구현된 아이디어와 중단된 작업들이 저를 맞이합니다. 각각은 제가 해결하려 했던 문제, 그리고 배우려 했던 기술을 대표합니다. 모두 흥미로운 프로젝트로, 각각의 목적과 잠재력을 지니고 있지만, 그것들을 살펴보는 순간 벌써부터 제 열정이 사그라들고 있음을 느낍니다. 어느 것을 선택하든, 저는 원래의 문제뿐만 아니라 그 문제에서 파생된 수많은 새로운 도전과 마주해야 한다는 사실을 알기 때문입니다.

잠시 고민한 끝에 하나를 선택하고 IDE를 실행합니다. 가장 최근의 변경 사항을 불러오고, 과거 커밋 기록을 탐구하기 시작하면서 예상한 대로 미완성된 프런트엔드 작업을 발견하게 됩니다. 그저 와이어프레임 수준의 UI이거나, 예상하지 못했던 라이브러리 통합의 한계에 직면해 있을지도 모릅니다. 아니면, 문제를 단순한 스크립트로 해결할 수 있음에도 불구하고, 과도하게 복잡한 아키텍처를 설계한 제 자신을 마주하기도 합니다.

소매를 걷어붙이고 작업을 시작합니다. 리팩토링, 디버깅, 그리고 CSS와 씨름하는 시간들이 순식간에 지나갑니다. 어느덧 제가 할당했던 시간이 다가왔습니다.

책상에서 일어설 준비를 하면서도 마음속에는 짜증 섞인 기분이 남습니다. 처음에는 긍정적인 마음가짐으로 큰 진전을 기대하며 시작했지만, 지금은 별로 나아간 것이 없는 듯한 기분이 듭니다. 여전히 코드베이스에는 미완성된 기능과 TODO 주석들이 넘쳐납니다. 개발이라는 히드라는, 제가 겨우 처리한 하나의 문제를 대체할 두 개의 새로운 문제를 만들어낸 셈입니다.

이러한 과정이 이제는 너무 익숙해졌습니다. 하지만 더 이상 이 사이클에서 벗어나지 못한다는 생각에 좌절하지 않으려고 합니다. 이번 글에서는 이 끝없는 시작과 실망으로부터 벗어나기 위한 전략을 탐구해 보고, 이 히드라를 완전히 물리칠 방법을 모색해보려 합니다. 이제는 프로젝트를 마무리하는 기술을 익히고, 진정한 완성의 만족을 느낄 때입니다.

내가 그린 멋진 히드라

끝없는 프로젝트의 매력

끝없는 가능성 속에는 묘한 안정감이 있습니다. 진행 중인 프로젝트는 그 무엇이 될 수 있죠. 슈뢰딩거의 프로젝트1처럼, 완성되지 않은 상태에서 동시에 완벽하고 결함이 있을 수 있습니다. 하지만 일단 프로젝트가 끝났다고 선언하는 순간, 외부와 내부의 비판에 직면하게 됩니다. '이게 정말 괜찮을까?' '무엇인가 중요한 것을 놓친 건 아닐까?'

완성에 대한 두려움과 새로운 아이디어의 흥분은 프로젝트 미루기에 이상적인 환경을 만듭니다. 끝까지 밀고 나가는 것보다는 새로운 것을 시작하는 것이 훨씬 쉽습니다. 하지만 이것은 단지 두려움 이상의 문제입니다.

미완성 프로젝트에는 흥미로운 잠재력이 있습니다. 그것이 다음 큰 아이디어일 수도 있고, 혁신적인 무언가일 수도 있으며, 어쩌면 인생 최고의 작품이 될 가능성을 품고 있습니다. 이 잠재력은 완성된 결과물의 현실보다 훨씬 더 매력적일 수 있습니다. 게다가 진행 중인 프로젝트는 이미 익숙한 영역이죠. 코드베이스도 알고 문제도 이해하고 있으며, 스스로의 영역 안에 있는 느낌입니다. 새로운 무언가를 시작한다는 것은 미지의 영역에 발을 들여놓는 일이라, 다소 두려움을 동반합니다.

생산성 착각도 큰 역할을 합니다. 무언가에 계속해서 작업하는 한, 우리는 생산적이라고 느낍니다. 프로젝트에서 프로젝트로 뛰어다니는 것은 끊임없는 '새로운 프로젝트 에너지'를 제공합니다. 이는 하나의 프로젝트를 끝내기 위한 고된 노력보다 더 활력을 불어넣어주는 느낌을 줍니다. 그리고 이렇게 프로젝트가 지속되는 한 어려운 결정을 피할 수 있죠. 예를 들어, 몇 주간 공들였지만 마음에 들지 않는 기능을 제거할지 말지, 지금 출시할지 아니면 또 다른 한 달을 투자해 더 다듬을지 같은 결정을 미루게 됩니다.

개인 프로젝트에 마감일이 없다는 것도 이러한 복잡성을 더합니다2. 마감일이 없는 프로젝트에서는 완벽주의에 빠지기 쉬워집니다. 우리는 끝없이 미세한 조정을 하고, 개선하려고 하지만, 그 결과는 오히려 더 불완전하거나 아예 결과물이 없을 때도 많습니다. 직장에서는 마감일 덕분에 실용적인 결정을 내려야 하지만, 개인 프로젝트에서는 무한한 시간을 사용할 수 있다는 '사치'가 오히려 저주가 되어, 중요한 결정 대신 사소한 디테일에 시간을 낭비하게 만듭니다. 이럴 때는 '충분히 괜찮은' 것이야말로 완벽이라는 점을 기억해야 합니다. 특히 대안이 끝내지 못하는 것이라면 말이죠.

때로는 실패만큼 성공도 두려운 법입니다. 성공적인 프로젝트는 더 높은 기대치와 책임, 혹은 준비되지 않은 정체성의 변화를 불러올 수 있습니다. 미완성 프로젝트는 성공의 미지의 결과로부터 나를 보호하는 안전망이 됩니다.

내 프로젝트 진행 타임라인

끝내지 않는 것의 대가

하지만 끝없는 시작의 사이클은 그만큼 큰 대가를 치르게 합니다. 프로젝트를 완성했을 때의 독특한 만족감은 아무리 새로운 시작을 반복해도 얻을 수 없습니다. 게다가 미완성 프로젝트는 머릿속에 자리 잡고, 우리의 정신 에너지와 열정을 서서히 소모합니다.

무엇보다도, 우리는 프로젝트를 완성했을 때 얻는 교훈과 시작할 때 얻는 교훈이 다릅니다. 시작은 아이디어 발상과 초기 구현에 대해 가르쳐줍니다. 반면, 완성은 끈기, 세부 사항에 대한 주의, 그리고 언제 그만두어야 하는지를 가르쳐줍니다. 이러한 기술들은 오직 완성의 행위를 통해서만 배울 수 있습니다.

끝내지 않은 프로젝트는 기회를 놓치는 것을 넘어, 자신감에도 영향을 미칩니다. 시간이 지남에 따라, 우리는 점점 큰 것을 완수할 수 없다는 생각에 빠지게 될 수 있으며, 이는 미완성의 악순환을 만들어냅니다.

프로젝트의 마지막 단계에서는 최적화, 리팩토링, 그리고 코드의 세부 사항을 완전히 이해하는 과정이 필요합니다. 완성을 하지 않으면 이러한 귀중한 학습 기회를 놓치게 됩니다. 직장에서도 끝까지 마무리하지 못하는 사람으로 인식되는 것은 커리어에 부정적인 영향을 미칠 수 있습니다. 완성된 프로젝트를 제공할 수 있는 능력은 매우 중요한 직업적 기술입니다.

미완성 프로젝트는 정신적인 공간을 차지합니다. 마치 여러 개의 브라우저 탭을 열어두고 있는 것처럼, 각각은 우리의 정신적 자원을 조금씩 소모하여, 새로운 아이디어나 집중된 작업에 쓸 수 있는 여력을 줄여버립니다. 이러한 정신적 혼란은 창의력과 생산성에 상당한 부담이 될 수 있습니다.

무엇보다도, 세상에 완성된 프로젝트를 내놓았을 때의 기쁨을 스스로 놓치게

무엇보다도, 세상에 완성된 프로젝트를 내놓았을 때의 기쁨을 스스로 놓치게 됩니다. 시작할 때의 흥분을 결코 대체할 수 없는, 오직 끝냈을 때만 느낄 수 있는 성취감이 있습니다. 프로젝트를 완성해서 세상에 공개하면, 피드백을 받을 기회도 생기고, 이를 통해 우리가 놓쳤던 부분이나 미래에 큰 도움이 될 통찰을 얻게 될 수도 있습니다.

끝없는 프로젝트의 매력과 그것이 주는 대가를 이해하는 것은 중요합니다. 시작의 흥미를 무시하는 것이 아니라, 그 에너지를 완성으로 연결하는 방법을 배우는 것이 핵심입니다. 이러한 패턴을 인식함으로써, 우리는 그것을 극복할 전략을 세우고 마침내 이 프로젝트 히드라를 물리칠 수 있습니다.

프로젝트 히드라를 길들이는 전략

그렇다면 어떻게 이 사이클을 깨뜨릴 수 있을까요? 어떻게 시작한 프로젝트를 끝까지 완수할 수 있을까요? 여기 제가 프로젝트 히드라를 길들이기 위해 실천하고 있는 몇 가지 전략을 소개합니다.

  1. ‘완성’의 정의를 명확히 하기: 프로젝트를 시작하기 전에, ‘완성’이 무엇인지 명확하게 정의합니다. 완성된 프로젝트를 구성하는 핵심 기능이 무엇인지 미리 작성해두고, 진행하면서 이 목록을 확장하려는 유혹을 피할 것입니다. 이 명확성은 범위 확장을 방지하고, 명확한 목표를 제시해줍니다.
  2. 🚀 최소 기능 제품(MVP) 추구: 완벽을 목표로 하기보다는, ‘충분히 괜찮은’ 상태를 목표로 합니다. 기본 버전을 만들어 세상에 내놓고, 나중에 개선할 수 있습니다. 이 방법은 추진력을 유지하고 초기 피드백을 받을 수 있는 기회를 제공합니다.
  3. 프로젝트에 시간 제한 두기: 프로젝트에 마감일을 설정합니다. 짧지 않더라도, 끝이 있는 기한을 두는 것이 중요합니다. 기한이 있으면 긴장감을 유지하며, 끝없는 기능 확장을 막아줍니다. 대규모 프로젝트일수록, 이를 작은 단계로 나누어 각 단계를 시간 내에 완료하는 것이 도움이 됩니다.
  4. 🧩 작은 작업부터 끝내는 연습: 매주 소규모 프로젝트나 작업을 완성하는 습관을 기릅니다. ‘완성하는 능력’도 다른 기술처럼 연습을 통해 향상됩니다. 예를 들어, 블로그 글 하나를 마무리하거나 작은 코딩 문제를 풀어보는 등, 작은 성공 경험이 완성의 기술을 기르는 데 도움이 됩니다.
  5. 💡 아이디어와 구현 분리: 아이디어 노트를 따로 작성합니다. 구현 중에 새로운 기능이나 프로젝트 아이디어가 떠오를 때, 바로 행동으로 옮기지 않고 아이디어 노트에 기록해둡니다. 이렇게 하면 현재 프로젝트에 집중할 수 있으면서도, 유용한 아이디어를 놓치지 않을 수 있습니다.
  6. 🎉 완성을 축하하기: 프로젝트를 끝냈을 때는 그 성취를 기념합니다. 크든 작든 프로젝트를 마무리했을 때는 자신에게 보상을 주는 것입니다. 완성을 축하하는 것은 미래 프로젝트를 위한 긍정적 동기 부여로 작용할 수 있습니다. 예를 들어, 맛있는 저녁을 먹거나 친구들과 성취를 공유하는 것만으로도, 다음 프로젝트를 위한 큰 동기부여가 됩니다.
  7. 👥 책임감을 활용하기: 프로젝트 완성에 대한 책임을 스스로에게 부여합니다. 다른 사람과 함께 진행 상황을 공유하거나, 마일스톤을 공개적으로 선언하는 것도 좋은 방법입니다. 다른 개발자들과 함께하는 모임에 참여해 서로를 독려할 수도 있습니다. 이러한 외부의 책임감은 혼자 작업할 때 부족하기 쉬운 동기 부여를 제공합니다.3

이러한 전략들은 제가 프로젝트 히드라를 극복하기 위해 마련한 개인적인 로드맵입니다. 이를 일관성 있게 실천하면 더 나은 습관을 만들고, 프로젝트를 완성할 가능성을 높일 수 있을 것입니다. 이 과정은 저의 작업을 지원하는 구조를 만드는 것뿐만 아니라, 내부적인 동기 부여와 외부적인 책임감을 조화롭게 유지하는 데도 도움을 줄 것입니다.

물론, 전략은 시작에 불과합니다. 진정한 도전은 이러한 방법을 일관되게 적용하는 데 있습니다. 저마다의 개인적 스타일과 프로젝트의 요구에 맞는 최적의 방식을 찾는 과정에서 시행착오가 있을 수 있습니다. 하지만, 작은 성공들이 쌓여가면서 프로젝트를 조금씩 완성에 가까이 다가가고 있다는 성취감을 느끼게 될 것입니다.

앞으로의 길

앞으로의 길은 쉽지 않을 것입니다. 오랜 습관과 생각의 패턴을 바꾸려면 시간이 걸리고, 일관된 노력이 필요하다는 것을 잘 알고 있습니다. 그 과정에서 여러 차례 좌절을 겪을 수도 있습니다. 새로운 프로젝트의 유혹에 흔들리거나, 완벽하지 않은 결과물에 대한 두려움으로 망설이기도 할 것입니다. 그러나 저는 이러한 장애물들을 극복하고 ‘완성의 근육’을 기르기 위해 노력할 것입니다.

이 여정은 단지 코드를 끝내는 것에 그치지 않고, 개발자이자 창작자로서의 성장과도 연결됩니다. 프로젝트 하나하나가 끝날 때마다 저는 새로운 것을 시작하는 데서 오는 흥분뿐만 아니라, 완성의 만족감까지 경험하게 될 것입니다.

프로젝트 히드라는 오랜 시간 동안 제 작업을 지배해왔습니다. 이제 새로운 전략과 결단력으로 이 괴물과 마주할 준비가 되었습니다. 이제는 계획을 멈추고, 실천할 때입니다.

지금 바로 저는 마무리할 프로젝트가 하나 있습니다. 이번에는 그 끝을 반드시 볼 것입니다.4

  1. 슈뢰딩거의 고양이처럼, 미완성된 프로젝트는 살아 있지도 죽어 있지도 않으며, 단지 우리의 SSD에 공간만 차지하고 있을 뿐이죠.
  2. 이 현상은 파킨슨의 법칙과도 관련이 있습니다. 이 법칙에 따르면 “일은 주어진 시간을 모두 소모하도록 확장된다”고 합니다. 개인 프로젝트에서는 이 시간이 무한하기 때문에, 무한한 확장이 일어나게 됩니다.
  3. 미국 트레이닝 개발협회(ATD)의 연구에 따르면, 다른 사람에게 목표를 약속할 경우 목표를 달성할 확률이 65%로 증가한다고 합니다. 그 약속에 대해 구체적인 확인 약속까지 있을 경우 그 확률은 95%로 상승합니다.
  4. 이 글은 한 번에 완성했습니다. 결단력과 엄청난 양의 커피가 함께했습니다. 이 블로그 글 작성 중에는 히드라가 다치지 않았습니다.

프로젝트 히드라 효과: 내용 요약

내용 요약

1. 프로젝트 히드라 현상

  • 개발자들이 새 프로젝트를 쉽게 시작하지만 완성하지 못하는 현상
  • 미완성 프로젝트가 계속 쌓이면서 정신적 부담이 되는 문제
  • 이를 '히드라'에 비유: 하나의 프로젝트를 끝내려 하면 두 개의 새로운 아이디어가 생겨남

2. 끝없는 프로젝트의 매력

  • 미완성 프로젝트의 무한한 잠재력과 가능성에 대한 환상
  • 완성에 따르는 비판과 평가를 피할 수 있는 안전함
  • 새로운 시작이 주는 흥분과 동기부여
  • 생산성에 대한 착각: 여러 프로젝트를 진행하는 것이 생산적으로 느껴짐
  • 개인 프로젝트의 마감일 부재로 인한 무한한 시간의 '사치'

3. 끝내지 않는 것의 대가

  • 완성의 만족감과 성취감 상실
  • 프로젝트 완성 과정에서 얻을 수 있는 중요한 학습 기회 놓침
  • 자신감 저하와 큰 일을 해낼 수 없다는 부정적 자아상 형성
  • 미완성 프로젝트가 차지하는 정신적 공간으로 인한 창의력과 생산성 저하
  • 실제 사용자 피드백을 받을 기회 상실

4. 프로젝트 히드라를 길들이는 전략

  • '완성'의 명확한 정의: 프로젝트 시작 전 핵심 기능 목록 작성
  • MVP(최소 기능 제품) 추구: '충분히 괜찮은' 상태를 목표로 설정
  • 시간 제한 설정: 프로젝트에 마감일을 두어 무한한 확장 방지
  • 작은 작업 완성 연습: 완성하는 능력을 기르기 위한 일상적 훈련
  • 아이디어와 구현 분리: 새 아이디어는 별도로 기록하여 현 프로젝트에 집중
  • 완성 축하하기: 작은 성공에도 보상을 줘서 긍정적 동기 부여
  • 책임감 활용: 진행 상황을 공유하거나 공개적으로 목표 선언

5. 앞으로의 과제

  • 오랜 습관 변화의 어려움 인정
  • 꾸준한 노력과 실천의 중요성 강조
  • 완성의 기술을 개발자로서의 성장과 연결 짓기

개인적 견해 및 느낀 점

이 글을 읽으면서, 마치 거울을 보는 듯한 느낌이 들었습니다. 저 역시 수많은 미완성 프로젝트의 무덤을 가지고 있는 개발자 중 한 명이었기 때문입니다. 특히 "프로젝트 히드라"라는 비유는 제 상황을 정확히 묘사하는 것 같아 웃음 짓게 만들었습니다.

가장 크게 와닿은 부분은 끝내지 않는 것의 대가였습니다. 지금까지 새로운 시작이 주는 흥분에 취해 완성의 가치를 과소평가했던 것 같습니다. 특히 프로젝트를 끝까지 해내면서 얻을 수 있는 귀중한 학습 기회를 놓쳐왔다는 사실이 안타깝게 느껴집니다.

MVP에 대한 언급은 제 완벽주의 성향을 돌아보게 했습니다. '충분히 괜찮은' 상태란 무엇일까요? 저는 그동안 '완벽해야 한다'는 압박감에 사로잡혀 있었던 것 같습니다. 이제는 '작동하는' 상태로 먼저 만들고, 점진적으로 개선해 나가는 접근방식을 시도해봐야겠다는 생각이 듭니다.

시간 제한을 두는 전략은 꼭 시도해보고 싶습니다. 무한한 시간이 주어지면 오히려 일의 효율성이 떨어진다는 파킨슨의 법칙을 몸소 체험해왔기 때문입니다. 개인 프로젝트에도 회사 프로젝트처럼 마감일을 정하고 지키는 연습을 해봐야겠습니다.

책임감을 활용하는 방법도 흥미롭게 읽었습니다. 그동안 개인 프로젝트는 '혼자 하는 것'이라는 고정관념이 있었는데, 다른 사람들과 공유하고 피드백을 받는 것이 큰 동기부여가 될 수 있다는 점을 깨달았습니다. 앞으로는 개발자 커뮤니티에 더 적극적으로 참여해볼 생각입니다.

이 글을 통해 제 작업 방식을 되돌아보고, 변화의 필요성을 절실히 느꼈습니다. '프로젝트 히드라'를 물리치는 것이 쉽지는 않겠지만, 이제는 그 방법을 알게 되었으니 한 걸음씩 나아갈 수 있을 것 같습니다. 완성의 기쁨을 다시 한 번 경험하고 싶다는 욕구가 강하게 생깁니다.

마지막으로, 이 모든 깨달음을 실천으로 옮기는 것이 가장 중요하다는 점을 명심해야겠습니다. 당장 오늘부터, 제 '프로젝트 무덤'에서 하나를 골라 끝내는 것을 목표로 삼아보려 합니다. 그리고 그 과정에서 배우는 모든 것들을 소중히 여기며, 조금씩 '완성'이라는 목표에 다가가보려 합니다.

 

https://www.bytedrum.com/posts/art-of-finishing/

 

The Art of Finishing | ByteDrum

My endless battle with the "Project Hydra": why I can't seem to finish projects, and the strategies I'm exploring to finally complete what I start. A personal journey through productivity's thorniest challenge.

www.bytedrum.com

 

728x90