Showing Posts From

프로젝트

사이드 프로젝트 3번 접은 개발자가 배운 것

사이드 프로젝트 3번 접은 개발자가 배운 것

사이드 프로젝트 3번 접은 개발자가 배운 것 출근했다. 월요일이다. 슬랙을 켰다. 금요일부터 쌓인 메시지 47개. 레거시 시스템 버그, 배포 관련 문의, 후배 코드 리뷰. 일단 무시하고 커피를 마신다. 첫 번째다. 어제 밤, 침대에서 다시 생각했다. 사이드 프로젝트 얘기다. 정확히는 사이드 프로젝트 '접은 걸' 생각했다. 3번 접었다. 3번 다. 회사 일 외에 뭔가 만들고 싶은 게 없는 게 아니다. 문제는 그게 아니다. 시작하고 2주 뒤 현실이 와서 꺾여버린다. 아내가 "너 또 안 할 거다"라고 할 때, 그게 가장 싫다. 왜냐하면 맞으니까.프로젝트 1번: 주식 앱 (1주일 반 버틴 것) 작년 2월이었다. 회사에서 Redis 사용 경험이 필요했다. 그러면 사이드로 만들면서 배우자고 생각했다. 주제는 주식이었다. 실시간 시세를 캐싱하고, 사용자 포트폴리오를 추적하고, 매매 알림을 주는 앱. "이번엔 다르다"고 다짐했다. 첫 주말은 열정이었다. ERD를 그렸다. API 설계했다. Redis 아키텍처도 다 구상했다. GitHub에 저장소까지 만들었다. 커밋 메시지는 "initial commit: stock tracking app with real-time cache strategy". 멋있었다. 월요일이 왔다. 회사에서 Redis 관련 긴급 버그가 터졌다. 프로덕션 캐시 일관성 문제. 밤 10시까지 붙들었다. 화요일은 출근해서 그 문제를 추적했다. 수요일엔 후배가 물어봤다. "시니어, 이 쿼리 왜 느려요?" 30분을 설명했다. 목요일에 사이드 프로젝트를 다시 봤다. 코드가 낡아 보였다. 뭔가 잘못된 느낌. Redis 설정을 다시 봤다. 생각을 정리하려고 또 다른 설계를 했다. 금요일엔 아무것도 못 했다. 주말엔 침대. 월요일에 GitHub에 들어갔다가 나왔다. 더 이상 하기 싫었다.프로젝트 2번: 개인 블로그 플랫폼 (10일) 4월이었다. 트위터에서 개발자들이 개인 블로그 갖는 게 중요하다고 했다. 그러면 플랫폼을 만들자고 생각했다. Medium 같은 서비스. 마크다운 에디터, 태그 시스템, 댓글, SEO 최적화. 대단했다. "이번엔 정말 다르다"고 했다. 진짜 다를 줄 알았다. 첫 3일은 정말 빨랐다. Spring Boot 프로젝트 세팅, JPA 엔티티 설계, 마크다운 파싱 라이브러리 통합. 생각보다 쉬웠다. "아, 이게 진짜 가능하겠네"라고 생각했다. 그 생각이 문제였다. 4일차: 마크다운 렌더링에서 보안 이슈가 보였다. XSS 방지. 10가지 경우의 수를 고민했다. 하나 구현했다. 나머지 9개는 다음에 하기로. 5일차: 데이터베이스 마이그레이션을 생각했다. 유저가 블로그 이동할 때 데이터를 어떻게 옮길까. 너무 복잡했다. 다음 버전에 미뤘다. 6일차: 아내가 물어봤다. "블로그 만들어?" "응, 만들고 있어." "언제 오픈?" 그 순간 마음이 내려앉았다. 언제냐고. 모르잖아. 7일차: 코드를 다시 봤다. 마크다운 파싱 로직이 마음에 안 들었다. 전부 다시 짰다. 사실 필요 없었다. 8일차: 8일차에 뭘 했는지 모른다. GitHub 커밋 기록도 없다. 9일차: GitHub에 들어갔다가 나왔다. 10일차: 프로젝트를 삭제했다. 아니, 삭제 안 했고 그냥 방치했다. 지금도 있다. Private 저장소로. 패배의 증거.프로젝트 3번: 자동화 도구 (2주) 7월이었다. 회사에서 매번 배포할 때마다 같은 작업을 반복했다. 체크리스트 확인, 데이터베이스 마이그레이션 스크립트 검증, 알림 전송. 3번 접은 개발자가 배웠어야 할 것: 작은 게 최고다. 근데 이번엔 작게 시작했다. 진짜. 배포 자동화 도구. CLI 하나면 끝. 아무것도 웹 없이. 아무것도 복잡하게 없이. 단순함. 첫 주: 전부 다 했다. Python으로 CLI 도구. 8시간 안에 뼈대 완성. 회사에서 써봤다. 먹혔다. 동료들이 물어봤다. "이거 언제 만들었어?" "어제 밤." "진짜?" 뿌듯했다. 둘째 주: 추가 기능을 생각했다. 롤백 기능, 배포 로그 기록, 실패했을 때 자동 알림. 한 가지씩 추가하다 보니까 복잡해졌다. 코드가 길어졌다. 테스트 케이스도 많아야 했다. 처음 간단함은 어디갔나. 그러던 와중에, 회사에서 새로운 배포 시스템 도입 공지가 났다. 외부 솔루션. 3개월 뒤면 우리 도구 필요 없어진다. 그걸 봤을 때, 손에서 힘이 빠졌다. 왜 하고 있지. 이 느낌 또 왔다. GitHub에 들어갔다가 나왔다. 3번 다다.배운 것들 (솔직하게) 교훈 같은 건 안 가르칠 거다. 인터넷에 넘쳐난다. "작게 시작하세요", "꾸준함이 중요합니다" 같은 거. 그런 건 다 알고 있었다. 근데 못 했다. 첫 번째: 완성 중독이 있다는 것. 프로젝트를 시작하면 '다 만들어서 공개해야지'가 머릿속 기본값이 된다. 그렇게 되면 나머지 모든 것들은 완성도가 낮으면 공개 못 한다고 생각한다. 주식 앱도 그랬다. "아직 알고리즘이 부족하니까", "UI가 못생겼으니까". 이유는 많다. 근데 공개 안 하면 뭐가 다른가. 그냥 개인 폴더에서 썩는 거다. 그게 낫나. 두 번째: 번아웃이 일찍 온다는 것. 회사에서 7시간 일하고, 퇴근 후 2시간을 사이드 프로젝트에 쓴다고 하자. 그럼 뇌는 코딩만 12시간 한다는 거다. 주말엔? 더 하고 싶은 마음이 안 생긴다. 그냥 침대가 끌린다. 근데 계속 자책한다. "왜 못 하지. 다들 하는데." 다들 안 한다. 그냥 SNS에서 자랑하는 사람들만 보인다. 세 번째: 공동작업이 없으면 쉽게 포기한다는 것. 회사 프로젝트는 스팩 변경되면 짜증나도 한다. 왜냐면 누군가 기다리니까. 근데 사이드 프로젝트는? 오직 자기만을 위한 거. 오직 자기만이 유일한 스테이크홀더다. 자기 마음만 중요하면 사실 중요한 게 아니다. 스스로에겐 자비롭기 쉽다. 네 번째: 진짜 만들고 싶은 건 따로 있다는 것. 3개 프로젝트 다 "이거 배우고 싶어서" 또는 "포트폴리오 될 것 같아서" 시작했다. 정말 그 앱이 필요해서가 아니었다. 내가 주식을 몰라서가 아니라 Redis를 배우고 싶어서. 블로깅이 하고 싶어서가 아니라 마크다운 파싱이 하고 싶어서. 이건 말이 안 된다. 뭔가를 잘 만들려면 그걸 정말 원해야 한다.지금 지금은 뭘 하고 있나. 사이드 프로젝트? 안 한다. 필요 없다고 생각했나. 아니다. 밤 10시에 누워 있으면서 생각한다. 앱 만드는 거. 블로그 쓰는 거. 뭔가를 만드는 거. 근데 아침이 되면 출근한다. 회사에선 할 게 많다. 퇴근하면 피곤하다. 주말엔 쉰다. 이게 계획된 결과인가. 아니다. 그냥 그런 거다. 에너지 관리의 실패. 혹은 진짜 필요 없는 걸 만들려고 했던 거고, 그래서 자연스럽게 포기된 거다. 그럼 이제 뭘 해야 하나. 아내가 말했다. "넌 회사 일로 충분히 바빠. 왜 더 해." 맞다고 생각했다. 근데 자책은 계속 된다. 왜인지는 모르겠다. 아마도 개발자라는 직업이 계속 뭔가 배우고 빌드해야 한다고 강요하는 것 같다. 그게 나쁜 건 아니다. 근데 그게 회사에서 충분하다면, 사이드는 뭐 하는 거지. 최근에 생각을 바꿨다. 사이드 프로젝트는 재미 없으면 버린다. 배우기 위해서가 아니라, 그냥 만드는 게 재미있어야 한다. 근데 일단 3번 실패한 개발자 입장에선, 4번째를 어떻게 믿고 시작하나. 그게 문제다.근데 뭔가 배운 건 있다 프로젝트를 접으면서 배운 코드들은 남았다. Redis 아키텍처 방식, 마크다운 파싱 로직, Python CLI 도구 구조. 그건 버려진 게 아니다. 회사에서 쓸 때 나온다. "아, 저 방식 어디서 봤는데" 하면서. 아, 그렇구나. 사이드 프로젝트가 완성돼야 의미 있는 게 아니다. 배운 것들이 다른 데서 쓰일 때 의미가 있는 거다. 그럼 3번 접은 게 완전 손해는 아니네. 다만, 시간이 아까운 건 사실이다. 4개월이 그냥 사라졌다. 대신 뭘 배웠나면, 배웠다는 것 자체를 증명하기 힘들다. 코드도 없고, 완성된 앱도 없다. 그냥 "배웠어"라고 말할 수밖에. 근데 그게 현실이다. 개발자의 삶은 많은 부분이 그렇다. 배웠는지 모르고, 못 했는지 안 했는지도 모른다. 그냥 계속한다. 정해진 시간에 출근해서, 정해진 일을 하고, 퇴근한다. 사이드 프로젝트는 그걸 벗어나려는 시도다. 하지만 결국 마찬가지다. 번아웃이 올 때까지 한다. 그리고 멈춘다. 다음 번엔 다를 거라고 생각하면서. 이건 교훈이 아니다. 그냥 현실이다.커피를 마신다. 두 번째다. 회사에선 지금 배포 준비 중이다. 우리 팀이 만든 기능이 나간다. 후배가 물어봤다. "프로덕션에서 Redis 캐시 문제 없을까요?" 내가 답했다. "몰라. 나가고 봐." 아, 그거 사이드에서 배웠던 거다. 문제는 나가야 본다.[IMAGE_4] [IMAGE_5]결국 다음 사이드 프로젝트도 접할 것 같다.