에너지 드링크 하루 2캔, 내 생명줄

에너지 드링크 하루 2캔, 내 생명줄

에너지 드링크 하루 2캔, 내 생명줄 아침 9시, 첫 번째 캔 눈 뜨자마자 손이 간다. 침대 옆 테이블. 핫식스 250ml. 따는 소리가 익숙하다. 푸슈. 첫 모금. 탄산이 목을 긁는다. 이제 시작이다. 씻지도 않고 노트북 켠다. 슬랙 확인. 새벽 3시에 온 메시지가 있다. "내일 아침까지 이거 급한데요." 내일이 오늘이다. 웃긴다.에너지 드링크를 마시기 시작한 게 언제였나. 정확히 기억난다. 2년 전. 첫 스타트업 입사 2주차. "개발자면 밤샘 정도는 해야지." 대표가 웃으며 말했다. 농담 같았다. 진담이었다. 그날 밤 11시까지 일했다. 집에 가니 1시. 씻고 누우니 2시. 다음날 9시 출근. 6시간 잤다. 졸렸다. 동료가 건넸다. 핫식스. "이거 먹으면 깬다." 마셨다. 30분 후 정신이 들어왔다. 신기했다. 그게 시작이었다. 점심 먹고, 두 번째 캔 12시 반. 점심은 김밥천국. 돈까스 6500원. 먹으면서 노트북 본다. AWS 비용 알림. 또 올랐다. RDS 인스턴스가 문제다. 쿼리 최적화 해야 하는데. "오늘 해야지." 이미 2주째 미루는 중이다. 1시. 사무실 복귀. 졸음이 온다. 점심 먹으면 당연하다. 오후 2시가 고비다. 냉장고를 연다. 레드불. 두 번째 캔.카페인 함량을 아냐. 핫식스 250ml: 62.5mg 레드불 250ml: 80mg 하루 두 캔이면 140mg 정도. 의학 자료 찾아봤다. 성인 권장량 400mg 이하. "아직 괜찮네." 이게 내 논리다. 근데 커피도 마신다. 아메리카노 2잔. 카페인 200mg 추가. 합계 340mg. 권장량 안쪽이다. "문제없어." 스스로를 속인다. 오후 4시, 슬럼프 카페인이 떨어진다. 몸이 안다. 집중력이 흐려진다. 코드가 안 보인다. 세 번째 캔을 고민한다. "참자. 저녁에 마시자." 10분 버틴다. 안 된다. 냉장고로 간다. 몬스터 에너지 355ml. 카페인 120mg. "오늘만." 매일 하는 말이다.친구가 물었다. 작년에. "그거 몸에 안 좋다며?" 안다. 당연히 안다. "끊을 거야." 3개월째 못 끊었다. 이유가 있다. 끊으면 일을 못 한다. 시도해봤다. 2주 전. "이번엔 진짜 끊는다." 첫날. 오전 11시부터 졸렸다. 코드 3줄 쓰는데 30분 걸렸다. 머리가 안 돌아갔다. 점심 먹고 더 심해졌다. 눈을 뜰 수가 없었다. 오후 3시. 대표가 불렀다. "이 기능 오늘 안에 되죠?" "...네." 냉장고로 갔다. 포기했다. 건강검진 결과지 지난달 받았다. 회사 단체 검진. 간 수치. 경계. 혈압. 높음. 수면의 질. 불량. 의사가 말했다. "스트레스 관리하세요. 카페인 줄이시고요." "네." 대답만 했다. 다음날부터 똑같았다. 아침 1캔, 점심 후 1캔. 바꿀 수가 없었다. 일정이 그대로인데. 혼자 하는 개발. 마감은 촘촘하다. 속도를 낼 방법은 카페인뿐이다. 아니, 그렇게 믿는다. 작년에 읽었다. 어떤 개발자 블로그. "카페인은 빚이다. 지금 집중력을 미래에서 빌려오는 것." 맞는 말이다. 안다. 근데 미래는 나중 문제다. 지금이 급하다. 오늘 배포 못 하면 내일 회의에서 까인다. 내일 회의에서 까이면 다음 주 일정이 더 빡빡해진다. 악순환이다. 끊을 타이밍이 없다. 밤 10시, 마지막 고민 퇴근 준비한다. 가방에 노트북 넣는다. 집에서 좀 더 해야 한다. 배포 전에 테스트. 냉장고를 본다. 레드불 1캔 남았다. "가져갈까." 고민한다. 5초. 가방에 넣는다. 집에 가는 지하철. 캔을 꺼낸다. 차갑다. 아직 안 땄다. "집 가서 마시자. 진짜 급할 때만." 11시. 집 도착. 노트북 켠다. 테스트 돌린다. 에러 3개. "씨발." 캔을 딴다. 푸슈. 마신다. 익숙한 맛이다. 새벽 2시까지 작업한다. 배포 완료. 침대에 눕는다. 잠이 안 온다. 카페인 때문이다. 당연하다. 유튜브를 켠다. 아무거나 본다. 4시가 돼서야 잔다. 6시간 후 알람이 울린다. 손이 또 간다. 침대 옆 테이블. 새로 산 핫식스 6캔 박스. "오늘도 화이팅." 스스로에게 말한다. 이게 정상인가 가끔 생각한다. 이게 정상적인 삶인가. 20대 후반. 건강검진에서 경고. 에너지 드링크 없으면 일 못 함. 주말에도 마신다. 습관이 됐다. 친구들 만나도 들고 간다. "너 그거 또 마셔?" "어. 몸이 찾네." 농담처럼 말한다. 웃긴 게 아니다. 전 회사 선배가 말했다. 2년 전. "개발자는 체력이다. 건강 챙겨." 못 챙긴다. 방법을 모른다. 일을 줄일 수 없다. 혼자 하는데. 카페인을 끊을 수 없다. 대안이 없다. 운동? 시간이 없다. 수면? 부족하다. 알고 있다. 건강한 식습관? 웃기는 소리다. 근데 재밌는 게 있다. 회사 냉장고 에너지 드링크. 내가 90% 먹는다. 나머지 사람들은 가끔 한 캔. 나는 하루 2~3캔. 기획자가 물었다. 지난주. "이거 누가 이렇게 먹어요?" "...저요." "헐. 건강 괜찮아요?" "괜찮아요." 거짓말이다. 끊을 수 있을까 솔직히 모르겠다. 이직하면 나아질까. 그것도 모른다. 대기업 가면 야근 없을까. 아니다. 거기도 바쁘다. 스타트업이 문제가 아니다. 개발 문화가 문제다. "빨리빨리." "오늘 안에." "내일 아침까지." 이게 당연한 세상이다. 버티려면 카페인이 필요하다. 다들 마신다. 커피든 드링크든. 나만 유난히 많이 마실 뿐이다. 언젠가 끊고 싶다. 30살 되기 전에. 아니면 결혼하기 전에. 아니면... 몸이 망가지기 전에. 근데 지금은 아니다. 오늘 마감이 있다. 내일 회의가 있다. 다음 주 배포가 있다. "나중에." 또 미룬다. 냉장고에 캔이 4개 남았다. "내일 사야겠다." 이미 장바구니에 담아뒀다. 핫식스 24캔. 무료배송.오늘도 캔을 딴다. 푸슈. 이게 내 삶이다.

