사이드 프로젝트 3개 만들고 배운 것
완성한 것, 포기한 것, 의미 있었던 것. 사이드 프로젝트 3개의 여정.
2주 차에 포기한 커피 앱 이야기부터
React Native로 커피 기록 앱을 만들려고 했다. 매일 마시는 커피의 원두, 추출 방식, 맛 평가를 기록하고 통계를 보여주는 간단한 앱. iOS와 Android를 동시에 지원하면 효율적이겠다 싶었다.
2주 차에 포기했다. 네이티브 모듈 호환성 문제로 빌드가 안 됐고, 해결하는 데 시간을 너무 많이 썼다. 정작 만들고 싶은 기능은 하나도 구현하지 못했다. 여기서 배운 건 "배우고 싶은 기술"과 "만들고 싶은 제품"을 동시에 추구하면 둘 다 실패한다는 거다.
지난 2년간 사이드 프로젝트 3개를 만들었다. 하나는 성공, 하나는 저 커피 앱처럼 포기, 하나는 나만 쓰고 있다.
북마크 서비스: Product Hunt 20위권에 들었다가
첫 번째 프로젝트는 개발자용 북마크 서비스였다. Pocket이 범용적이라서 개발자에게 최적화된 걸 만들고 싶었다. Next.js + Supabase로 2주 만에 MVP를 만들었다. 크롬 익스텐션으로 원클릭 저장 기능도 붙였다.
Product Hunt에 올렸더니 Day rank 20위 안에 들었다. 사용자가 300명까지 늘었다. 근데 여기서 멈췄다. 사용자 피드백을 반영하고, 버그를 고치고, 서버를 관리하는 일이 퇴근 후의 에너지를 전부 잡아먹었다.
3개월 차에 업데이트를 멈췄고, 사용자는 서서히 떠났다.
사이드 프로젝트는 만드는 게 아니라 유지하는 게 어렵다.
출퇴근 시간 추적기: 1년 넘게 매일 쓰는 중
세 번째는 Git 커밋 로그 기반으로 출퇴근 시간과 작업 시간을 자동으로 기록하는 CLI 도구였다. 매달 근무시간 보고서 작성이 귀찮아서 만들었다.
이건 나만을 위한 도구라서 부담이 없었다. Go로 CLI를 만들었고, 3일 만에 완성했다. 다른 사람이 쓸 필요가 없으니 UI도 없고, 에러 처리도 최소한으로 했다.
(사실 그냥 Go를 써보고 싶었다.)
재밌는 건, 이게 가장 오래 쓰고 있는 프로젝트라는 거다. 1년 넘게 매일 쓴다. 사이드 프로젝트의 최고의 사용자는 자기 자신이다.
세 프로젝트에서 공통으로 느낀 것
첫째, 2주 안에 작동하는 무언가를 만들어야 한다. 그보다 길어지면 흥미를 잃는다.
둘째, 기술 스택은 이미 아는 것 하나 + 새로운 것 하나 조합이 최적이다. 모든 게 새로우면 삽질만 하다가 끝난다.
셋째, 완벽함을 추구하면 안 된다. 사이드 프로젝트에서 테스트 코드 100% 커버리지를 달성할 필요는 없다. 작동하면 된다. 리팩토링은 나중에. 아니, 안 해도 된다.
커리어에 미친 영향
북마크 서비스를 만들면서 Supabase를 익혔고, 회사 프로젝트에 적용할 수 있었다. Go CLI를 만들면서 Go를 배웠고, 회사의 내부 도구를 Go로 만드는 계기가 됐다.
직접적인 수익은 없었지만, 기술적 성장과 자신감은 확실히 얻었다. 면접에서 "개인 프로젝트 있으세요?" 질문에 자신 있게 대답할 수 있게 된 것도 덤이다.
네 번째 프로젝트를 구상 중이다
규칙을 정했다. 기술은 익숙한 것만 쓴다. 2주 안에 MVP를 배포한다. 나만 쓸 거라는 전제로 만든다. 완성만 하면 그걸로 충분하다.