나도 그런 적 있었어. 포트폴리오에 넣을 프로젝트를 시작하려고 하면, 폴더 구조부터 어떤 라이브러리를 쓸지, 아키텍처는 어떻게 잡을지 고민하느라 며칠 밤을 새우곤 하지 않니? 머릿속으로는 이미 완벽한 서비스를 만들었는데, 막상 VS Code를 열면 첫 줄조차 쓰기 두려워지는 그 마음, 나도 정말 잘 알고 있어. 나도 연차가 쌓이기 전에는 완벽한 코드가 아니면 세상에 내놓으면 안 된다는 강박에 갇혀 있었거든.
첫 단추부터 완벽하려 했던 나의 삽질기
내 주니어 시절 이야기를 해볼게. 그때 나는 정말 완벽한 프론트엔드 개발자가 되고 싶었어. 픽셀 하나 틀리지 않는 UI, 우아한 컴포넌트 설계, 100%에 가까운 테스트 커버리지까지. 모든 것이 완벽해야만 실력을 인정받을 수 있다고 믿었지. 결과가 어땠을 것 같아? 토이 프로젝트 하나를 완성하는 데 반년이 넘게 걸렸어. 리팩토링에 리팩토링을 거듭하다가 결국 지쳐서 중간에 포기한 프로젝트만 수두룩했지. 완벽주의라는 덫에 걸려 정작 중요한 '완성과 배포'라는 경험을 놓치고 있었던 거야. 그때는 내가 부족해서 그런 줄 알고 스스로를 참 많이 괴롭혔어.
'돌아가는 코드'가 '완벽한 코드'보다 위대하다
9년차 개발자가 된 지금, 내가 뼈저리게 느낀 건 세상에 완벽한 코드는 존재하지 않는다는 사실이야. 비즈니스는 빠르게 변하고, 기술 트렌드도 계속 바뀌거든. 내가 오늘 밤새워 짠 완벽한 코드가 내일 비즈니스 요구사항 한 줄에 휴지조각이 되기도 해. 그래서 나는 완벽주의를 내려놓고 '동작하는 최소한의 제품(MVP)'을 빠르게 만드는 연습을 시작했어.
- 일단 기능이 돌아가게 만든다.
- 코드가 지저분해도 일단 배포해서 사용자의 피드백을 받는다.
- 피드백을 바탕으로 조금씩 리팩토링하며 개선한다. 이 순서로 일하기 시작하면서 개발 속도가 엄청나게 빨라졌고, 무엇보다 개발이 다시 재미있어지더라고. 완벽에 대한 부담감을 내려놓으니 오히려 창의적인 아이디어가 더 많이 떠올랐어.
에러 메시지는 실패가 아니라 이정표일 뿐이야
완벽주의 성향을 가진 친구들은 에러를 마주했을 때 유독 큰 좌절감을 느끼곤 해. 마치 내 실력이 부족해서 에러가 난 것처럼 생각하거든. 하지만 개발에서 에러는 지극히 자연스러운 과정이야. 나도 연차가 쌓이면서 에러를 대하는 태도가 완전히 달라졌어. 예전에는 에러 화면을 보면 가슴이 철렁 내려앉았지만, 지금은 "아, 여기서 막혔구나. 그럼 이 길을 고쳐가면 되겠네" 하고 덤덤하게 받아들여. 완벽한 개발자는 에러를 안 내는 사람이 아니라, 에러를 유연하게 해결하고 그 과정에서 배우는 사람이야. 너의 불완전한 코드와 에러 속에서 진짜 성장이 일어나는 법이거든.
💬 수민의 한마디 완벽함은 행동을 미루게 만드는 가장 달콤한 핑계야. 엉망진창인 코드라도 일단 세상에 나오면 개선할 수 있지만, 머릿속에만 있는 완벽한 코드는 아무것도 바꿀 수 없어. 완벽함 대신 '완료함'을 목표로 삼아봐. 지금 작성하고 있는 그 코드, 조금 지저분해도 괜찮아. 픽셀이 조금 어긋나도, 리렌더링이 조금 일어나도 괜찮으니 일단 끝까지 만들어서 배포해 봐. 너의 불완전한 첫걸음이 결국 너를 훌륭한 개발자로 만들어 줄 테니까. 언제나 너의 도전을 응원할게.