나는 47개의 미완성 사이드 프로젝트가 있다. 내가 그것에 대해 죄책감을 느끼지 않는 이유.

발행: (2026년 2월 25일 오전 10:13 GMT+9)
21 분 소요
원문: Dev.to

Source: Dev.to

Overview

지난 주에 ls ~/projects 명령을 실행해서 폴더 수를 직접 세어봤어요.

47.

47개의 프로젝트. 몇 가지 하이라이트를 보여드릴게요:

~/projects
├── todo-app-v1/
├── todo-app-v2/
├── todo-app-final/
├── todo-app-FINAL-final/
├── social-network-app/          # 그냥 로그인 화면 뿐이에요 lol
├── crypto-tracker-2023/         # API 키들의 집단 무덤
├── fitness-app/                 # 내 생활 습관을 생각하면 아이러니하죠
├── weather-app-but-cool/        # 별로 멋지지 않았어요
├── tinder-for-dogs/             # 묻지 마세요
├── my-portfolio-site-v7/        # v1부터 v6까지도 여기 있어요
├── chat-app-realtime/           # 약 10분 정도 실시간이었어요
├── ai-wrapper-startup/           # 모두가 하기 전에 했죠
├── expense-tracker/              # $0 추적, $0 수입
├── recipe-app/                  # 요리를 못해요
├── markdown-editor/             # VS Code를 쓰면서 포기함
└── … 32 more

저는 다니일, 19살이고 iOS 앱을 직업으로 만들고 있습니다. 제 프로젝트 폴더는 디지털 묘지와도 같아요. 그 폴더들 각각은 “이번이 바로 그거야” 라는 에너지로 시작했지만, 2주 뒤면 새로운 Xcode 프로젝트를 열게 됩니다.

익숙하지 않나요?

죄책감은 실재한다

지금 바로 트위터를 열어보세요. 세 번 정도 스크롤하면 누군가가 “방금 배포했어요!” 라는 글과 완벽한 작은 앱의 스크린샷을 올린 것을 볼 수 있을 겁니다. 일을 마치는 것에 대한 문화가 형성되어 있죠. 생산성 전문가들은 성공의 비결은 끝까지 해내는 것이라고 말합니다:

“시작한 일을 끝내라.”
“아이디어는 무가치하고, 실행이 전부다.”
“마지막 10 %가 승자와 패자를 가른다.”

멋지군요. 그럼 나는 47배나 패자인가 보네요.

한때는 미완성 프로젝트가 정말 신경 쓰이곤 했습니다. 그 폴더를 볼 때마다 수치심과 좌절감이 뒤섞인 이상한 감정이 들었죠. 왜 나는 뭔가를 끝낼 수 없을까? 내가 게으른 걸까? 내가 나쁜 개발자인가? ADHD를 가진 금붕어 수준의 집중력인가?

레딧에서 사람들의 다듬어진 앱을 보고는 “그 사람은 배포했으니 나보다 낫다.” 라고 생각했습니다. 그 사이 나는 할 일 관리 앱 네 개를 가지고 있지만, 어느 것도 실제로 내 할 일을 추적하지 못하고 있었습니다.

생산성 인터넷은 프로젝트를 끝내지 못하는 것을 도덕적 실패로 만들었습니다. 사이드 프로젝트를 포기하면, 기본적으로 ‘내게는 그럴 능력이 없다’는 것을 인정하는 셈이죠.

그건 쓰레기 같은 말입니다. 그리고 그 이유를 알려드리겠습니다.

하지만 모든 죽은 프로젝트가 나에게 무언가를 가르쳐 주었다

프로젝트 폴더에 있던 47개의 시체 하나하나가 나에게 무언가를 주었다. 포트폴리오 작품도, 사용자도 아니었고, 실제로 매일 내 업무에서 사용하는 기술이었다.

SwiftUI를 가르쳐 준 todo 앱들

네 개 모두.

  • 첫 번째는 체크박스가 있는 리스트였고, @State가 뷰를 업데이트하지 않는 이유를 알아내는 데 이틀이 걸렸다.
  • 두 번째는 Core Data를 추가하려다 무너졌다.
  • 세 번째 시도에서 나는 비로소 SwiftUI의 데이터 흐름을 이해했다.
  • 네 번째는 커스텀 todo 앱이 필요 없다는 걸 깨닫고 포기했다.

