Showing Posts From

프로젝트

프로젝트 데드라인 일주일 앞두고 하는 생각들

프로젝트 데드라인 일주일 앞두고 하는 생각들

프로젝트 데드라인 일주일 앞두고 하는 생각들 D-7 월요일 아침. 슬랙 알림이 울렸다. "다들 일정 괜찮으시죠? 다음 주 금요일 배포 확정입니다~" 괜찮을 리가 없다. 하지만 "네~"라고 답했다. 다들 그렇게 답했다. 지라 보드를 켰다. 'To Do' 컬럼에 티켓 12개. 'In Progress' 4개. 'Done'은 딱 3개. 계산기 두드릴 필요도 없다. 안 된다. 하지만 이상하게 여유롭다. 일주일이나 남았으니까. 7일이면 168시간이다. 자고 먹는 시간 빼도 70시간은 된다. 될 것 같다. 아니, 되게 할 수 있다. 점심은 김치찌개였다. 사장님이 "요즘 야근 많아요?"라고 물었다. "곧 많아질 것 같아요"라고 답했다. 오후 3시. 후배가 물었다. "형, 이거 API 응답 구조 이렇게 해도 돼요?" 코드를 봤다. 안 된다. 다시 설명했다. 30분 갔다. 오후 5시. 기획자가 슬랙 DM을 보냈다. "개발님, 이 기능 UX 좀 바꾸면 안 될까요? 간단한 건데..." 간단할 리가 없다. 하지만 일단 "검토해보겠습니다"라고 답했다. 저녁 먹고 생각하자. 퇴근길. 편의점에서 레드불 2캔을 샀다. 아직 마실 건 아니다. 그냥 보험이다.D-5 수요일. 이제 좀 현실이 보인다. 어제 'Done' 티켓 2개 추가했다. 총 5개. 남은 건 14개. 어? 늘었네. 기획자가 어제 "작은 기능" 3개를 추가했다. 작을 리가 없다. 오전 회의. 프로젝트 매니저가 물었다. "일정 괜찮으신가요?" 다들 고개를 끄덕였다. 나도 끄덕였다. 거짓말이다. 점심 먹으면서 후배한테 말했다. "이번 주 금요일까지 네 거 다 끝내야 돼. 다음 주는 통합 테스트하고 버그 잡는 주간이야." 후배가 물었다. "형, 솔직히 가능해요?" "글쎄." 오후 2시. 코드 리뷰 요청 5건. 다 봐야 한다. 내 일은? 저녁에. 오후 6시. 팀원 다섯 명 중 아무도 퇴근 안 했다. 말은 안 하지만 다들 안다. 이번 주는 그런 주다. 저녁 8시. 치킨 시켜먹었다. 회사 카드로. PM이 쏜다고 했다. 고마운데, 차라리 일정을 현실적으로 잡아줬으면. 밤 11시. 집에 가는 버스 안. 아내한테 카톡 보냈다. "나 이번 주 좀 늦을 것 같아." "알았어. 밥은 챙겨먹고." 고맙다. 근데 미안하다.D-3 금요일 밤 10시. 사무실에 우리 팀만 남았다. 'Done' 티켓 9개. 남은 거 10개. 이론상으론 절반. 실제론 70%는 남았다. 어려운 것들만 남았으니까. 옆자리 후배가 한숨 쉰다. "형, 이거 안 되는 거 같은데요." 코드 봤다. 안 된다. 설계를 다시 해야 한다. "일단 퇴근해. 주말에 내가 볼게." "형이요?" "응. 어차피 잠도 안 올 거 같아." 거짓말 아니다. 데드라인 앞두면 항상 그렇다. 자려고 누워도 머릿속에서 코드가 돈다. 'NullPointerException'이 꿈에 나온다. 밤 12시. 편의점 갔다. 레드불 하나 땄다. 삼각김밥 2개. 바나나우유. 계산대 알바생이 물었다. "야근이세요?" "네." "힘내세요." 고맙다. 근데 안 힘내도 해야 한다. 새벽 2시. 커밋 푸시했다. 일단 오늘은 여기까지. 내일 다시. 택시 탔다. 기사님이 물었다. "회사원이세요?" "개발자요." "아, 요즘 그거 힘들다며요." 맞다. 힘들다.D-1 목요일 저녁 7시. 내일이 배포일이다. 'Done' 티켓 17개. 남은 거 2개. 보기엔 거의 다 한 것 같다. 실제론 지옥의 문 앞이다. QA팀에서 버그 리포트가 올라오기 시작했다. 지금까지 8건. "치명적" 등급 3개. 해야 한다. 오후 8시. 긴급 회의. PM, 개발팀, QA팀 전원 참석. "최악의 경우 배포 연기할 수도..." 누가 말했다. 다들 침묵했다. 연기하면? 이 지옥이 일주일 더 연장된다. 그리고 다음 프로젝트 일정도 밀린다. 그건 더 지옥이다. "일단 해봅시다." 내가 말했다. 다들 고개 끄덕였다. 밤 11시. 아내한테 전화했다. "나 오늘 집 못 갈 것 같아." "...응. 조심해." 끊고 나서 죄책감. 하지만 지금은 생각할 시간이 없다. 새벽 4시. 버그 3개 고쳤다. 5개 남았다. 눈이 감긴다. 커피 한 잔 더. 새벽 6시. 동료가 말했다. "형, 일단 좀 자요. 9시에 다시 시작하죠." "그래야겠다." 회의실 소파에 누웠다. 알람 8시 30분. 30분 뒤엔 샤워하러 헬스장 갈 거다. 회사 옆 24시간 헬스장. 이럴 때 쓰라고 끊어놨다. 잠들기 전에 생각했다. '이번에 끝나면 이직 준비 시작하자.' 근데 매번 그렇게 생각한다. 그리고 까먹는다. 다음 프로젝트 시작하면. D-Day 금요일. 배포일. 아침 9시. 샤워하고 왔다. 편의점 김밥으로 아침. 모두 제자리에 앉았다. "시작하죠." 최종 점검. 코드 리뷰. 테스트. 다시 테스트. QA 확인. PM 확인. 그리고 기다림. 오후 2시. 배포 시작. 손이 떨린다. 항상 그렇다. 몇 년째 해도 긴장된다. 30분 후. "배포 완료되었습니다." 모니터링. 에러 로그 체크. API 응답 속도. DB 쿼리. 메모리 사용량. 모든 게 정상. 오후 3시. PM이 말했다. "다들 고생하셨습니다." 박수 소리. 피곤한 웃음들. 안도감. 그리고 허무함. "오늘 저녁 회식할까요?" "저 그냥 집 가서 자고 싶은데요." "그럼 내일 점심 제가 쏠게요." "그게 낫겠네요." 오후 5시. 퇴근했다. 정시 퇴근. 일주일 만이다. 버스 안. 창밖을 봤다. 사람들이 웃으며 걷는다. 저녁 약속이라도 있나보다. 부럽다. 집 도착. 문 열었다. 아내가 웃으며 맞이했다. "고생했어." 소파에 앉았다. TV 켰다. 넷플릭스. 아무거나 틀었다. 5분 만에 잠들었다. 그리고 토요일 아침. 늦잠 잤다. 12시에 일어났다. 휴대폰 봤다. 슬랙 알림 37개. 겁났다. 뭐가 터졌나. 천천히 확인했다. 다행히 버그 아니다. 다음 프로젝트 얘기다. "다음 주 월요일 킥오프 미팅 있습니다~" 한숨 나왔다. 또 시작이다. 아내가 물었다. "뭐해? 밥 먹어야지." "응." 점심 먹으면서 생각했다. 이번엔 진짜 이직 준비 해볼까. 근데 귀찮다. 이력서 쓰는 것도 일이다. 면접 준비도 일이다. 그냥 여기서 버티는 게 편하다. 오후. 소파에 누워서 유튜브 봤다. "개발자 이직 브이로그" 영상. 신기하다. 저 사람들은 어떻게 저 에너지가 있을까. 저녁. 치킨 시켰다. 아내랑 둘이 먹었다. 맥주 한 캔. 피곤해서 맛도 모르겠다. 밤. 침대에 누웠다. 천장을 봤다. '이번 프로젝트도 이럴까?' 알고 있다. 이럴 거다. 항상 그랬으니까. 계획은 항상 좋다. 처음엔 여유롭다. 중간에 뭔가 추가된다. 막판에 죽어난다. 배포하고 안도한다. 그리고 반복한다. 7년째 이 일 하는데, 아직도 적응 안 된다. 적응하면 안 되는 건가. 적응했다는 건 포기했다는 거니까. 눈 감았다. 내일 또 생각하자. 아니, 모레. 일요일은 쉬어야지. 근데 월요일 킥오프 미팅 자료 준비는 해야 하나. 일요일 저녁에 할까. 또 그렇게 된다. 항상 그렇다.다음 주 월요일, 또 '될 것 같은' 착각으로 시작할 거다. 그게 개발자다.

사이드 프로젝트 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]결국 다음 사이드 프로젝트도 접할 것 같다.