전 직장 동기: '너 아직 거기야?' 그 한 마디

전 직장 동기: '너 아직 거기야?' 그 한 마디

카톡이 왔다 전 직장 동기 단톡방에 메시지가 떴다. "다들 연말 회식 언제야? 우리 것도 12월 20일로 잡혔는데" 누군가 답했다. "우리는 15일. 팀장님이 예약하셨대." 팀장. 그 단어가 눈에 들어왔다. 나는 에너지 드링크를 마시며 터미널을 봤다. 빌드 에러. 또. "민준아, 너는?" 이름이 호명됐다. 3초 고민했다. "우리는 아직. 12명이라 언제든지 가능할 듯ㅋ" ㅋ을 붙였다. 안 웃긴데.3년 전 우리는 같았다 신입 동기 5명. 모두 같은 SI 회사 입사. 우리는 똑같이 야근했다. 똑같이 불만 있었다. 똑같이 "여기서 배우고 나가자"고 했다. 2년 차 되자 하나둘 떠났다. 재훈이는 네이버. "이제 좀 숨통 트인다." 수진이는 카카오. "복지 미쳤어. 진짜." 동욱이는 삼성전자. "연봉이... 어, 많이 올랐어." 나도 이력서 넣었다. 면접도 몇 개 봤다. 근데 스타트업 대표가 연락 왔다. "민준씨 포트폴리오 봤는데, 우리 초기 멤버로 어때요?" 스톡옵션 0.5%. "상장하면 억 단위예요." 그때는 믿었다. 진짜로. 지금 그들은 재훈이 인스타 스토리. 팀 회식 사진. "우리 팀 최고👍" 팀이 있다는 게 부러웠다. 수진이 링크드인 업데이트. "Promoted to Senior Engineer" 3년 만에 시니어. 나는 여전히 주니어도 시니어도 아닌 '개발자'. 동욱이는 결혼 준비 중이래. "연봉도 올랐고, 이제 좀 안정됐어." 안정. 그 단어가 낯설다. 나는? AWS 콘솔 보다가 비용 알림 받고 식겁했다. "이번 달 $2,300 넘었습니다." 대표님께 슬랙 보냈다. "AWS 비용 최적화 필요합니다." 답장. "급한가요? 일단 기능 개발 먼저..."너 아직 거기야 추석 때 만났다. 동기 5명 중 4명. 재훈이가 물었다. "민준아, 너 그 스타트업 아직 있어?" "응. 아직." "거기 몇 명이라고 했지?" "12명." "아직도 12명이야?" "...응." 침묵. 짧았지만 길었다. 수진이가 끼어들었다. "근데 거기 재밌잖아. 네가 다 만드는 거." 고마웠다. 근데 위로는 아니었다. 동욱이가 말했다. "우리 회사 개발자 채용 중인데, 관심 있으면..." "아, 괜찮아. 지금 프로젝트 마무리 중이라." 거짓말이었다. 프로젝트는 언제나 진행 중이다. 마무리는 없다. 집에 와서 맥주 마셨다. 혼자. '너 아직 거기야?' 그 말이 계속 맴돌았다. 아직. 그 단어가 칼처럼 박혔다. 우리는 다른 길을 간다 그들은 팀이 있다. 나는 혼자다. 그들은 온보딩 받은 신입을 가르친다. 나는 스택오버플로우가 선배다. 그들은 장애 나면 시스템팀 부른다. 나는 내가 시스템팀이다. 그들은 코드리뷰 받는다. 나는 머지 버튼 누를 때 스스로에게 묻는다. "이거 맞나?" 그들은 연차 쓴다. 나는 연차 써도 슬랙 확인한다. 그들은 퇴근한다. 나는 '오늘은 일찍'이 10시다. 다른 건 당연하다. 대기업이랑 스타트업은 다르니까. 근데 가끔 생각한다. '나는 뭘 얻고 있는 거지?'그래도 나한테 있는 것 전체 서비스 아키텍처를 안다. 다. 프론트 어디서 API 호출하는지. 백엔드 어떻게 처리하는지. DB 스키마 왜 이렇게 설계했는지. 모른다. 내가 설계했으니까. 장애 나면 10분 안에 원인 찾는다. 로그 어디 찍히는지 다 알아서. AWS 인프라 구조도 머릿속에 있다. CloudFormation 템플릿 내가 짰으니까. 배포 파이프라인도 내가 만들었다. CI/CD 전부. 이게 3년 치 경험이다. 대기업 동기들은? 레거시 코드 일부만 본다. 담당 모듈만. "전체 서비스 구조요? 저도 잘..." 팀장한테 물어보래. 나는? 물어볼 사람이 없다. 내가 다 안다. 어쩔 수 없이. 이게 강점이다. 분명히. 근데 왜 자신이 없지? 이력서를 열었다 새벽 2시. 배포 끝났다. 이력서 파일을 열었다. 1년 전 작성한 거. 경력기술서 쓰기 시작했다. "풀스택 개발자로서 서비스 전체를 담당..." 지웠다. 너무 포괄적이다. "React, Node.js, PostgreSQL, AWS..." 기술스택만 나열하면 뭐하나. "사용자 10만 명 규모 서비스 단독 개발 및 운영..." 이건 좀 괜찮다. 근데 증명할 수 있나? 대표님께 추천서 부탁하면? "지금은 안 돼요. 프로젝트 끝나고..." 동료 추천은? 동료가 없는데. 시니어 검증은? 시니어가 없는데. 이력서 창을 닫았다. 모니터에 슬랙 알림. 대표님. "민준씨, 내일 오전에 급한 기능 하나만..." "네. 확인했습니다." 이력서는 다음에. 단톡방 메시지 "민준아 요즘 어때?" 수진이가 물었다. "응 그냥. 바빠." "너 진짜 혼자 다 해? 아직도?" "ㅇㅇ 곧 개발자 뽑는대." 6개월째 같은 말. "너 이직 생각은?" "있긴 한데, 지금은..." "지금은?" "프로젝트 마무리해야 돼서." 또 같은 핑계. 재훈이가 끼어들었다. "야 근데 솔직히 너 그 회사 떠나면 서비스 터지는 거 아니야?" "...ㅋㅋ 그럴 수도." "그럼 연봉협상 제대로 해야지. 너 없으면 안 되는 거잖아." 해봤다. 작년에. "민준씨 지금 급여도 스타트업 치고 적지 않아요." 적다. 대기업 동기들 연봉 들으면. "나중에 상장하면..." 나중은 언제인데. 메시지 입력창에 커서만 깜빡였다. 지웠다. 보내지 않았다. 장애가 터졌다 토요일 오후 3시. 친구들이랑 약속 있었다. 슬랙 알림 20개. 전화 5통. "서비스 안 돼요!" "결제 오류 나요!" "DB 연결 끊겼어요!" 옷 입다 말고 노트북 켰다. 로그 확인. DB 커넥션 풀 초과. 쿼리 하나가 테이블 전체를 스캔하고 있었다. 누가 배포했지? 나다. 어제 새벽에. "30분이면 됩니다." 친구들한테 카톡. "미안 좀 늦을 것 같아." 1시간 걸렸다. 쿼리 수정, 배포, 모니터링. 도착했을 때 다들 식사 끝나고 있었다. "야 미안. 장애가..." "괜찮아. 근데 너 진짜 힘들겠다." 힘든 게 아니다. 익숙한 거다. 더 무섭다. 이게 성장인가 대표님이 말했다. "민준씨 정말 많이 성장했어요." 뭐가 성장했지? 기술스택은 늘었다. React, Vue, Svelte 다 해봤다. 필요하니까. AWS 서비스도 20개 넘게 만져봤다. 비용 줄이려고. 모니터링 시스템도 구축했다. 장애 빨리 찾으려고. CI/CD 파이프라인도 3번 갈아엎었다. 배포 시간 줄이려고. 근데 이게 성장인가? 아니면 생존인가? 대기업 동기들은 '이번 분기 OKR'을 얘기한다. 나는 '오늘 할 일'도 못 끝낸다. 그들은 '커리어 패스'를 고민한다. 나는 '내일 출근'을 고민한다. 성장과 생존의 경계가 흐릿하다. 링크드인을 켰다 채용 공고가 떴다. "시니어 백엔드 개발자 모집 - 네이버" 자격요건 봤다. "5년 이상 경력..." 나는 3년. 탈락. 근데 실무 경험은? 혼자 다 했는데? "대규모 트래픽 처리 경험..." 우리 서비스 DAU 5만. 대규모는 아니다. "MSA 아키텍처 설계 및 운영..." 모놀리식이다. 쪼갤 인력이 없어서. "코드리뷰 및 주니어 멘토링..." 코드리뷰 받아본 적도 없는데 어떻게 하나. 창 닫았다. 내 경험은 독특하다. 깊이는 있는데 폭이 좁다. 아니, 폭은 넓은데 검증이 없다. 시장이 원하는 건 '검증된 전문성'. 나한테 있는 건 '검증 안 된 올라운더'. 그래도 못 떠난다 이력서 넣을까. 진지하게 고민했다. 근데 머릿속에 떠오르는 것들. 결제 모듈. 내가 짰다. 나만 안다. 배포 스크립트. 주석도 없다. 나만 돌릴 수 있다. DB 마이그레이션. 순서 틀리면 터진다. 나만 순서 안다. 모니터링 대시보드. 알람 기준 내가 정했다. 내가 떠나면? 서비스 터진다. 100%. 대표님이 새 개발자 뽑으면? 인수인계 3개월 걸린다. 최소. 그 사이에 장애 나면? 대표님이 고친다고? 불가능. 책임감? 아니다. 죄책감이다. 여기까지 만든 게 나니까. 무너지는 거 보기 싫어서. 그게 날 붙잡는다. 동기 모임에서 연말 모임. 4명 모였다. 재훈이가 말했다. "나 내년에 팀장 달 것 같아." "오 축하해." 수진이도. "나도 승진 심사 들어갔어." "대박." 동욱이는. "우리 팀 신입이 두 명 들어와. 가르치느라 바빠." "좋겠다." 내 차례. "민준이 너는?" "나? 음..." 뭐라고 하지. "연봉 조금 올랐어." 200만원. 4800에서 5000. "그래도 혼자 하는 거 힘들지 않아?" "힘들긴 한데... 뭐." 말을 흐렸다. "근데 거기 상장은 언제 해?" "...모르겠어. 대표님은 내년에 시리즈B 받는다는데." 작년에도 들었던 말. "민준아." 재훈이가 진지하게 말했다. "너 거기서 배울 건 다 배운 것 같은데." 배울 건 다 배웠나? 아니다. 아직 모르는 게 많다. 근데 배울 '사람'이 없다. 새벽 3시의 생각 배포 끝났다. 모니터링 확인. 정상. 침대에 누웠다. 천장을 봤다. '나는 잘하고 있는 걸까?' 3년. 길다면 길고 짧다면 짧다. 동기들은 조직 안에서 성장했다. 나는 혼자서 버텼다. 누가 더 나은가? 모르겠다. 확실한 건. 그들은 '우리 팀'이라고 말한다. 나는 '우리 회사'라고 말한다. 근데 속으론 '내 서비스'라고 생각한다. 이게 자부심인가, 집착인가. 경계가 없다. 눈 감았다. 슬랙 알림 소리가 환청처럼 들렸다. 없는데도. 내일도 출근한다 알람. 10시. 일어났다. 샤워하고 커피 내렸다. 노트북 켰다. 슬랙 확인. 대표님 메시지. "민준씨 오늘 회의 있어요. 11시." "네." 터미널 열었다. git pull 쳤다. 어제 내가 푸시한 코드. 나만 본다. 이게 일상이다. '너 아직 거기야?' 아직. 아직이다. 언제까지? 모른다. 떠날 수 있나? 아마도. 떠날 건가? ...모르겠다. 에너지 드링크 캔 땄다. 오늘도 시작이다. 혼자서.여전히 원맨밴드다. 근데 이 곡은 나만 연주할 수 있다. 그게 자랑인지 한계인지, 아직 모르겠다.