결과: 나는 SwiftUI를 차갑게(완전히) 알게 되었다. 앱을 완성한 것이 아니라 프레임워크 학습을 마친 것이다.

WebSocket을 가르쳐 준 채팅 앱

“다음 Discord를 만들겠다.”(웃음) 라는 목표가 있었다. 두 명의 사용자가 실시간으로 메시지를 주고받는 수준까지 만들었고—음성, 채널, 파일 공유는 없었다. 일주일 동안 다음을 배웠다:

  • WebSocket 연결이 어떻게 동작하는지
  • 불안정한 Wi‑Fi 환경에서 재연결이 어떻게 처리되는지
  • 서버가 다운될 때 대기 중인 메시지는 어떻게 되는지

6개월 뒤, 한 클라이언트가 iOS 앱에 실시간 기능을 원했다. 나는 이미 방법을 알고 있었고, 그 지식으로 보수를 받았다. 고마워, 죽은 채팅 앱.

결제 API를 가르쳐 준 이커머스 사이트

맞춤형 폰 케이스를 파는 스토어가 목표였다. 케이스 하나도 디자인하지 않았지만, Stripe 연동, 웹훅 설정, 결제 실패 및 환불 같은 엣지 케이스 처리를 3일 동안 했다. 프로젝트는 제품이 전혀 등록되지 않은 채 사라졌지만, 이후 실제 프로젝트에 인앱 구매를 도입할 때 처음부터 시작하지 않아도 되었다.

패키지 배포를 가르쳐 준 CLI 도구

Swift 코드를 포맷팅하는 커맨드‑라인 툴을 만들었다. 어느 정도 동작했지만 SwiftFormat보다 낫지는 않았다. 그래도 다음을 배웠다:

  • Swift 패키지를 어떻게 구조화하는지
  • 괜찮은 README를 작성하는 방법
  • 레지스트리에 배포하고 버전을 관리하는 방법

툴 자체는 다운로드 수가 0이지만, 그 지식은 이후 수십 번이나 유용하게 쓰였다.

상태 머신을 가르쳐 준 게임

2D 플랫포머를 만들려고 했다. 달리고 점프할 수 있는 캐릭터는 만들었지만, “달리기 + 점프 + 공격 + 피격”을 처리하려니 상태 머신이 필요하다는 걸 깨달았다. 일주일 동안 상태 머신에 대해 공부했다. 게임은 출시되지 않았지만, 이제는 복잡한 UI를 만들 때마다 상태 머신을 사용한다.

API 속도 제한을 가르쳐 준 AI 래퍼

2023년 최고 에너지: “GPT‑4를 멋진 UI로 감싸서 백만장자가 되겠다.” 백만장자 부분은 이루어지지 않았다. 하루 오후에 API 크레딧 40달러를 탕진했는데, 속도 제한, 토큰 예산, 캐싱을 이해하지 못했기 때문이다. 비싼 교훈이었지만, 다시는 같은 실수를 저지르지 않는다.

이 프로젝트들은 하나도 배포되지 않았다. 하지만 모두 나를 더 나은 개발자로 만들었다.

왜 “모든 것을 끝내라”는 조언이 나쁜가

“시작한 일은 반드시 끝내라”는 조언은 실제로 개발자에게 해롭습니다—특히 경력 초기에 말이죠.

만약 제가 첫 번째 todo 앱을 끝낼 때까지 강제로 계속했다면, 아무도 쓰지 않을 무언가를 다듬는 데 몇 주를 보냈을 겁니다. 새로운 것을 배우지 못하고, 앱 스토어에 이미 만 가지 버전이 존재하는 앱의 UI 수정과 예외 상황을 파고드는 데만 시간을 썼을 테니까요.

대신 저는 학습이 멈출 때 움직였습니다. 그리고 그게 핵심입니다.

sunk‑cost fallacy 라는 것이 있습니다. 들어보셨을 겁니다: “이미 40시간을 투자했으니 이제 그만둘 수 없어.” 그렇지 않습니다. 그 40시간은 계속하든 안 하든 사라진 것이죠. 중요한 것은 남는 지식과 새로운 기술을 얻기 위해 나아가는 것입니다.

결론: 미완성 프로젝트는 실패가 아니라 디딤돌입니다. 학습을 받아들이고, 죄책감을 내려놓으며, 계속해서 만들어 나가세요.

사이드 프로젝트를 그만둘 때를 아는 법

다음 40 시간 동안 새로운 것을 배우지 못하거나 가치 있는 결과물을 만들지 못한다면, 포기한 사람처럼 보이기 위해 시간을 낭비하는 겁니다.

프로젝트를 포기할 시점을 아는 것은 정말 중요한 기술입니다. 제 본업에서 저는 2주 차에 중단했어야 할 기능에 팀이 몇 달씩 투자하는 모습을 보았습니다. “이미 너무 많이 투자했으니” 라는 이유로 계속 진행했죠. 이는 끈기가 아니라 노력으로 가장한 고집입니다.

사이드 프로젝트를 그만두는 것은 우선순위 결정입니다. 제한된 시간과 에너지를 더 높은 수익을 가져다줄 일에 쓰기로 선택하는 것이죠. 이것이 바로 시니어 개발자들이 하루 종일 하는 일: 무엇을 만들지 않을지 결정하는 일입니다.

프로젝트를 포기할 때마다, 어떤 것이 노력할 가치가 없는지 판단하는 능력이 향상됩니다. 이 능력은 완성된 todo‑app보다 훨씬 큰 보상을 가져다줍니다.

언제 그만두고 언제 밀어붙일까

나는 일이 어려워진다고 해서 모든 것을 포기하라는 것이 아니다—그것은 정반대의 극단이며 똑같이 나쁘다. 어떤 프로젝트는 당신의 끈기를 필요로 한다; 핵심은 어떤 프로젝트가 그런지 아는 것이다.

동기가 사라지기 시작할 때 나는 스스로에게 네 가지 질문을 하게 되었다. 대부분에 “no” 라고 답한다면, 아마도 떠날 때일 것이다.

  1. 아직 새로운 것을 배우고 있나요?
    매일 프로젝트를 하면서 어제 몰랐던 무언가를 배운다면 계속 진행하라. 같은 화면을 연결하고, 같은 CRUD 작업을 작성하고, 이미 알고 있는 패턴을 복사하는 반복적인 작업만 하고 있다면, 이미 가치를 추출한 것이다. 프로젝트는 그 목적을 다한 것이다.

  2. 누구(나 포함)가 실제로 이걸 사용할까요?
    무자비하게 솔직해져라. “누군가 이론적으로 사용할 수 있을까”가 아니라 “내가 직접 내 폰에 설치하고 한 번 이상 열어볼까?”가 핵심이다. 내 네 개의 todo‑앱은 이 테스트에서 크게 실패한다. 세상은 또 다른 todo‑앱을 필요로 하지 않는다. 이미 500개의 대안이 존재하고 내 것이 의미 있게 다르지 않다면, 그것은 신호다.

  3. 재미있나요, 아니면 일이 되었나요?
    사이드 프로젝트는 개발자가 제품 매니저의 감시 없이 원하는 것을 만들 수 있는 즐거운 부분이어야 한다. 사이드 프로젝트가 두 번째 직장처럼 느껴진다면 뭔가 잘못된 것이다. 프로젝트 자체가 더 이상 흥미롭지 않거나, 의무감 때문에 억지로 계속하고 있는 것이다. 어느 쪽도 계속 진행할 좋은 이유가 아니다.

  4. 어려워서 그만두는 건가, 아니면 의미가 없어서 그만두는 건가?
    이는 솔직한 자기 성찰이 필요하다. “어려워서”는 그만두는 이유가 아니다. 나는 어려워서 프로젝트를 포기한 적이 전혀 없다. 의미가 없어져서 47개의 프로젝트를 포기했다. “네트워킹을 이해하지 못한다”(밀어붙여라, 필요하니까)와 “네트워킹은 이해했지만 이 채팅 앱은 두 사람만 대화한다”(그만두라, 목표는 달성했으니) 사이에는 큰 차이가 있다.