장애 터지면 나 말고 고칠 사람이 없다: 휴가는 언제?

장애 터지면 나 말고 고칠 사람이 없다: 휴가는 언제?

장애 터지면 나 말고 고칠 사람이 없다: 휴가는 언제? 휴가 신청서를 쓸 수가 없다 휴가 신청 화면을 3개월째 켜놓고 있다. 날짜만 선택하면 된다. 근데 못 누른다. 작년 여름. 부산 가려고 KTX 표 예매했다. 출발 2시간 전에 장애 알림. 새벽 4시에 터진 DB 락. 결국 환불했다. 수수료 2만원. 추석 때도 마찬가지였다. 고향 가는 전날 밤에 AWS 비용 폭증 알림. 누군가 무한루프 API 호출 중. 명절 내내 노트북 들고 다녔다. 어머니가 "밥이라도 먹고 해라" 하셨다. 밥 먹으면서도 모니터링 대시보드 켜놓고 있었다.올해는 아예 신청을 안 했다. 어차피 못 가니까. 대표님은 "휴가 쓰세요" 라고 한다. 근데 내가 없으면 서비스가 멈춘다. 대표님도 안다. 그래서 더 미안해한다. 근데 채용은 안 한다. 예산이 없대. 지난주 금요일. 동기가 제주도 사진 보냈다. "3박4일 힐링 중ㅋ". 나는 그 시각 배포 중이었다. 힐링이 뭔지 기억이 안 난다. 주말이 주말이 아니다 토요일 오전 11시. 침대에서 일어나려는데 슬랙 알림. "서비스 느린 것 같은데요?" 대표님이다. 주말에도 서비스 쓰시나 보다. 노트북 켰다. CloudWatch 확인. CPU 사용률 92%. RDS 커넥션 풀 다 찬 상태. 어제 배포한 기능에서 커넥션 릭. 30분 만에 핫픽스 배포. 다시 침대로. 근데 잠이 안 온다. 혹시 또 터질까봐.일요일은 더하다. 사람들이 오후에 서비스를 제일 많이 쓴다. 그래서 장애도 일요일 오후에 제일 많이 터진다. 지난 일요일. 친구들이 등산 가자고 했다. 오랜만에 나갔다. 북한산 중턱쯤 올라갔을 때 알림. API 타임아웃 증가. 결국 하산했다. 친구들은 정상 찍고 왔다. 나는 스타벅스에서 노트북 펴고 있었다. "야 너 진짜 언제까지 그러고 살래?" 친구 말이 맞다. 근데 어쩌나. 나 말고 고칠 사람이 없는데. 주말에 쉬어본 게 언제였나 생각해봤다. 3개월 전? 아니다. 그때도 Terraform 작업했다. 6개월 전? 그때는 DB 마이그레이션 했다. 주말이 주말이 아니다. 그냥 출근 안 하는 평일이다. 명절도 예외는 아니다 설날이었다. 가족들 모였다. 사촌동생이 취업 준비 중이래. "형 회사 괜찮아?" 괜찮냐고? 글쎄. "개발자 뽑아?" 우리는 계속 뽑고 있다. 6개월째. 근데 안 온다. 오는 사람은 스타트업 경험자들인데 면접에서 "개발자 몇 명이에요?" 물어보면 대답 못 하겠다. "저요" 라고 하면 바로 표정 굳는다. 밥 먹는데 폰이 울렸다. Sentry 알림. Uncaught Exception. 500에러 스파이크. "잠깐만요." 화장실 들어갔다. 노트북 가져왔으면 좋았을 걸. 폰으로 SSH 접속. 로그 확인. Redis 연결 끊김. 재시작 명령어 입력.10분 뒤에 나왔다. 아버지가 걱정스럽게 보셨다. "배탈났냐?" "아니요. 괜찮아요." 배탈도 아니고 마음탈이다. 추석 때는 더 심했다. 고향 가는 버스에서 배포했다. 4시간 동안 테더링 켜놓고. 데이터 20GB 썼다. 배포 끝나니까 배터리 8%. 도착했을 때는 껐다. "휴대폰도 못 쓰게 생겼네." 어머니가 충전기 주셨다. 근데 사실은 의도적으로 다 쓴 거다. 알림 안 받으려고. 진짜 쉬고 싶어서. 2시간 뒤에 다시 켰다. 슬랙 메시지 47개. 카톡 32개. 부재중 전화 3통. 다 대표님. 명절도 예외가 아니다. 사람들은 쉬니까 서비스를 더 쓴다. 그러니까 장애도 더 터진다. 나는 더 일한다. 밤 11시 알림의 공포 요즘 제일 무서운 시간이 밤 11시다. 씻으려고 욕실 들어가는데 알림. 씻다 말고 나왔다. 머리에 샴푸 묻은 채로 노트북 켰다. 물방울이 키보드에 떨어졌다. API Gateway 타임아웃. Lambda cold start 문제. Provisioned Concurrency 설정 잊어먹었다. 30분 만에 해결. 다시 샤워하러 갔다. 물이 차가워졌다. 새벽 2시 알림도 자주 온다. 잠들었을 때. 꿈에서도 알림음 들리는 것 같아서 깬다. 진짜 알림인지 확인한다. 진짜다. 일어난다. 한 번은 꿈이었다. 근데 일어나서 확인했다. 습관이 됐다. 이제는 알림 없어도 새벽에 깬다. 확인한다. 다행히 알림 없다. 근데 잠이 안 온다. 혹시 모니터링 시스템이 죽은 건 아닐까. 확인한다. 살아있다. 다시 눕는다. 1시간 뒤에 또 깬다. 수면 패턴이 망가졌다. 건강검진에서 의사가 그랬다. "수면의 질이 안 좋네요. 스트레스 받는 일 하세요?" "네. 개발자요." "음... 일 줄이셔야 할 것 같은데요." 줄이고 싶다. 근데 어떻게 줄이나. 장애는 내가 정하는 게 아닌데. 알림 끄면 되지 않냐고? 껐다가 큰일 났다. 새벽 3시에 터진 장애. 9시에 출근해서 알았다. 대표님 얼굴이 창백했다. 유저 100명 이탈. 매출 타격. 사과문 올렸다. 그날 이후로 알림은 절대 안 끈다. 진동 켜놓고 잔다. 베개 밑에 폰 넣고 잔다. 언제든 깰 준비. 병원 예약도 못 잡는다 이가 아프다. 3주째다. 치과 가야 한다. 근데 예약을 못 잡는다. 평일 낮에 가려면 반차를 써야 한다. 근데 반차 쓰고 나가면 그 시간에 장애 터지면? 치과에서 노트북 펼 수는 없다. 마취하고 있는데 슬랙 알림 오면? 입 벌리고 있는데 전화 오면? 결국 진통제 먹고 버틴다. 타이레놀 500mg. 하루 3알. 3주째. 위도 아프기 시작했다. 건강검진도 2년째 미뤘다. 작년에 예약했는데 전날 밤에 배포 이슈. 취소했다. 올해도 예약했다. 또 취소했다. DB 마이그레이션 날짜랑 겹쳤다. 병원 갈 시간도 없다. 아프면 그냥 참는다. 약국 가서 약 사먹는다. 약사가 "병원 가보세요" 한다. "네" 하고 나온다. 안 간다. 못 간다. 허리도 아프다. 의자가 안 좋다. 회사 의자는 10만원짜리 사무용 의자. 집 의자는 이케아 5만원짜리. 둘 다 요추 지지 같은 건 없다. "허리 아프다"고 말했다. 대표님이 "의자 바꿔드릴까요?" 했다. 고마운데 사양했다. 의자 바꾼다고 해결될 문제가 아니다. 앉아있는 시간을 줄여야 하는데 그게 안 된다. 운동도 못 한다. PT 3개월 끊었다. 한 달 다니고 안 갔다. 환불 안 된다. 180만원 날렸다. 트레이너가 연락 왔다. "요즘 바쁘세요?" 바쁘다. 죄송하다. 몸이 망가지고 있다. 안다. 근데 어쩌나. 서비스 안 망가뜨리려고 내 몸이 망가진다. 온콜의 기회비용 온콜이 뭔지 아나. 24시간 대기조. 언제든 투입 가능 상태. 군대 같은 거다. 민간인이 군대 생활 하는 거다. 근데 온콜 수당은 없다. 연봉에 포함이래. 4800만원에 365일 온콜이 포함. 시급으로 계산하면 얼마나 될까. 하지 말자. 계산하면 화난다. 친구가 대기업 다닌다. 온콜 돌면 하루 10만원 받는대. 주말 온콜은 15만원. 부럽다. 우리는 온콜이 기본값이다. 온콜 아닌 날이 없다. 휴가 써도 온콜. 병가 써도 온콜. 퇴사하기 전까지는 온콜. 온콜의 기회비용을 생각해봤다. 데이트 못 한다. 약속 잡으면 취소한다. 3번 취소하면 끝이다. 그래서 약속 안 잡는다. 취미생활 못 한다. 등산, 헬스, 영화, 게임. 다 중간에 끊긴다. 롤 게임 중에 알림 오면? 팀원들한테 욕먹는다. 그래서 게임도 안 한다. 자기계발 못 한다. 책 읽으려고 하면 알림. 온라인 강의 들으려고 하면 알림. 결국 기술 블로그만 본다. 그나마 짧으니까. 근데 그것도 집중 안 된다. 사람들 만날 수가 없다. 약속 잡으면 "혹시 급한 일 생기면 못 갈 수도 있어" 라고 미리 말한다. 그러면 "그럼 다음에 하자" 한다. 다음은 안 온다. 고립된다. 집-회사-집. 가끔 카페. 근데 카페도 일하러 간다. 노트북 들고 간다. 쉬러 가는 게 아니다. 온콜의 기회비용. 내 인생이다. 대체자가 없는 시스템 Single Point of Failure. SPOF. 시스템 설계에서 제일 피해야 할 거. 근데 나는 SPOF다. 나 하나 없으면 서비스가 멈춘다. 프론트엔드 나. 백엔드 나. 인프라 나. DB 나. 배포 나. 모니터링 나. 장애대응 나. 코드리뷰? 그런 거 없다. 나한테 리뷰할 사람이 없으니까. 버스팩터가 1이다. 내가 버스에 치이면 서비스 끝. 대표님도 안다. 그래서 "조심히 다니세요" 한다. 진담인지 농담인지 모르겠다. 인수인계 문서 써놨다. 100페이지. Notion에. 근데 이걸 누가 읽나. 누가 이해하나. 3년간 쌓인 컨텍스트를 어떻게 글로 전달하나. "왜 이렇게 짰어요?" 라고 물어볼 사람이 없다. 3개월 뒤에 내가 내 코드 보고 "왜 이렇게 짰지?" 한다. 주석이 없다. 당시엔 급했으니까. 채용 공고 올렸다. "시니어 풀스택 개발자 구함". 6개월째 안 뽑힌다. 지원자는 온다. 근데 조건이 안 맞는다. "연봉 7000 이상이요." 우리는 5500까지 준다고 했다. 대표님이 "협의 가능" 하셨다. 근데 진짜 협의 가능한가? 내 연봉 깎아서 주나? "주 5일 근무죠?" 그렇다고 했다. 근데 온콜 얘기하니까 표정이 굳었다. "회사에 개발자가 몇 명이죠?" "저요." 그 뒤로 연락 없다. 대체자가 없다. 나를 대체할 사람을 뽑지 못한다. 그래서 나는 계속 여기 있다. 못 떠난다. 떠나면 서비스가 죽으니까. 책임감이라는 족쇄 솔직히 이직하고 싶다. 매일 생각한다. 이력서 업데이트했다. 링크드인 프로필 손봤다. 포트폴리오 정리했다. 원서도 넣어봤다. 몇 군데 면접도 봤다. 면접에서 물어봤다. "온콜 있나요?" "네, 있는데 로테이션 돌아요. 일주일씩." 일주일씩? 그것도 돌아간다고? 천국이다. "팀이 몇 명이에요?" "백엔드가 5명이고요. 프론트가 3명이고." 8명? 8명이나? 부럽다. 오퍼 받았다. 연봉 6500. 지금보다 1700 많다. 스톡옵션도 더 많다. 팀도 있다. 온콜도 돌아간다. 근데 못 갔다. 대표님한테 말씀드렸다. "이직 제안 받았습니다." 대표님이 당황하셨다. "연봉 맞춰드릴게요." "연봉 문제가 아니에요." "그럼 뭐예요?" "혼자는 못 하겠어요." "개발자 뽑을게요. 진짜로." 이미 6개월째 못 뽑고 있는데. 그 말 믿을 수 있나. "생각해보세요. 제발." 대표님 표정을 봤다. 진짜 힘들어 보였다. 나만 힘든 게 아니구나. 결국 안 갔다. 제안 거절했다. 이유는? 책임감. 서비스에 유저가 5천 명 있다. 유료 결제 유저가 300명 있다. 내가 떠나면 이 사람들은? 서비스 못 쓴다. 환불 받는다. 회사 망한다. 팀원들 있다. 기획자 2명, 디자이너 1명, 마케터 1명. 개발 쪽은 나 혼자지만 다른 팀원들은 있다. 내가 떠나면 이 사람들은? 다 실직자 된다. 대표님도 있다. 3년간 같이 일했다. 믿고 맡겨주셨다. 내가 떠나면? 대표님이 개발 배워야 하나? 책임감이다. 이게 나를 붙잡는다. 족쇄다. 금색 족쇄. 포기할 수 없는 것들이 너무 많다. 근데 이게 맞나? 내 인생을 포기하면서 서비스를 지키는 게? 모르겠다. 언제까지 버틸 수 있을까 요즘 생각한다. 내가 언제까지 버틸 수 있을까. 체력이 예전 같지 않다. 29살인데 벌써 이러면 안 되는데. 새벽 작업하면 다음 날 못 일어난다. 에너지 드링크 효과가 점점 짧아진다. 2시간 버티던 게 이제 30분. 정신적으로도 한계다. 알림음만 들어도 심장이 뛴다. 조건반사. 파블로프의 개. 슬랙 알림음이 공포다. 집중력도 떨어진다. 코드 짜다가 멍 때린다. 뭐 하려고 했더라? 커밋 메시지 뭐였지? 방금 전까지 생각했는데. 사라졌다. 번아웃 증상 찾아봤다. 다 해당된다.만성 피로? 체크 수면 장애? 체크 집중력 저하? 체크 냉소적 태도? 체크 성취감 감소? 체크 사회적 고립? 체크상담 받아보라고 한다. 근데 상담 받을 시간이 없다. 상담 예약하려면 평일 낮에 가야 하는데 그 시간에 장애 터지면? 악순환이다. 힘들어서 쉬어야 하는데 쉬면 서비스가 망한다. 서비스 지키려고 버티는데 내가 망한다. 동기들 만났다. 전부 이직했다. 대기업, 외국계, 스타트업. 다들 잘 다닌다. "너 아직 거기야?" "응." "채용 안 해?" "하는데 안 뽑혀." "그럼 너 언제 나와?" "모르겠어." 진짜 모르겠다. 탈출구가 안 보인다. 개발자 뽑히기 전까지는 못 나간다. 근데 개발자가 안 뽑힌다. 그럼 영원히 못 나가나? 1년 더? 버틸 수 있을까. 체력적으로. 정신적으로. 모르겠다. 근데 버텨야 한다. 나 말고 할 사람이 없으니까. 그래도 버티는 이유 퇴사 고민하면서도 출근한다. 왜? 월급 때문? 아니다. 6500 오퍼 거절했으니까. 성장 때문? 글쎄. 혼자 하니까 성장도 한계다. 피드백 없다. 방향도 모른다. 그럼 뭐 때문? 유저들 때문인 것 같다. 어제 앱 리뷰 봤다. 별 5개. "덕분에 업무 효율 10배 올랐어요. 감사합니다!" 이런 리뷰 보면 기분이 좋다. 내가 만든 거 누가 쓴다. 그것도 좋아한다. 도움이 된다. 팀원들 때문이기도 하다. 기획자가 그랬다. "덕분에 제 기획이 세상에 나왔어요. 고마워요." 디자이너는 "내 디자인이 진짜로 움직이네요" 하면서 좋아했다. 마케터는 "전환율 올랐어요!" 하면서 기뻐했다. 내가 있어야 이 사람들 일이 결과로 나온다. 그게 의미 있다. 대표님은 가끔 말한다. "너 없으면 여기 못 돌아가. 고마워." 고맙긴 한데 그 말이 때로는 무겁다. 부담이다. 책임이다. 그래도 버틴다. 완전히 의미 없는 건 아니니까. 누군가에게 도움이 되니까. 내가 필요한 곳이니까. 근데 이게 언제까지 버틸 이유가 될까. 모르겠다. 휴가는 결국 언제? 제목으로 돌아왔다. 휴가는 언제? 답은 없다. 정확히는 모른다. 개발자 뽑히면? 그때 휴가 갈 수 있다. 근데 언제 뽑힐지 모른다. 6개월째 못 뽑고 있다. 서비스가 안정화되면? 언제 안정화될까. 기능은 계속 추가된다. 유저는 계속 늘어난다. 장애는 계속 터진다. 회사가 커지면? 시리즈 A 투자 받으면 개발팀 꾸릴 수 있다. 근데 투자는 언제? 모른다. 현실적으로 생각해보자

커밋 메시지 'fix bug', 'update', 'asdf': 정신 없음의 흔적

커밋 메시지 'fix bug', 'update', 'asdf': 정신 없음의 흔적

커밋 메시지 'fix bug', 'update', 'asdf': 정신 없음의 흔적 오늘 아침에 git log를 봤다. 지난 3일치 커밋 메시지가 이렇다. "fix bug" "update" "asdf" "quick fix" "really fix this time" "fuck" "revert fuck" ...이게 프로덕션이다.git log가 내 정신 상태 커밋 메시지를 보면 그날 내 상태가 보인다. 오전 10시: "feat: 사용자 프로필 API 구현" → 정신 멀쩡할 때다. 오후 3시: "fix profile bug" → 피곤해지기 시작. 저녁 7시: "update" → 저녁 먹고 와서 뭐 했는지 기억 안 남. 밤 11시: "asdf" → 의식의 흐름. 새벽 2시: "please work" → 간절함. 새벽 3시: "I HATE THIS" → 분노. 새벽 4시: "final fix" → 거짓말. 이게 3년차 풀스택 개발자의 커밋 히스토리다. 자랑스럽다. 의미 모를 메시지의 이유 왜 이렇게 되는가. 첫째, 시간이 없다. 커밋 메시지 쓸 정신이 없다. 대표가 "이거 언제 돼요?" 슬랙에 5번째 멘션이다. 일단 커밋하고 푸시한다. 메시지는 나중에. 근데 나중은 오지 않는다. 둘째, 정신이 없다. 동시에 3개 작업 중이다. 프론트 버그 고치다가 백엔드 API 수정하다가 DB 인덱스 추가하다가. 뭘 커밋하는지 정확히 모른다. "update" 치고 엔터. 셋째, 새벽이다. 오후 2시에 시작한 '간단한 수정'이 밤 11시에 끝났다. 연쇄 버그였다. 피곤하다. 커서가 커밋 메시지 창에 깜빡인다. 손이 알아서 "fix" 친다. 넷째, 혼자다. 코드 리뷰 없다. 컨벤션 지킬 사람도 없다. 나 말고 git log 볼 사람이 없다. 그래서 대충 쓴다. 근데 3개월 뒤 내가 본다. 그리고 후회한다.새벽 커밋의 특징 새벽 2시 이후 커밋은 특별하다. 메시지가 짧아진다. "fix"에서 "f"까지 진화한다. 타이핑할 기력도 없다. 오타가 늘어난다. "fxi bug", "updaet", "commti". 백스페이스 누를 힘도 없다. 감정이 들어간다. "please", "why", "help", "fuck". 코드에 하소연한다. 종교가 등장한다. "god please", "jesus christ", "holy shit it works". 신에게 간구한다. 어제 새벽 3시 커밋이다. "why is this even a bug" "ok this should work" "nope" "maybe now" "FINALLY" 5개 연속 커밋. 같은 버그. 40분 걸렸다. 원인은 오타였다. 변수명 "user"를 "usr"로 썼다. 'asdf'의 의미 'asdf'는 특별하다. 왼손 홈포지션이다. 아무 생각 없이 친다. 근데 자주 쓴다. 지난달에만 12번 썼다. 처음엔 부끄러웠다. 지금은 자연스럽다. 'asdf'는 내 정신 상태를 정직하게 표현한다. "지금 나 아무 생각 없음. 그냥 커밋함." 동료 개발자 있었을 때는 안 썼다. 코드 리뷰 있었으니까. "커밋 메시지 좀 제대로 써주세요" 들으니까. 지금은 혼자다. 'asdf' 맘껏 쓴다. 자유다. 슬픈 자유다. git blame 보면 웃긴다. 3개월 전 코드에 'asdf' 커밋이다. 뭔지 모른다. 다시 읽어야 한다. 과거의 나를 욕한다. "메시지 좀 써놓지." 근데 오늘도 'asdf' 쓸 것 같다. 컨벤션은 어디로 입사할 땐 다짐했다. "커밋 메시지 컨벤션 지키자. feat, fix, refactor 구분하자. 이슈 번호 달자." 1주일 갔다. 지금 컨벤션은 이렇다.오전: 제대로 씀 오후: 대충 씀 저녁: 안 씀 새벽: 욕함feat, fix는 가끔 쓴다. 기분 좋을 때. refactor는 본 지 오래됐다. 리팩토링할 시간이 어딨나. 이슈 번호는 없다. 이슈 트래커 쓸 여유가 없다. 슬랙 DM이 이슈 트래커다. 대표 톡이 백로그다. 이모지도 시도했다. ✨, 🐛, 🔥. 3일 갔다. 귀찮다. 지금은 문자만. 최소한만.역대급 커밋들 기억에 남는 커밋들이 있다. 가장 정직한 커밋: "I have no idea what I'm doing" 새벽 4시. 스택오버플로우 코드 복붙했다. 작동했다. 이유는 모른다. 정직하게 적었다. 가장 긴 커밋: "fix bug fix bug fix bug fix bug fix bug" 복붙했다. 손이 컨트롤 안 됐다. 피곤해서. 가장 짧은 커밋: "." 마침표 하나. 엔터 치려다 점 찍었다. 그냥 푸시했다. 돌아가서 고칠 기력이 없었다. 가장 화난 커밋: "WHO WROTE THIS CODE oh wait it was me" 3개월 전 내 코드였다. 똑같은 버그를 똑같이 고쳤다. 커밋 메시지도 똑같았다. "fix user bug". 학습 능력 제로. 가장 슬픈 커밋: "goodbye clean code" 기술 부채 쌓는 거 알면서 땜질했다. 시간이 없어서. 나중에 고치자. 근데 나중은 안 온다. 동료가 보면 전 직장 동기가 물었다. "너희 회사 코드 퀄리티 어때?" git log 보여줬다. 말없이 봤다. 그리고. "...너 괜찮아?" 괜찮지 않다. 근데 뭐 어쩌나. 혼자 하는데. 서비스는 돌아가는데. 커밋 메시지까지 신경 쓸 여유가 없다. "나중에 누가 보면 어떡하려고?" 나중에 사람 뽑으면 창피할 것 같다. 신입이 와서 git log 보면. "선배님 이게 뭐예요?" 할 것 같다. "음... 그때 많이 바빴어. 하하." 변명할 것 같다. 근데 지금도 바쁘다. 6개월 뒤도 바쁠 것 같다. 반복되는 메시지 같은 메시지를 반복해서 쓴다. "fix login bug" - 이거 7번 커밋했다. 로그인 버그가 7번 났다. 아니다. 근본 원인을 안 고쳤다. 증상만 고쳤다. 시간이 없어서. "update API" - 이거 21번 썼다. 뭘 업데이트했는지 모른다. 그냥 뭔가 바뀌었다. "quick fix" - 빠른 수정은 없었다. 다 2시간씩 걸렸다. 거짓말이다. "minor change" - 마이너가 아니었다. DB 스키마 바꿨다. 이거 메이저다. 근데 인정하기 싫었다. "temp" - 임시 수정. 근데 3개월 째 프로덕션이다. 영구적 임시다. 반복되는 메시지를 보면 알 수 있다. 근본 문제를 안 고친다. 시간이 없어서. 똑같은 실수를 반복한다. PR 없는 세상 전 회사는 PR 필수였다. 커밋 3개 이상 쌓이면 안 됐다. 바로 PR 올렸다. 리뷰 받았다. "커밋 메시지 수정해주세요." 피드백 받았다. 귀찮았는데 배웠다. 지금은 PR이 없다. 혼자니까. 리뷰할 사람이 없으니까. main 브랜치에 바로 푸시한다. 무법지대다. 자유롭다. 근데 무섭다. 견제가 없으니까. 내 실수를 못 잡는다. 커밋 메시지도 점점 막 쓴다. 가끔 스스로 리뷰한다. "이거 좀 이상한데." 근데 고칠 시간이 없다. "나중에." 그리고 잊는다. 브랜치 전략도 없다. feature 브랜치? develop 브랜치? 그런 거 없다. main 하나. hotfix도 main에. 전부 main에. 깃플로우는 교과서에나 나온다. 현실은 메인 브랜치 하나로 모든 걸 한다. 미래의 나에게 3개월 뒤 내가 볼 것이다. 오늘 'asdf'로 커밋한 코드를. 그리고 욕할 것이다. "이게 뭔 코드야." 근데 수정 못 한다. 또 시간이 없어서. 6개월 뒤 신입이 올지도 모른다. 온보딩하면서 git log 보여줘야 한다. "이게 우리 커밋 히스토리예요. 하하." 웃으면서 말할 것이다. 근데 웃음이 나올까. 1년 뒤 이직할지도 모른다. 포트폴리오 정리하면서 이 레포를 볼 것이다. 공개할 수 없다. 창피해서. private으로 둘 것이다. 그리고 새로 만들 것이다. 깨끗한 커밋 히스토리로. 미래의 나에게 미안하다. 근데 지금의 나도 힘들다. 서비스는 돌려야 하고. 장애는 고쳐야 하고. 기능은 만들어야 하고. 커밋 메시지까지 신경 쓸 여유가 없다. 그래도 알고는 있다. 이게 잘못됐다는 거. 언젠가 대가를 치를 거라는 거. 근데 오늘은 아니다. 내일도 아니다. 그래서 오늘도 'asdf' 친다. 그래도 가끔 제대로 쓴다. 기분 좋은 날. 새 기능 완성한 날. 리팩토링 한 날. 그럴 땐 정성껏 쓴다. "feat: 사용자 알림 시스템 구현WebSocket 기반 실시간 알림 읽음/안읽음 상태 관리 모바일 푸시 알림 연동closes #42" 이런 커밋을 쓸 때. 뿌듯하다. "나도 할 수 있네." 싶다. 근데 이런 커밋은 한 달에 2개 정도다. 나머지는 'fix', 'update', 'asdf'. 그래도 포기 안 한다. 완전히 놓진 않는다. 가끔이라도 제대로 쓴다. 그게 내 마지막 자존심이다.오늘도 'quick fix' 쳤다. 2시간 걸렸는데.