점수가 4점 중 0점 또는 1점이라면, 물러나세요. 죄책감은 없습니다. 그 프로젝트를 졸업한 겁니다.

나의 단 하나 완성된 프로젝트 (그리고 왜 성공했는가)

47번의 시도 중, 실제로 마감선을 통과한 프로젝트는 하나뿐이었습니다: 바로 재무 추적 앱. 화려하지도 않고 “혁신적”도 아니었지만, 좋은 이유로 살아남았습니다.

  • 실제 문제: 나는 돈 관리에 형편없었습니다. 내 현금이 어디로 가는지 볼 수 있는 도구가 필요했죠. 이것은 “사람들이 원한다면…”이라는 아이디어가 아니라, “내일이라도 꼭 필요해”라는 절박함이었습니다.
  • 즉각적인 사용자: 나는 첫날부터 나 자신의 사용자였습니다. 매일 아침 앱을 열고, 그날 저녁에 모든 불편함을 고쳤습니다. 피드백 루프가 즉시 이루어졌고, 사용자가 무엇을 원할지 추측할 필요가 없었습니다.
  • 엄격한 마감: “다음 달 시작 전에 작동하도록 해서 한 달 전체 지출을 추적하고 싶다.” 3주. 과도하게 설계하거나, 소셜 피드, AI 어시스턴트, 혹은 다른 반짝이는 기능을 추가할 여유가 없었습니다.
  • 터무니없이 작은 범위: 화면 3개—지출 추가, 지출 보기, 월간 요약 보기. 처음에는 카테고리도 없고(나중에 추가), 차트도 없고(나중에 추가), 내보내기 기능도 없었습니다(아직도 없습니다). 가장 작지만 유용한 형태였습니다.

이 프로젝트와 나머지 46개의 차이는 재능이나 규율이 아니라 맥락이었습니다. 나는 실제 문제와 실제 마감일을 가지고 있었고, 다른 46개는 “만약에” 프로젝트였습니다. 이 프로젝트는 “지금 당장 필요해” 프로젝트였던 것이죠.

Source:

당신의 ~/projects 폴더는 묘지가 아니다

예전엔 내 프로젝트 폴더를 묘지처럼 생각했다—버려진 꿈과 깨진 약속이 모여 있는 슬픈 장소라고. 이제는 그것을 훈련장에 가깝게 본다.

그 안의 모든 프로젝트는 하나의 운동이었다. 어떤 것은 스프린트였고(AI 래퍼는 사흘 동안만 지속됐다). 어떤 것은 장거리 달리기였으며(그 게임은 두 달 동안 진행됐고 내가 그만두기 전까지). 모든 프로젝트가 지금도 쓰는 근육을 키워줬다.

반쯤 끝난 앱들로 가득 찬 폴더를 바라보며 죄책감을 느낀다면, 멈춰라. 그 폴더를 열고 실패가 아니라 각 프로젝트가 가르쳐 준 것을 적어보라. 놀라게 될 것이다.

  • 그 “실패한” 날씨 앱? API 통합을 가르쳐 주었다.
  • 그 “버려진” 블로그 엔진? 인증 방식을 가르쳐 주었다.

당신은 그 프로젝트들을 실패한 것이 아니라, 배운 뒤 교훈이 끝났을 때 넘어간 것이다.

실제로 나를 두렵게 하는 개발자는 47개의 미완성 프로젝트를 가진 사람도 아니다. 아무것도 없는 사람이다—왜냐하면 그들은 실험도 하지 않고, 완성되지 않을 수도 있는 무언가를 시작할 호기심조차 없기 때문이다.

그래서 맞다, 나는 47개의 미완성 사이드 프로젝트를 가지고 있다. 솔직히 말해서? 이번 주말에 48번째를 시작할 것 같다: 뽀모도로 타이머. 두 주 안에 마무리할 예정이다.


이 글이 도움이 되었다면, Telegram에서 이런 내용들을 더 공유하고, Boosty에서 개발자 툴킷을 판매하고 있다.

0 조회
Back to Blog

관련 글

더 보기 »