코드리뷰가 없으면 생기는 일: 내 코드가 정말 맞나?

코드리뷰가 없으면 생기는 일: 내 코드가 정말 맞나?

코드리뷰가 없으면 생기는 일: 내 코드가 정말 맞나? 아무도 내 코드를 안 본다 회사에 개발자가 나 혼자다. 대표는 "풀스택이시니까"라고 했지만, 실제론 온스택이다. 프론트, 백엔드, DB, 인프라, 디자인 피드백까지. 코드리뷰? 없다. 내가 짠 코드는 내가 보고, 내가 머지하고, 내가 배포한다. PR 올리면 자동으로 머지되는 설정. 누가 볼 사람이 없으니까. 처음엔 자유로웠다. "이렇게 짜도 아무도 뭐라 안 하네?" 근데 6개월 지나니까 불안하다. 이게 맞나? 정말로?3개월 전 내 코드가 이해 안 됨 어제 버그 수정하려고 3개월 전 코드 봤다. 뭔 생각으로 이렇게 짰지? const processData = (d) => { const r = d.map(x => x.value) const f = r.filter(y => y > 0) return f.reduce((a, b) => a + b, 0) }변수명이 d, r, f, a, b다. 주석은 없다. 함수명은 processData. 뭘 process하는지 모른다. 그때는 급했다. 대표가 "오늘 중으로"라고 했다. 일단 돌아가게 짜고 배포했다. 리팩토링은 나중에 하려고 했는데, 나중은 안 왔다. 코드리뷰가 있었다면? "이거 변수명 좀 명확하게 바꾸면 안 될까요?" 한 마디면 됐다. 근데 그 한 마디 해줄 사람이 없다. 지금은 30분 걸려서 이해했다. 원래 5분이면 될 코드를. 혼자 짠 코드를 혼자 해석하는데 30분. 보안은 구글링이 전부 지난주에 JWT 구현했다. 검색해서 코드 복사하고, 약간 수정하고, 테스트하고, 배포했다. 작동한다. 로그인되고, 토큰 발급되고, 인증된다. 끝? 아니다. 며칠 뒤에 우연히 다른 글 보다가 알았다. 내 코드는 refresh token이 없다. 만료 시간도 24시간이다. 보안 헤더 설정도 빠졌다. 당장 서비스가 터지진 않는다. 근데 제대로 된 건 아니다. 그리고 나는 그걸 며칠 동안 몰랐다. 코드리뷰가 있었다면? "refresh token 구현 안 하셨네요?" "만료 시간 24시간은 좀 긴 것 같은데요?" 이런 피드백 받았을 거다. 지금은? 구글링으로 배운다. 스택오버플로우, 미디엄 글, GPT. 근데 이것도 맞는지 확인해줄 사람이 없다. 그냥 믿고 쓴다.성능 최적화는 터지고 나서 서비스 느려졌다. 페이지 로딩이 3초 넘게 걸린다. 대표한테 컴플레인 들어왔다. 원인 찾는데 반나절 걸렸다. DB 쿼리였다. N+1 문제. 반복문 안에서 쿼리 100번 날리고 있었다. for (let user of users) { const posts = await db.query('SELECT * FROM posts WHERE user_id = ?', [user.id]) user.posts = posts }이거 배포한 지 2달 됐다. 유저 적을 땐 괜찮았다. 지금은 유저 500명이다. 느리다. JOIN으로 한 방에 가져오면 됐다. 근데 나는 2달 동안 몰랐다. 코드리뷰가 있었다면? "이거 N+1 아닌가요?" 배포 전에 잡았을 거다. 근데 없었다. 그래서 2달 동안 느린 서비스 운영했다. 최적화는 항상 터지고 나서 한다. 미리 못 잡는다. 혼자니까. 컨벤션은 내 기분 어제는 camelCase 썼다. 오늘은 snake_case 쓴다. 함수명도 일관성 없다. getUserData, fetch_user, loadUserInfo. 다 같은 기능이다. eslint 설정? 했다. 근데 급하면 // eslint-disable-line 박는다. 고칠 시간 없으니까. 코드 스타일 가이드? 없다. 내가 만들까 생각은 했다. 근데 나 혼자 지킬 가이드를 왜 만들지? 결과는 코드베이스가 난장판이다. 파일마다 스타일이 다르다. 내가 쓴 코드인데 통일성이 없다. 코드리뷰가 있으면? "컨벤션 맞춰주세요" 한 마디면 된다. 그럼 고친다. 근데 그 한 마디가 없으니까 계속 제멋대로 쓴다.틀린 줄도 모르고 배포 지난달에 결제 로직 짰다. 테스트했다. 잘 됐다. 배포했다. 일주일 뒤에 CS 들어왔다. "결제는 됐는데 포인트가 안 쌓여요." 코드 봤다. 로직 순서가 틀렸다. 결제 완료 후에 포인트 적립해야 하는데, 결제 전에 체크하고 있었다. 그래서 실패하면 포인트가 안 쌓였다. 버그다. 명백한 버그. 근데 나는 일주일 동안 몰랐다. 테스트할 때는 성공 케이스만 봤으니까. 코드리뷰가 있었으면? "실패 케이스는 어떻게 처리하나요?" 물어봤을 거다. 그럼 고쳤다. 배포 전에. 지금은? 버그 터지고 나서 안다. CS 들어오고 나서 고친다. 그 전까지는 모른다. 기술 부채는 계속 쌓임 리팩토링 해야 할 코드 리스트가 notion에 20개 있다. 3개월 전부터 있다. 하나도 안 건드렸다. 왜? 시간이 없어서. 항상 급한 게 먼저다. 신규 기능, 버그 수정, 장애 대응. 리팩토링은 우선순위가 제일 낮다. 근데 코드는 점점 복잡해진다. 임시방편 코드가 쌓인다. "나중에 고쳐야지" 주석이 10개 넘는다. 코드리뷰가 있으면? "이거 지금 고치는 게 나중에 편할 것 같은데요?" 누가 말해준다. 그럼 우선순위가 올라간다. 혼자면? 내가 판단한다. 그리고 항상 미룬다. 급한 게 먼저니까. 그래서 기술 부채만 쌓인다. 6개월 전 코드베이스보다 지금이 더 복잡하다. 기능은 많아졌는데 품질은 떨어졌다. 혼자라서 막을 수가 없다. 배울 기회가 없음 전 직장에선 시니어가 코드리뷰 해줬다. "이렇게 짜면 메모리 누수 생겨요." "이 라이브러리 쓰면 더 간단해요." 배웠다. 지금은? 배울 사람이 없다. 구글링으로 배운다. GPT한테 물어본다. 근데 이게 실무에서 맞는 방법인지 모른다. 예를 들어 상태관리. Redux 쓸까, Zustand 쓸까, Context API로 충분할까? 모른다. 그냥 내가 아는 거 쓴다. 근데 이게 최선인지는 모른다. 코드리뷰가 있으면 배운다. "이 경우엔 이게 더 나아요" 실무 경험이 쌓인 사람이 알려준다. 혼자면? 시행착오로 배운다. 틀려봐야 안다. 효율이 떨어진다. 3년 차인데 실력은 2년 차 같다. 성장이 더디다. 혼자라서. 책임은 오롯이 혼자 장애 터지면? 내 책임이다. 버그 나면? 내 책임이다. 느리면? 내 책임이다. 코드리뷰가 있었다면? 책임이 나뉜다. "이 부분은 제가 못 봤네요" 리뷰어도 일부 책임진다. 혼자면? 전부 내 책임이다. 내가 짜고, 내가 리뷰하고, 내가 배포했다. 틀리면 내 잘못이다. 심리적 압박이 크다. 배포할 때마다 불안하다. "이거 괜찮나?" 확신이 없다. 근데 배포해야 한다. 일정이 있으니까. 그래서 주말에도 모니터링 본다. 슬랙 알림 켜놓는다. 장애 나면 내가 고쳐야 하니까. 도와줄 사람이 없으니까. 휴가도 못 간다. 작년에 3박 4일 갔다가 2일 차에 장애 알림 와서 노트북 열었다. 해결하는데 4시간 걸렸다. 휴가가 아니었다. 그래도 돌아가긴 함 이렇게 써놓고 보니 암울하다. 근데 서비스는 돌아간다. 유저도 늘고 있다. 매출도 난다. 코드가 완벽하지 않아도 비즈니스는 굴러간다. 버그 있어도 고치면 된다. 느려도 최적화하면 된다. 완벽한 코드보다 빠른 실행이 중요할 때가 있다. 스타트업이 그렇다. 일단 만들어야 한다. 근데 불안하다. 내 코드가 정말 맞나? 더 나은 방법이 있는 거 아닌가? 확인할 방법이 없다. 코드리뷰는 완벽을 위한 게 아니다. 확신을 위한 거다. "이 정도면 괜찮아" 누군가 말해주는 거. 혼자서는 그 확신이 없다. 채용 공고는 6개월째 회사는 개발자 뽑으려고 한다. 채용 공고 올렸다. 6개월 됐다. 지원자는 3명 왔다. 면접 봤다. 안 뽑았다. 왜? 연봉이 낮아서. 우리는 4500 제시했다. 지원자는 6000 원했다. 안 맞았다. 대표는 "조금만 더 버텨줘요" 한다. 근데 조금이 6개월이다. 언제까지 버텨야 하나? 다음 개발자 오면? 코드리뷰 해줄 수 있다. 서로 봐줄 수 있다. 책임도 나눌 수 있다. 휴가도 갈 수 있다. 근데 안 온다. 그래서 계속 혼자다. 이직은 고민 중 요즘 이직 생각 많이 한다. 중견 기업이나 좀 큰 스타트업. 개발팀이 있는 곳. 코드리뷰 받고 싶다. 시니어한테 배우고 싶다. 혼자 떠안지 않고 싶다. 근데 망설여진다. 내가 떠나면 이 서비스는? 대표는? 유저들은? 책임감이 발목을 잡는다. 그리고 불안하다. 밖에 나가면 내 실력이 얼마나 되나? 3년 차인데 2년 차 실력이면? 떨어지면 어쩌지? 코드리뷰 없이 3년 일했다. 내 코드가 시장에서 통할까? 확신이 없다. 이력서는 썼다. 아직 안 넣었다. 조금만 더 버티면? 개발자 오면? 그러다 또 6개월 간다.코드리뷰는 사치가 아니다. 혼자라서 느낀다. 더 나은 코드보다, 확신이 필요하다. "이거 맞아" 한 마디가.