팀원 8명 관리하면서 놓치고 있는 게 뭘까

팀원 8명 관리하면서 놓치고 있는 게 뭘까

팀원 8명 관리하면서 놓치고 있는 게 뭘까 오늘도 체크리스트 아침 9시. 출근하자마자 노트 펼친다.김대리 코드리뷰 (완료) 이주임 1on1 (완료) 박사원 프로젝트 진행 체크 (완료) 팀 주간회의 (완료) 최과장 휴가 승인 (완료)다 했다. 그런데 뭔가 불안하다.파트장 된 지 1년 반. 처음엔 이것만 하면 된다고 생각했다. 코드리뷰 빡세게 하고, 1on1 정기적으로 하고, 회의 잘 진행하면 되는 거 아닌가. 근데 최근 들어 자꾸 드는 생각. "내가 뭘 놓치고 있는 거 아냐?" 팀원들 얼굴은 다 밝다. 불만도 없어 보인다. 프로젝트도 잘 굴러간다. 그런데 이 불안은 뭔가. 코드리뷰는 하는데 매일 오후 2시. 코드리뷰 타임이다. 김대리 PR 열었다. Django ORM 쿼리 최적화. 깔끔하다. "LGTM" 찍는다. 이주임 PR. React 컴포넌트 리팩토링. 가독성 좋다. "Good job" 코멘트 남긴다. 박사원 PR. 신규 API 엔드포인트. 테스트 코드까지 완벽하다. 승인한다.그런데 문득 든 생각. "얘네 요즘 어떤 게 재밌을까?" 코드는 본다. 기능은 확인한다. 성능도 체크한다. 근데 이 사람이 이 코드 짜면서 뭘 배웠는지, 뭐가 힘들었는지, 뭐가 재밌었는지는 모른다. 김대리는 요즘 GraphQL 공부한다던데. 그게 이번 프로젝트랑 연결되나? 물어본 적 없다. 이주임은 프론트엔드 아키텍처에 관심 많던데. 지금 하는 작업이 커리어에 도움이 되나? 확인 안 했다. 박사원은 신입인데 벌써 1년 차다. 성장 곡선이 적절한가? 답답한 건 없나? 체크 안 했다. 코드는 봤는데 사람은 못 봤다. 1on1은 하는데 격주 금요일 오후. 1on1 시간이다. 최과장이랑 30분. 회의실 들어간다. "요즘 어때요?" "잘하고 있습니다." "프로젝트 진행은요?" "순조롭습니다." "힘든 거 없어요?" "괜찮습니다." 15분 지났다. 할 얘기 없다. "음... 요즘 관심사가 뭐예요?" "글쎄요. 특별히 없는데요." 20분 지났다. 어색하다. "커리어 목표 같은 거 있어요?" "음, 잘 모르겠습니다." 30분 채우고 나온다. 뭔 얘기를 한 거지.1on1 양식도 있다. 질문 리스트도 만들었다. 구글 캘린더에 다 박혀있다. 근데 형식은 갖췄는데 내용이 없다. 최과장은 15년 차 시니어다. 나보다 나이도 많다. 근데 이 사람이 진짜 하고 싶은 게 뭔지 모른다. 회사에서 뭘 이루고 싶은지 모른다. 3년 후에 뭐 하고 싶은지 모른다. "별일 없으시면 됐습니다" 하고 끝낸다. 서로 편하다. 근데 이게 맞나. 정민 사원이랑 1on1도 그렇다. 신입이니까 물어볼 게 많을 줄 알았다. "적응은 잘 되고 있어요?" "네." "어려운 거 있으면 언제든 물어봐요." "네." 끝이다. 나중에 복도에서 우연히 만났을 때 정민이가 한 말. "저 요즘 Rust 공부하는데 재밌어요." 어? 그런 거 1on1 때 얘기하지 그랬어. 근데 내가 물어본 적 없구나. 질문이 틀렸다. "어때요?" "힘든 거 없어요?"는 답이 "네" "아니요"로 끝난다. 진짜 물어야 할 건. "요즘 뭐가 재밌어요?" "어떤 걸 더 해보고 싶어요?" "3개월 후엔 뭘 하고 싶어요?" 근데 이런 질문은 답을 들을 준비가 되어있어야 한다. "Rust로 프로젝트 하나 해보고 싶어요" 하면 내가 해줄 수 있나? 팀 로드맵이랑 안 맞으면? 설득할 자신 있나? 그래서 안 물었나보다. 회의는 하는데 월요일 오전 10시. 주간 회의다. 지난주 리뷰. 이번 주 목표. 이슈 공유. 40분 딱 맞춰서 끝낸다. 효율적이다. 회의록도 남긴다. 액션 아이템도 명확하다. 근데 회의 끝나고 복도에서 들린 대화. "아까 그거 좀 이상한 것 같은데." "나도 그렇게 생각했어. 근데 회의 때 얘기 안 하던데?" "분위기상 말하기 그랬잖아." 아. 회의실에서는 안 나온 얘기가 복도에서 나온다. 화장실에서 나온다. 점심 먹으면서 나온다. 회의를 하긴 했는데 진짜 중요한 얘기는 안 한 거다. 내가 "다른 의견 있어요?" 물어보면 다들 고개 젓는다. 근데 사실은 있다. 말 안 할 뿐이다. 왜 안 할까. 분위기? 내가 무섭나? 아닌 것 같은데. 시간? 40분은 짧나? 더 하면 비효율이라던데. 생각해보니 나도 그랬다. 파트장 되기 전에. 회의 때는 말 안 하고 나와서 동기들한테 털어놨다. "저거 좀 이상한 것 같지 않아?" "맞아. 근데 회의 때 말하기 그랬잖아." 왜 그랬지. 혼자 생각해봤다. 아. 내 의견이 틀릴까봐. 괜히 분위기 깰까봐. 혼자만 이상하게 생각하는 건가 싶어서. 그럼 지금 우리 팀원들도 그런가. 회의 효율은 높아졌는데 심리적 안전감은 낮아진 건가. 숫자는 보는데 분기 말이다. KPI 정리한다.스프린트 완료율: 94% 코드 커버리지: 82% 배포 성공률: 98% 버그 발생률: 0.3%좋다. 다 목표치 이상이다. 팀장님한테 보고하니까 "잘하고 있네요" 한다. 뿌듯하다. 근데 저녁에 혼자 생각해봤다. 김대리는 행복한가? 이주임은 성장하고 있나? 박사원은 번아웃 안 왔나? 최과장은 의미 느끼면서 일하나? 정민이는 계속 다닐 마음이 있나? 이건 숫자로 안 나온다. 퇴사율은 0%다. 올해 아무도 안 나갔다. 좋은 거 맞다. 근데 이게 만족해서인지, 이직 준비 중인데 아직 안 나간 건지 모른다. 연차 사용률은 68%다. 나쁘지 않다. 근데 32%는 왜 안 쓸까. 바빠서? 눈치 봐서? 쓸 이유가 없어서? 야근 시간은 월평균 8시간이다. 적은 편이다. 근데 김대리는 0시간인데 박사원은 20시간이다. 평균은 8시간이다. 이게 문제 아닌가. 숫자는 거짓말을 안 한다. 근데 진실도 안 말해준다. 칭찬은 하는데 수요일 오후. 슬랙 DM 보낸다. "이주임님 오늘 리팩토링 좋았어요 👍" 답장 온다. "감사합니다 😊" 끝이다. 목요일. 또 보낸다. "김대리님 쿼리 최적화 완벽했습니다 👏" "넵 ㅎㅎ" 끝이다. 칭찬은 한다. 근데 진심인가. "좋았어요" "완벽했습니다" 이런 말은 AI도 한다. ChatGPT한테 물어봐도 나온다. 진짜 칭찬은 뭘까. 생각해봤다. 예전에 팀장님이 나한테 한 말이 기억난다. "박시니어. 이번 DB 마이그레이션, 다운타임 30초로 줄인 거 봤어. 주말에 시뮬레이션 3번 돌렸지? 로그 다 남아있더라. 그 집요함 때문에 무사고로 넘어간 거야. 고마워." 이 말은 지금도 기억한다. 5년 전인데. 왜 기억나나. 구체적이어서. 봤다는 게 느껴져서. 진심이 전해져서. 그럼 나는? "좋았어요"는 뭐가 좋았는지 모른다. "완벽했습니다"는 뭐가 완벽한지 모른다. 이주임 리팩토링 좋았다고 했는데, 정확히 뭐가 좋았지? 함수 분리? 네이밍? 테스트 추가? 모른다. 그냥 코드가 깔끔해 보여서 좋았다고 했다. 김대리 쿼리 최적화도 마찬가지다. 뭘 어떻게 최적화했는지 자세히 안 봤다. 실행 시간 줄어든 거 확인하고 "완벽" 했다. 칭찬은 하는데 관심은 없었다. 문제는 해결하는데 박사원이 찾아왔다. "파트장님, 이번 기능 구현이 좀 막히는데요." "어디?" 화면 보여준다. 설명한다. 나는 10분 만에 해결책 알려준다. 20년 차니까. 이런 건 눈 감고도 푼다. "아, 이렇게 하면 되는구나. 감사합니다!" 박사원 돌아간다. 문제 해결됐다. 효율적이다. 빠르다. 좋다. 근데 며칠 뒤. 또 찾아온다. 비슷한 문제다. "파트장님, 이것도 좀..." 또 알려준다. 10분 만에. 일주일 뒤. 또 온다. 또 비슷한 거다. 그때 깨달았다. 나는 문제를 해결해줬다. 근데 박사원은 문제 해결 방법을 배우지 못했다. 물고기를 잡아줬는데 물고기 잡는 법을 안 가르쳤다. 왜 그랬나. 빨라서. 내가 알려주는 게 10분이면 되는데, 스스로 찾게 하면 2시간 걸린다. 비효율 아닌가. 근데 2시간 씨름하고 나면 진짜 배운다. 다음엔 혼자 해결한다. 그게 성장이다. 나는 효율을 높였는데 성장은 막았다. 공정하게 대하는데 팀원 8명. 김대리, 이주임, 박사원, 최과장, 정민사원, 송대리, 윤주임, 한사원. 다 똑같이 대한다. 공정하게. 차별 없이. 코드리뷰도 똑같은 기준. 1on1도 똑같은 시간. 업무 분배도 공평하게. 이게 맞다고 생각했다. 근데 어느 날. 송대리가 퇴사 의사 밝혔다. "왜요?" "더 성장하고 싶어서요." "여기서도 성장할 수 있잖아요." "네... 근데 제가 원하는 방향은 아닌 것 같아서요." "어떤 방향인데요?" "음... 백엔드 아키텍처 쪽으로 가고 싶은데, 여기선 기회가 없을 것 같아서요." 순간 아무 말도 못 했다. 송대리가 백엔드 아키텍처에 관심 있는 줄 몰랐다. 1on1 때 한 번도 안 나온 얘기였다. 아니다. 나온 적 있을지도 모른다. 내가 못 들었을 수도 있다. 공정은 좋다. 근데 공정이 무관심이 되면 안 된다. 8명을 똑같이 대했다. 근데 8명은 다 다른 사람이다. 김대리는 20대 후반, 성장 욕구 강함, GraphQL 배우고 싶어 함. 이주임은 30대 초반, 결혼 준비 중, 워라밸 중요하게 생각함. 박사원은 신입, 기본기 쌓는 중, 인정받고 싶어 함. 최과장은 40대, 안정적인 것 선호, 새로운 거 배우기 부담스러워 함. 정민사원은 20대 초반, Rust 공부 중, 트렌디한 기술 좋아함. 다 다르다. 똑같이 대하면 안 된다. 각자 다르게 대해야 한다. 그게 진짜 공정이다. 보고는 잘 받는데 프로젝트 진행 상황. 매주 금요일 오후 4시. 팀원들이 보고한다. "이번 주 완료했습니다." "다음 주 계획입니다." "이슈 없습니다." 좋다. 깔끔하다. 근데 월요일 아침. 긴급 이슈 터졌다. 금요일엔 없던 문제다. "왜 금요일에 얘기 안 했어요?" "그때는 몰랐어요." "언제 알았는데요?" "금요일 저녁에요..." "왜 연락 안 했어요?" "주말에 제가 해결하려고 했는데 안 되더라고요." 아. 보고는 잘 받는다. 근데 보고 시스템이 틀렸다. 금요일 오후 4시. 이건 "보고하는 시간"이다. 문제가 생기는 시간이 아니다. 문제는 금요일 저녁에도 생기고, 토요일 아침에도 생기고, 일요일 밤에도 생긴다. 근데 팀원들은 "금요일 오후 4시에 보고해야 한다"고 생각한다. 그래서 금요일 저녁 문제는 주말 내내 혼자 씨름하다가 월요일에 폭탄이 된다. 내 잘못이다. "문제 있으면 언제든 연락해요" 말은 했다. 근데 분위기는 안 만들었다. 주말에 슬랙 보내면 "주말인데 왜 연락해" 하는 분위기. 퇴근 후에 전화하면 "워라밸이 뭐야" 하는 분위기. 안 그렇다고 아무리 말해도, 분위기가 그러면 연락 안 한다. 진짜 중요한 건 시스템이 아니라 심리적 안전감이다. 피드백은 주는데 분기별 평가 시즌이다. 정민사원 평가 면담. "이번 분기 잘했어요. 근데 코드 퀄리티를 좀 더 신경 써야 할 것 같아요." "아... 네." "테스트 커버리지가 60%인데, 80% 이상으로 올려봐요." "네. 알겠습니다." "그리고 변수명 네이밍도 좀 더 명확하게 하고요." "네..." 끝났다. 피드백 줬다. 근데 다음 분기. 정민이 코드 퀄리티 그대로다. 테스트 커버리지 62%. 변수명 여전히 애매하다. 왜 안 바뀌지. 생각해봤다. "코드 퀄리티를 신경 써야 한다" - 이게 뭔 소린가. "테스트 커버리지 80% 이상" - 왜 80%인가. "변수명을 명확하게" - 뭐가 명확한 건가. 추상적이다. 구체적이지 않다. 그리고 더 중요한 건. 왜 그래야 하는지 안 알려줬다. 테스트 커버리지가 왜 중요한가. 그냥 숫자 채우기용인가. 아니면 진짜 버그 방지하려고인가. 변수명이 왜 명확해야 하나. 혼자 코딩할 때도 중요한가. 협업할 때만 중요한가. 이유를 모르면 안 바뀐다. "해야 한다"는 명령이다. "왜 해야 하는지"는 설득이다. 명령은 잊어버린다. 설득은 기억한다. 시간은 쓰는데 계산해봤다. 코드리뷰: 하루 1시간 × 5일 = 5시간 1on1: 주 4명 × 30분 = 2시간주간회의: 1시간 월간회의: 1시간 기타 미팅: 3시간 주당 12시간. 팀 관리에 쓴다. 적은 시간 아니다. 근데 뭔가 부족하다는 느낌. 문제는 시간이 아니라 방향이었다. 12시간을 "체크"하는 데 썼다. 코드 체크. 진행 체크. 이슈 체크. 체크는 했는데 대화는 안 했다. 김대리가 요즘 뭐 생각하는지 모른다. 이주임이 어떤 고민 있는지 모른다. 박사원이 회사생활 재밌는지 모른다. 체크리스트는 완벽한데 팀원들은 모른다. 잘하고 있다고 생각했는데 올해 초. 목표 세웠다. "좋은 파트장 되기" 그래서 했다. 코드리뷰 열심히. 1on1 정기적으로. 회의 효율적으로. 업무 공정하게. 피드백 명확하게. 다 했다. 근데 송대리는 나갔다. 정민이는 성장 정체됐다. 윤주임은 최근 의욕 없어 보인다. 뭐가 문제지. 체크리스트는 완벽했다. 근데 사람은 놓쳤다. 형식은 갖췄는데 본질은 없었다. 매뉴얼대로 했는데 마음은 안 통했다. 놓친 것들 밤 11시. 퇴근 전에 혼자 정리해봤다. 내가 놓친 것들. 관심. 코드는 봤는데 사람은 안 봤다. 경청. 질문은 했는데 답은 안 들었다. 맥락. 숫자는 봤는데 이유는 안 봤다. 신뢰. 시스템은 만들었는데 안전감은 안 줬다. 개별화. 공정하게 대했는데 다르게는 안 대했다. 의미. 피드백은 줬는데 왜 그래야 하는지는 안 알려줬다. 시간. 많이 썼는데 제대로는 안 썼다. 완벽한 파트장이 되려고 했다. 근데 완벽한 체크리스트만 만들었다. 좋은 리더가 되려고 했다. 근데 좋은 관리자만 됐다. 내일부터 월요일 아침. 노트 펼친다. 새로 쓴다.김대리한테 GraphQL 프로젝트 기회 만들어주기 이주임이랑 1on1 때 "요즘 뭐가 재밌어요?" 물어보기 박사원한테 답 알려주지 말고 힌트만 주기 최과장한테 진짜 하고 싶은 거 물어보기 정민이가 Rust로 뭐 하고 싶은지 듣기 주간회의 때 "다른 의견?" 대신 "여기서 제일 걱정되는 부분이 뭐예요?" 물어보기 칭찬할 때 구체적으로 뭐가 좋았는지 3문장 이상 쓰기 송대리 나가기 전에 왜 못 잡았는지 복기하기완벽해지려는 건 포기한다. 대신 관심 갖는다. 체크리스트 완성하려는 건 그만둔다. 대신 대화한다. 시스템 개선하려는 건 멈춘다. 대신 신뢰 쌓는다. 관리는 잘했다. 이제 리더 해본다.8명 다 챙기는 건 불가능하다. 근데 8명 다 신경 쓰는 건 가능하다. 그 차이가 뭔지 이제 알 것 같다.

기술 선택 회의에서 '내 의견은 이거야' 못 하는 날들

기술 선택 회의에서 '내 의견은 이거야' 못 하는 날들

오늘도 회의 오전 10시. 아키텍처 회의. 신규 프로젝트 기술 스택 결정하는 자리다. "파트장님 의견은요?" 5초 침묵했다. 20년 차가 5초 침묵했다."둘 다 장단점이 있어." 또 이 말이다. 내가 제일 싫어하는 내 대답이다. 예전엔 안 그랬다 30대 때는 달랐다. "이거 쓰면 됩니다" 단칼에 정했다. 근거도 명확했다. 경험했으니까. 지금은? 경험했는데 확신이 없다. 작년에 Go 도입 회의 때였다. "Go 괜찮습니다. 동시성 처리 좋고요." 김대리가 말했다. 27살. 나도 Go 안다. 토이 프로젝트로 3개월 써봤다. 근데 실무는 다르잖아. "음... 러닝 커브는?" "저희 팀원들 금방 배웁니다." 맞는 말이다. 근데 3년 뒤는? 유지보수는? 이직으로 사람 빠지면?질문만 10개 했다. 대답은 다 들었다. 그래도 결정 못 했다. "다음 주까지 검토하고 다시 모이자." 회의 끝나고 혼자 남았다. 예전엔 내가 답을 줬는데. 지금은 내가 시간을 번다. 확신이 사라진 순간 정확히 언제부턴가. 아마 40 넘어서부터. 새 기술 나올 때마다 공부했다. React, Vue, Next.js, Nest.js. 다 해봤다. 블로그도 읽었다. 근데 실무 투입은 못 해봤다. 회의만 하고, 검토만 하고, 승인만 한다. 이게 문제다. 코드를 안 짜니까 감이 없다. 작년에 React 18 나왔을 때. 김대리가 "Suspense 진짜 좋습니다" 했다. 나는 문서만 읽었다. "좋긴 한데... 레거시랑 호환은?" "마이그레이션 플랜 세우면 됩니다." "공수는?" "한 달 정도요." 한 달. 이 친구 말이 맞을까. 경험해본 나라면 알텐데. 결국 "좀 더 검토해보자" 했다. 김대리 표정이 묘했다. 실망? 답답함?그날 저녁에 혼자 코드 짜봤다. React 18로 샘플 프로젝트. 3시간 걸렸다. "아, 이거 괜찮네." 근데 이미 늦었다. 회의는 끝났고, 검토 기간 2주 잡혔고. 내가 시간 끈 거다. 내가 병목이다 요즘 자주 느낀다. 내가 속도를 늦춘다. 후배들은 빠르다. 새 기술 나오면 주말에 써본다. 월요일에 "이거 좋습니다" 한다. 나는? 월요일에 문서 읽기 시작한다. 수요일에 "검토 중" 이다. 금요일에 "다음 주에" 한다. 2주 지나면 후배들 의욕 떨어진다. 당연하다. 지난달에 TypeScript 5.0 도입 건. 박주임이 제안했다. 29살. "Decorator 개선됐고, Enum 성능 좋아졌습니다." 나는 4.9까지만 써봤다. 5.0은 릴리즈 노트만 읽었다. "기존 프로젝트 영향도는?" "CI/CD 파이프라인은?" "타입 체킹 시간은?" 질문만 쏟아냈다. 박주임이 다 조사해서 가져왔다. 그래도 "한 번 더 보자" 했다. 왜? 확신이 없어서. 집에 와서 아내한테 말했다. "나 요즘 일 못 하는 것 같아." "무슨 소리야. 파트장까지 달았잖아." "그게 문제야. 파트장이니까 결정해야 하는데." 아내는 이해 못 한다. 나도 설명 못 한다. 20년 경력의 무게 경력이 길수록 신중해진다. 이게 장점이기도 하고 단점이기도 하다. 실패를 많이 봤다. 잘못된 기술 선택으로 프로젝트 망한 거. 유행 따라갔다가 유지보수 지옥 된 거. 다 겪었다. 2010년에 NoSQL 열풍 때. MongoDB 도입했다가 1년 만에 MySQL 복귀. 마이그레이션에 3개월 걸렸다. 2015년에 마이크로서비스 전환. 모놀리스를 20개 서비스로 쪼갰다. 결과는? 장애 추적 지옥. 이런 거 겪으니까. 새 기술 앞에서 겁이 난다. 근데 후배들은 모른다. 실패를 안 겨봤으니까. 그래서 자신감 넘친다. 누가 맞을까. 솔직히 모르겠다. 실패 경험이 나를 신중하게 만들었는데. 그게 지금은 나를 느리게 만든다. 회의 중 내 모습 요즘 회의 때 내 모습."좋은데, 리스크는?" "괜찮은데, 검증은?" "나쁘지 않은데, 레퍼런스는?"부정 먼저 나온다. 의도는 아닌데 습관이다. 김대리가 GraphQL 제안했을 때. "REST보다 유연하고, 오버페칭 없고..." 나는 들으면서 생각했다. '쿼리 복잡도 관리는? N+1 문제는? 캐싱은?' 입 밖으로 나왔다. "그런데 말이야..." 김대리 표정 굳었다. 또 시작이구나. 그 표정이었다. 회의 끝나고 복도에서. "파트장님은 뭘 원하세요?" 순간 할 말이 없었다. 나도 모르겠다. 안전한 선택? 검증된 기술? 그럼 계속 Java Spring만? 아니면 새 기술? 배우고 적응하고? 근데 실패하면 책임은 내가? 밤에 혼자 코딩할 때 집에 와서 10시. 아이들 재우고. 노트북 켰다. GraphQL 튜토리얼. 1시간 따라 했다. "오, 이거 진짜 편한데?" 근데 이건 토이 프로젝트. 실무는 다르다. 트래픽 1000 RPS 때는? 데이터베이스 10개 조인 때는? 모른다. 해봐야 아는데 해볼 시간이 없다. 새벽 1시. 더 하고 싶은데 내일 회의 있다. 잤다. 다음 날 회의. "GraphQL 제안 건, 좀 더 검토하고..." 또 미뤘다. 김대리가 물었다. "언제까지 검토하세요?" "2주?" "파일럿이라도 해보면 안 될까요?" 좋은 제안이다. 근데 파일럿 리소스는 어디서? 실패하면 그 시간은 누가 책임지나? "검토하고 얘기하자." 회의실 나오면서 느꼈다. 나는 결정을 회피하고 있다. 파트장의 역설 파트장이 됐다. 의사결정권을 받았다. 근데 결정을 못 한다. 권한은 있는데 확신이 없다. 이게 역설이다. 부장님한테 물어볼까. "GraphQL 도입 어떻게 생각하십니까?" 부장님은 더 모른다. 10년 전에 개발 그만뒀다. 나한테 물어본다. "박 파트장 판단에 맡기지." 결국 내가 정해야 한다. 근데 못 정한다. 팀원들은 기다린다. 2주, 4주, 6주. 그 사이 다른 팀은 이미 적용했다. 페이스북에 사례 올라온다. "GraphQL 도입 후기" 우리 팀은 아직 검토 중. 어느 금요일 저녁 퇴근 30분 전. 김대리가 들어왔다. "파트장님, 시간 있으세요?" "어, 말해봐." "GraphQL 건인데요." 또 이거다. "제가 주말에 PoC 만들어봤습니다." 노트북을 돌렸다. 코드가 보였다. "기존 REST API랑 성능 비교했고요." 그래프가 보였다. 응답 속도 30% 개선. "에러 핸들링도 구현했고." 코드 설명했다. 진짜 잘 만들었다. "캐싱 전략도 정리했습니다." 문서 10페이지. 내가 물었던 것들 다 답했다. 5분 동안 설명 들었다. 할 말이 없었다. "좋네." "그럼 적용해도 될까요?" 여기서 또 막혔다. 좋은데, 그래도, 만약에... "한 번만 더 보자." 김대리 표정. 실망을 숨기려고 애쓴다. "네, 알겠습니다." 나갔다. 혼자 남았다. 모니터를 봤다. 내가 뭘 하고 있나. 저 친구가 날 믿고 3주 기다렸다. 주말 반납하고 PoC 만들었다. 내가 원하는 걸 다 준비했다. 근데 나는 또 "한 번 더"다. 월요일 아침 출근했다. 김대리한테 슬랙 보냈다. "GraphQL 적용하자. 파일럿으로 한 API부터." 답장 10초 만에 왔다. "감사합니다!" 회의 소집했다. "GraphQL 파일럿 프로젝트 시작한다." 김대리가 발표했다. 일정 2주, 범위 유저 API 3개, 모니터링 1주. 나는 들으면서 생각했다. '진작 이렇게 할 걸.' 근데 또 불안하다. 만약 실패하면? 성능 안 나오면? 장애 나면? 고개를 저었다. 그만 생각하자. 후배를 믿어야지. 내가 다 확신할 수는 없다. 20년 경력이 다 아는 게 아니다. 그냥 인정하자. 모르는 게 있다고. 후배가 나보다 잘 아는 게 있다고. 2주 후 GraphQL 파일럿 완료. 결과 보고 회의. 성능 개선 25%. 에러율 0.3% (허용 범위). 응답 속도 평균 150ms → 110ms. 성공이다. 김대리가 보고했다. 나는 옆에서 들었다. "고생했어." "감사합니다." 부장님이 물었다. "다른 API도 확대 적용하죠?" 내가 대답했다. "네, 진행하겠습니다." 이번엔 확신 있게 말했다. 결과를 봤으니까. 회의 끝나고. 김대리가 커피 사왔다. "파트장님, 처음엔 왜 그렇게 신중하셨어요?" 솔직하게 말했다. "확신이 없었어. 내가 안 해봐서." "그래도 믿어주셔서 감사합니다." "너희가 잘해줘서 가능했지." 둘 다 웃었다. 깨달은 것 나는 모든 걸 알 수 없다. 20년 경력도 마찬가지다. 후배들이 아는 게 있다. 새 기술, 새 트렌드. 그들이 현장에 더 가깝다. 내 역할은 뭘까. 모든 걸 결정하는 게 아니다. 방향을 제시하고, 리스크를 관리하고, 실패를 받아주는 것. 확신 없어도 괜찮다. 대신 믿어줘야 한다. 후배를 믿고. 데이터를 믿고. 결과를 보고 수정하면 된다. 완벽한 결정은 없다. 빠른 실행과 빠른 수정. 이게 답인 것 같다. 요즘 회의에서 바뀐 것. "둘 다 장단점이 있어. 근데 일단 해보자." 한 줄 추가했다. "일단 해보자." 이게 내가 할 수 있는 최선이다. 확신은 없어도 실행은 할 수 있다.경력이 길수록 겸손해진다. 그게 약점일 수도, 강점일 수도 있다. 중요한 건 멈추지 않는 것이다.

Kotlin, Next.js, Rust - 배워야 한다는 강박

Kotlin, Next.js, Rust - 배워야 한다는 강박

월요일 오전, Slack 알림 출근했다. 메일 51개. Slack 127개. 제일 위에 있는 메시지. 김대리가 올린 거다. "파트장님, 신규 프로젝트 코틀린으로 해도 될까요? 스프링부트 3.2 새로 나왔는데 코틀린 지원이 훨씬 좋아졌다고..." 읽었다. 답장은 안 했다. 일단 커피부터 마셨다.코틀린. 작년에도 배우겠다고 마음먹었다. 재작년에도 그랬다. Java로 20년 먹고살았다. 문제없이 잘 돌아간다. 근데 요즘 채용공고 보면 코틀린이 기본이다. "Java/Kotlin 가능자" 아니라 "Kotlin 우대"다. 우대가 아니라 필수처럼 보인다. 점심시간, 후배들 대화 구내식당이다. 김대리, 박주임, 최대리가 앉아있다. 나도 끼었다. "요즘 뭐 공부해?" 물었더니 셋이서 떠든다. "저는 Next.js 14 배우고 있어요. App Router 완전 달라졌거든요." "저는 Rust요. 메모리 안전성이 장난 아니래요." "저도 Rust 관심 있는데, 러닝커브가..."밥 먹으면서 고개만 끄덕였다. Next.js가 뭔지는 안다. React 프레임워크다. SSR 한다. 그 정도는 안다. 근데 App Router? Pages Router랑 뭐가 다른 건지 모른다. Rust는 들어만 봤다. C++ 대체재라던데. 메모리 관리를 컴파일러가 한다고. 배우고 싶다. 진짜로. 근데 언제? 오후 2시, 회의실 기획팀이랑 미팅이다. 새 프로젝트 킥오프. 앱 리뉴얼. "프론트엔드 스택 어떻게 갈까요?" 기획팀장이 물었다. 김대리가 바로 대답한다. "Next.js 14 어떨까요? 성능 개선도 많이 됐고, SEO도 좋고..." 다들 고개 끄덕인다. 나도 끄덕였다. "좋지. 그렇게 가자." 회의 끝났다. 30분.회의실 나오면서 생각했다. 'Next.js 14. 나 써본 적 없는데.' 김대리는 이미 개인 프로젝트로 써봤다고 했다. 주말에. 나도 주말에 뭐 했나 생각해봤다. 토요일은 아들 학원 데려다주고. 일요일은 처가 다녀왔다. 공부? 못 했다. 오후 6시, 코드리뷰 김대리가 PR 올렸다. 코틀린으로 짠 샘플 코드다. "파트장님 리뷰 부탁드려요~" 클릭했다. data class User( val id: Long, val name: String, val email: String? )fun findUser(id: Long): User? { return userRepository.findById(id) .orElse(null) }읽었다. 이해는 된다. data class. 자바 Record 비슷한 거다. 물음표는 nullable. 자바 Optional 같은 거. 근데 이게 좋은 코드인지, 코틀린답게 짠 건지는 모르겠다. "LGTM" 달았다. Looks Good To Me. 그리고 생각했다. '나 지금 제대로 리뷰한 거 맞나?' 오후 8시, 혼자 남은 사무실 다들 퇴근했다. 나만 남았다. IDE 켰다. IntelliJ. "코틀린 시작하기" 검색했다. 공식 문서 열었다. 영어다. 읽기 시작했다. 10분 지났다. Slack 알림. 기획팀장이다. "파트장님, 내일 오전 회의 하나 잡아도 될까요?" "네, 괜찮습니다." 문서 닫았다. 다시 열 생각 안 난다. 집에 가야지. 내일 또 회의 있다. 2개. 목요일 저녁, 유튜브 집이다. 침대에 누웠다. 유튜브 추천 영상. "Rust 10분 만에 시작하기" "Next.js 14 완벽 가이드" "코틀린 vs 자바, 5분 비교" 다 봤다. 20분. 이해했나? 아니다. 따라 해야 한다는 건 안다. 근데 노트북 켤 기운이 없다. 내일 하자. 금요일이니까 여유 있겠지. 금요일 됐다. 회의 3개 있었다. 못 했다. 토요일 오전, 서재 일어났다. 9시. 커피 마셨다. "오늘은 공부 좀 하자." 노트북 켰다. 코틀린부터. 기초부터 차근차근. 30분 지났다. 아들이 방문 열었다. "아빠, 롤 듀오 ㄱ?" "아빠 공부 중이야." "에이~ 한 판만~" 같이 했다. 한 판이 세 판 됐다. 점심 먹었다. 12시 반. 오후에 하자. 오후에 장 봐야 한다고 아내가 말했다. 같이 갔다. 3시간. 저녁 먹고, 설거지하고, 9시. 또 노트북 켰다. "이번엔 진짜." Next.js 공식 문서 열었다. Tutorial 따라 했다. npx create-next-app@latest 설치하는 데 10분. 코드 따라 치기 시작했다. 에러 났다. 버전이 안 맞는다. 구글링했다. 스택오버플로우 10개 탭 열었다. 해결했다. 근데 이게 뭘 하는 코드인지 모르겠다. 'use client'가 뭐지? Server Component? Client Component? React 18부터 바뀌었다는데. React도 다시 공부해야 하나? 시계 봤다. 11시 반. 내일 일요일이긴 한데. 피곤하다. "내일 하자." 노트북 껐다. 일요일, 침대 일어났다. 10시. 처가 가는 날이다. 차 타고 2시간. 장인어른이랑 소주 마셨다. "요즘 일은 어때?" "바쁩니다." "개발자는 평생 공부해야 한다며?" "...네." 돌아왔다. 8시. 씻고 누웠다. 내일 월요일이다. 코틀린, Next.js, Rust. 하나도 못 배웠다. 월요일 아침, 또 출근 Slack 켰다. 박주임이 글 올렸다. "주말에 Rust로 간단한 CLI 툴 만들어봤어요! 재밌네요 ㅎㅎ" GitHub 링크 달려있다. 클릭했다. 코드 봤다. fn main() { let args: Vec<String> = env::args().collect(); println!("Hello, {}!", args[1]); }이해 안 된다. Vec가 뭐지. collect가 뭐지. 구글링하려다가. "파트장님, 10시 회의 준비 부탁드려요!" Slack 알림. 검색창 닫았다. 회의 자료 만들었다. 1시간. 회의 했다. 1시간 반. 점심 먹었다. 구내식당. 후배들 또 기술 얘기한다. "Bun 써보셨어요? npm보다 엄청 빠르대요." Bun? 그게 뭐지. 검색했다. JavaScript 런타임이다. Node.js 대체재. "아, 그거. 나중에 써봐야지." 대답했다. 나중은 언제인가. 수요일 저녁, 1on1 김대리랑 1on1이다. 회의실 잡았다. 둘이. "요즘 어때? 일은?" "재밌어요. 새로운 거 많이 배우고 있어서." "좋네. 뭐 배우는데?" "코틀린이랑 Next.js요. 집에서 사이드 프로젝트 하면서 익히는 중이에요." "시간 어떻게 내?" "퇴근하고 두세 시간씩요. 주말엔 더 하고." "...대단하네." 침묵. "파트장님은 요즘 뭐 공부하세요?" 물어봤다. "나? 나도... 뭐 이것저것." 구체적으로 말 못 했다. 배운 게 없으니까. 목요일 밤, 침대에서 누웠다. 핸드폰 켰다. 링크드인 열었다. 피드에 글들 올라온다. "Rust로 만든 서버, Go보다 30% 빠름" "Next.js 14 마이그레이션 완료, 개발 생산성 2배" "코틀린 도입 후 코드량 40% 감소" 다 20대, 30대 초반이다. 나? 45세. Java, Spring 20년. 그것만 한다. 스크롤 내렸다. "40대 시니어 개발자를 위한 커리어 전환" 클릭했다. 읽었다. "관리직으로 가거나, 아키텍트로 가거나." 둘 다 코딩 못 한다는 뜻이다. 껐다. 잠 안 온다. 금요일 오후, 기술 면접 채용 면접이다. 신입이 아니라 경력직. 3년차. 이력서 봤다. Java, Kotlin, Spring Boot, React, Next.js. 다 쓴다고 했다. 면접 시작했다. "코틀린 주로 어떻게 활용하셨나요?" 지원자가 대답한다. "data class로 보일러플레이트 줄이고, sealed class로 상태 관리하고, coroutine으로 비동기 처리했습니다." 고개 끄덕였다. 이해는 된다. 근데 sealed class가 정확히 뭔지는 모른다. "Next.js는요?" "13버전 때 App Router 써봤고, 14에서 Server Actions 활용해서 API 레이어 줄였습니다." 또 끄덕였다. Server Actions. 처음 듣는다. 옆에 앉은 김대리가 질문한다. "Suspense Boundary 어떻게 설계하셨어요?" 지원자가 자세히 대답한다. 나는 듣기만 했다. 면접 끝났다. "어떠셨어요?" 김대리가 물었다. "좋은 것 같은데. 너가 판단해." 대답했다. 사실은 내가 판단 못 한다. 그날 밤, 서재 집에 왔다. 저녁 먹고, 9시. 서재 들어갔다. 문 닫았다. 노트북 켰다. "오늘은 정말 한다." 코틀린 IntelliJ 프로젝트 만들었다. Tutorial 따라 했다. fun main() { println("Hello, Kotlin!") } 실행했다. 됐다. 다음 단계. 변수 선언. val, var. 함수 선언. fun. 클래스 선언. class, data class. 따라 쳤다. 30분. 이해했나? 조금. 근데 이걸 언제 다 배우지. 공식 문서 스크롤 내렸다. Coroutines, Flow, Sealed Classes, Extension Functions... 페이지가 끝없다. 시계 봤다. 10시. 내일 토요일이긴 한데. 피곤하다. 또. "내일 이어서." 저장하고 껐다. 토요일 아침, 현실 일어났다. 아내가 말했다. "오늘 애들 학원 데려다줘야 해." "알았어." "그리고 저녁에 친구 부부 온대." "...응." 공부 시간? 없다. 일요일? 부모님 뵈러 가는 날이다. 다음 주? 회의 12개 잡혀있다. 언제 하지. 진짜 언제. 월요일 오전, 마음의 거리 출근했다. Slack 열었다. 최대리가 올렸다. "주말에 Tauri 써봤는데 Electron보다 가볍네요!" Tauri. 또 모르는 거다. 검색했다. Rust로 만든 데스크톱 앱 프레임워크. Rust 배워야 쓸 수 있다. 창 닫았다. 김대리가 다가왔다. "파트장님, 코틀린 괜찮죠?" "어, 좋지." "그럼 다음 프로젝트 코틀린으로 갈게요!" "...그래." 괜찮은지 모른다. 사실. 근데 막을 이유도 없다. 후배들이 하고 싶어 하니까. 나? 나는 코드리뷰나 하면 된다. LGTM만 달면 된다. 그게 파트장 일이다. 그렇게 생각하기로 했다. 수요일 점심, 동기 만남 대학 동기 만났다. 삼성 다니는 친구다. "너 요즘 뭐 해?" "바빠. 넌?" "나도. 근데 너 코딩 아직 해?" "당연하지. 넌?" "나 작년부터 안 해. 관리만." "어떤데?" "편하긴 한데... 뭔가 찝찝해." "나도." 둘 다 웃었다. "요즘 애들 뭐 쓰냐?" "코틀린, 넥스트, 러스트." "배워?" "못 배워. 넌?" "나도." 또 웃었다. 웃긴데 슬프다. 금요일 저녁, 퇴근길 9시 퇴근이다. 지하철 탔다. 핸드폰 켰다. 유튜브 열었다. "코틀린 기초 강의 1화" 저장했다. "나중에 봐야지." 저장 목록 열었다. 197개 영상. 다 안 본 거다. "나중에 보기"가 "영원히 안 보기"다. 알고 있다. 창 닫았다. 집 도착했다. 씻고 누웠다. 내일 토요일. 이번엔 정말 공부해야지. 근데 될까? 모르겠다. 그다음 주 월요일, 반복 출근했다. 또 Slack. 박주임이 올렸다. "Svelte 5 나왔네요! 신택스 완전 바뀌었어요!" Svelte. 프론트엔드 프레임워크. React, Vue 말고 또 다른 거. 배워야 하나? 아니. 못 배운다. 이미 밀린 게 세 개다. 네 개는 못 한다. 답장 안 했다. 읽음만 표시됐다. 목요일 오후, CTO와 면담 CTO가 불렀다. 임원이다. 50대. "박 파트장, 요즘 팀 분위기 어때?" "좋습니다." "기술 스택은?" "후배들이 잘 선정하고 있습니다." "자네는?" "...저는 관리하고 있습니다." "코딩은?" "가끔 합니다." 거짓말이다. 거의 안 한다. "나도 그랬어. 40대 되면 그래." CTO가 웃었다. 위로인가 싶었는데. "근데 기술은 계속 봐야 해. 안 그러면 후배들이랑 대화가 안 돼." "...네." "나 요즘 주말에 공부해. ChatGPT API 써보고 있어." "대단하십니다." "자네도 해. 시간 내." "노력하겠습니다." 나왔다. CTO는 50대인데 공부한다. 나는 45인데 못 한다. 뭐가 문제일까. 시간? 의지? 체력? 다인 것 같다. 금요일 밤, 혼자 앉아서 집이다. 11시. 다들 잤다. 나만 깨어있다. 노트북 앞에 앉았다. 코틀린 프로젝트 열었다. 지난주에 만든 거다. 코드 몇 줄 있다. 이어서 쓰려고 했다. 근데 뭘 쓰지? Tutorial 다시 열었다. 5분 읽었다. 졸리다. 커피 마셨다. 10분 더 읽었다. 내용이 안 들어온다. 머리가 안 돌아간다. "내일 하자." 또. 내일, 내일, 내일. 항상 내일이다. 근데 내일 오면 또 못 한다. 그다음 날, 토요일 낮 일어났다. 10시. 씻고 커피 마셨다. "오늘은 진짜." 서재 들어갔다. 노트북 켰다. Rust 설치했다. rustup. 설치만 30분. "Hello, World!" 예제 따라 했다. 됐다. 다음은? 공식 문서 The Book 열었다. 챕터 1. 시작하기. 읽었다. 이해했다. 챕터 2. Guessing Game. 따라 쳤다. 에러 났다. 해결했다. 챕터 3. 변수와... 문 열렸다. "아빠 심심해." 딸이다. "아빠 공부 중이야." "뭐 공부?" "컴퓨터." "나도 할래!" 무릎에 앉았다. 같이 봤다. "이게 뭐야?" "코드라는 거야." "재미없어." 5분 만에 나갔다. 다시 책 열었다. 어디까지 봤지? 챕터 3. 아, 여기. 10분 읽었다. 배고프다. 점심 먹어야지. 시계 봤다. 12시. 오후에 하자. 오후엔 아들이 PC방 가자고 했다. 같이 갔다. 두 시간. 돌아와서 4시. 피곤하다. 소파에 누웠다. 눈 감았다. 깼다. 7시. 저녁 먹었다. 9시. 노트북 다시 켰다. Rust 챕터 3. 읽다가 챕터 1 내용 기억 안 나서 다시 봤다. 11시. 또 졸리다. "내일." 일요일, 포기하는 순간 일어났다. 노트북 안 켰다. 가족이랑 영화 봤다. 저녁 먹고 산책했다. 공부 생각 안 났다. 아니, 안 하기로 했다. 오늘 하루는. 하루쯤은 괜찮다. 그렇게 생각했다. 근데 마음 한구석이 불편하다. '나 뒤처지는 거 아냐?' 이 생각. 떨쳐지지 않는다. 다음 주 수요일, 회의에서 프로젝트 회의다. 김대리가 발표한다. "코틀린으로 전환하면서 null safety 확보하고, coroutine으로 비동기 처리 개선했습니다." "보일러플레이트 코드 30% 감소했고요." "테스트 코드도 더 간결해졌습니다." 다들 박수. 나도 쳤다. "잘했어." 말했다. 속으로 생각했다. '나 저거 하나도 못 짜.' 목요일 저녁, 기술 블로그 퇴근하고 집. 저녁 먹고 핸드폰 봤다. 기술 블로그 구독한 거 있다. 새 글 알림 왔다. "45세 개발자의 Rust 학습기" 클릭했다. 읽었다. "저도 배우기 힘들었습니다. 하지만 매일 30분씩, 3개월 했더니 어느새 프로젝트를 만들고 있었습니다." 매일 30분. 나도 할 수 있을 것 같다. 아니. 못 한다. 지난 한 달 돌아봤다. 제대로 공부한 날? 없다. 30분? 10분도 못 했다. 블로그 닫았다. 금요일 밤, 솔직해지는 시간 혼자 앉아있다. 맥주 마셨다. 생각했다. 나 왜 못 배우지? 시간이 없어서? 아니다. 시간은 있다. 주말 이틀. 하루 2시간만 써도 4시간. 한 달이면 16시간. Tutorial 하나는 끝낸다. 근데 못 한다. 왜? 피곤해서? 맞다. 피곤하다. 근데 후배들도 피곤하다. 김대리도 야근한다. 근데 공부한다. 뭐가 다른가? 나이? 체력? 그것도 있다. 근데 진짜 이유는. 동기부여. 없다. 배워야 하는 이유가 약하다. 지금도 잘 먹고 산다. 연봉 9500. 코틀린 못 해도 파트장이다. Rust 못 해도 아무도 뭐라 안 한다. Next.js 몰라도 회의는 주재한다. 문제없다. 당장은. 그게 문제다. 다음 주 월요일, 채용공고 점심시간. 링크드인 봤다. 채용공고 떴다. "Senior Backend Engineer" 클릭했다. 자격요건 봤다. "Kotlin, Spring Boot, Microservices" "Cloud: AWS, GCP" "Containerization: Docker, Kubernetes" "Message Queue: Kafka, RabbitMQ" 다 아는 단어다. 근데 다 못 한다. Spring Boot? 한다. Kotlin? 못 한다. AWS? 조금. Kubernetes? 들어만 봤다. Kafka? 개념만. 50%도 못 채운다. 우대사항 봤다.

후배가 말한 '편하게 하시죠' - 그게 왜 더 불편해?

후배가 말한 '편하게 하시죠' - 그게 왜 더 불편해?

목요일 오후 3시 "박 파트장님, 이번 아키텍처 리뷰는 편하게 하시죠. 저희가 다 처리할게요." 28살 후배 준영이가 웃으며 말했다. 친절한 얼굴이다. 진심으로 배려하는 표정이다. "아, 그래. 고맙네." 나는 웃으며 답했다. 그리고 내 자리로 돌아왔다.모니터를 켰다. IntelliJ가 떴다. 커서가 깜빡인다. 근데 손이 안 움직인다. '편하게 하시죠.' 그 말이 계속 맴돈다. 존경인가, 거리두기인가 준영이는 나쁜 애가 아니다. 오히려 팀에서 제일 예의 바른 애다. 내가 코드리뷰 할 때 메모 꼼꼼히 읽는다. 1on1 때 질문도 잘한다. 회식 때 술도 따른다. 근데 왜일까. 그 '편하게 하시죠'가 자꾸 걸린다. 작년만 해도 달랐다. 준영이가 신입이었을 때. "파트장님, 이 부분 어떻게 짜는 게 좋을까요?" "파트장님, 이 에러 좀 봐주시겠어요?" "파트장님 코드 보니까 이런 패턴이 있던데요." 나는 옆에 앉아서 같이 코드를 봤다. 같이 디버깅했다. 같이 밤을 샜다.그땐 나도 '개발자'였다. 지금은 뭐지. '관리자'인가. '의사결정권자'인가. 아니면 그냥 '나이 든 사람'인가. 편하게 하라는 건 점심시간이다. 사내식당에서 후배들과 먹는다. "요즘 Rust 괜찮던데요. 성능이 확실히 다르더라고요." "맞아요. 근데 진입장벽이 좀..." "그래도 배워둘 만한 것 같아요." 후배들이 신나게 떠든다. 나는 고개를 끄덕인다. "그래, 요즘 Rust가 뜨긴 하더라." 사실 나는 Rust를 안 써봤다. 튜토리얼 한두 개 본 게 전부다. 예전엔 몰랐다. 물어봤다. "어떻게 쓰는 건데?" 하고. 지금은 안 물어본다. 괜히 '그것도 모르세요?' 소리 듣기 싫어서. 아니, 사실은 그것도 아니다. 후배들은 그런 말 안 한다. 그냥 '편하게 하세요' 하고 알아서 처리한다.그게 더 불편하다. 내가 싫어진 건 아니다 오해는 하지 말자. 준영이나 다른 후배들이 나를 싫어하는 건 아니다. 오히려 잘해준다. 회의 때 내 의견 물어본다. 결정 미루면 기다려준다. "파트장님 판단이 맞을 것 같아요." "파트장님 경험이 많으시니까요." 그 말들이 진심인 것도 안다. 근데 왜 자꾸 이 느낌이 드는 걸까. '아, 이 사람은 이제 코드 안 짜는 사람이구나.' '관리만 하는 사람이구나.' '우리랑은 다른 레이어에 있는 사람이구나.' 저녁 8시다. 후배들이 하나둘 퇴근한다. "파트장님, 먼저 들어갑니다." "내일 봬요!" 나는 손 흔들며 보낸다. "그래, 조심히 가." 사무실이 조용해진다. 이제 내 시간이다. IntelliJ를 켰다. 프로젝트를 열었다. 코드를 봤다. 근데 웃긴 게 뭔지 아나. 이제 혼자 코딩하는 게 더 편하다. 후배들 있을 때는 뭔가 눈치가 보인다. '파트장님이 저걸 왜 직접 하세요?' 하는 시선. 실제로 말은 안 하지만 느껴진다. 공기가 다르다. 20년 전 내가 그랬다 생각해보면 나도 그랬다. 20년 전. 당시 우리 팀장님. 40대 중반이었나. 개발 경력 15년. 어느 날 밤늦게 팀장님이 코드를 고치고 계셨다. 나는 옆에서 봤다. 그리고 속으로 생각했다. '팀장님이 저걸 왜 직접 하시지. 나한테 시키시면 되는데.' '관리자면 관리만 하시면 되잖아.' 지금 생각하면 미안하다. 그때 팀장님도 이런 기분이었을까. 코드를 짜고 싶은데. 개발자로 남고 싶은데. 주변에서 자꾸 '편하게 하세요' 한다. 그 팀장님은 2년 후에 퇴사하셨다. 스타트업으로 가셨다. "다시 코드 짜고 싶어서." 라고 하셨다. 당시엔 이해 못 했다. 지금은 안다. 편하게 못 한다 금요일 아침이다. 주간회의다. 준영이가 발표한다. "이번 주 스프린트 결과입니다." 슬라이드가 넘어간다. 완료된 태스크들이 보인다. "파트장님, 특별히 확인하실 거 있으세요?" "아니, 잘했네. 고생했어." 회의가 끝났다. 다들 자리로 돌아간다. 나는 노트북을 열었다. 준영이가 올린 PR을 봤다. 코드가 깔끔하다. 테스트도 있다. 주석도 있다. 근데 한 부분이 걸린다. 성능이 좀 아쉽다. 예전 같으면 바로 코멘트 달았을 것이다. "이렇게 하면 더 빠를 것 같은데." 지금은 고민된다. '지적하면 기분 나쁘려나.' '아니, 그것보다 내가 직접 고치면 되는 거 아닌가.' '근데 내가 고치면 준영이가 뭐라 생각할까.' 결국 코멘트를 달았다. "이 부분 성능 개선 여지가 있어 보여요. 한번 같이 봐요." 30분 후. 준영이가 답했다. "아, 괜찮습니다. 제가 수정할게요. 파트장님은 편하게 하세요." 또 나왔다. '편하게 하세요.' 정체성이 흔들린다 내가 누군가. 20년차 개발자인가. 파트장인가. 관리자인가. 아니면 '예전에 개발 잘했던 사람'인가. 명함에는 '개발 파트장'이라고 써 있다. 근데 나는 개발을 하나. 회의 준비한다. 보고서 쓴다. 일정 조율한다. 인사평가 한다. 코드는 언제 짜나. 밤에. 혼자. 몰래. 왜 몰래 짜는 것처럼 느껴질까. 주말에 기술 블로그를 읽는다. Next.js 14 새 기능. Bun 런타임. AI 코드 생성. 읽으면서 생각한다. '나도 해봐야 하나.' 근데 바로 다음 생각이 온다. '근데 내가 언제 써보겠어.' 월요일 되면 또 회의다. 일정 체크다. 이슈 관리다. 실제로 프로덕트 코드 짜는 건 후배들이다. 나는 리뷰만 한다. 승인만 한다. 그게 내 역할이라고 회사는 말한다. 근데 나는 그게 싫다. 솔직히 말하면 저번 주 팀 회식이 있었다. 술 몇 잔 마셨다. 후배가 물었다. "파트장님은 앞으로 어떻게 하실 거예요? 임원 되시나요?" "글쎄. 그건 아직 모르지." "임원 되시면 진짜 개발은 못 하시겠네요." "...그렇겠지." 집에 와서 생각했다. 나는 뭘 하고 싶은 걸까. 임원이 되고 싶은가. 아니다. 관리만 하고 싶은가. 아니다. 그럼 뭐가 하고 싶은가. 답은 명확하다. 코드를 짜고 싶다. 개발자로 남고 싶다. 45살이든 50살이든. 근데 주변은 나를 그렇게 안 본다. '편하게 하세요.' 그 말 속에는 이게 들어있다. '당신은 이제 그 단계가 아니잖아요.' '우리가 할게요. 당신은 관리나 하세요.' 화요일 오전 준영이가 내 자리로 왔다. "파트장님, 잠깐 여쭤봐도 될까요?" "그래, 뭔데." "이 부분 설계가 좀 애매해서요. 의견 주시면 감사하겠습니다." 모니터를 같이 봤다. 코드를 봤다. "아, 이거는 말이야..." 설명을 시작했다. 왜 이렇게 하면 안 되는지. 어떻게 하는 게 나은지. 준영이가 고개를 끄덕인다. "아, 그렇군요. 이해했습니다." "직접 보여줄까?" "아, 괜찮습니다. 설명만으로도 충분해요. 편하게 하세요." 또 나왔다. 나는 웃었다. "아니야, 내가 짜볼게. 5분이면 돼." 키보드를 당겼다. 코드를 짰다. 손이 기억한다. 20년이 손끝에 있다. 5분 만에 끝났다. "이렇게 하면 돼." 준영이가 놀란 표정으로 봤다. "오, 빠르시네요." "20년 했으니까." "역시 파트장님은 다르시네요." 그 말을 들으니 기분이 좀 나아졌다. 아, 나는 아직 개발자구나. 답은 없다 저녁이다. 퇴근길이다. 지하철에서 생각한다. 나는 준영이가 미운 게 아니다. 오히려 고맙다. 후배들이 싫은 것도 아니다. 다들 좋은 애들이다. 근데 왜 불편한 걸까. 답은 하나다. 내가 변했기 때문이다. 아니, 내 역할이 변했기 때문이다. 20년 전 나는 '코드 짜는 사람'이었다. 10년 전 나는 '코드 잘 짜는 사람'이었다. 5년 전 나는 '코드도 짜고 리뷰도 하는 사람'이었다. 지금 나는 '관리하는 사람'이다. 주변이 그렇게 본다. 내가 아무리 "나는 개발자야" 해도 소용없다. 파트장 명함을 들고 있는 이상. 9500만원 받는 이상. 사람들은 나를 '관리자'로 본다. '편하게 하세요.' 그 말은 존경이다. 배려다. 근데 동시에 선 긋기다. 역할 구분이다. '당신은 저쪽. 우리는 이쪽.' 어느 쪽을 선택할까 집에 도착했다. 문을 열었다. "왔어?" "응, 왔어." 밥을 먹었다. TV를 봤다. 씻었다. 11시다. 노트북을 켰다. 개인 프로젝트를 열었다. 아무도 모르는 프로젝트. React로 만드는 TODO 앱. 별거 아니다. 근데 이거 짤 때가 제일 행복하다. 아무도 '편하게 하세요' 안 한다. 내가 하고 싶은 걸 한다. 코드를 짰다. 한 시간. 두 시간. 눈이 감긴다. 피곤하다. 예전엔 아니었는데. 노트북을 덮었다. 침대에 누웠다. 생각했다. 나는 앞으로 어떻게 할까. 임원이 될까. 그럼 개발은 영영 못 한다. 이직할까. 45살을 받아줄까. 연봉은 얼마나 깎일까. 프리랜서 할까. 안정성은 포기해야 한다. 답은 없다. 정답은 없다. 다만 확실한 건 하나다. 나는 아직 코드를 짜고 싶다."편하게 하세요." 그 말이 언젠가는 편해지려나. 아직은 모르겠다.

코딩 IDE 켜자마자 '잠깐 통화 가능?' 슬랙

코딩 IDE 켜자마자 '잠깐 통화 가능?' 슬랙

오후 3시, 드디어 회의가 끝났다. 오전 10시부터 12시까지, 점심 먹고 1시부터 3시까지. 총 4시간. 결론은 "다음 주 다시 논의"였다. IntelliJ를 켰다. 로딩 시간 30초. 이 시간이 이렇게 소중한 줄 몰랐다. 어제 짜던 코드가 열렸다. 리팩토링 하려던 거였다. 메서드가 200줄이 넘는다. 쪼개야 한다. 커서를 코드 중간에 올렸다. 손가락이 키보드에 닿았다. 뇌가 작동하기 시작했다. '이 로직은 따로 빼고, 저건 유틸로...' 띠링. 슬랙이다. "박 파트장님, 잠깐 통화 가능하신가요?" 3시 2분이다. 코딩 시작한 지 2분.통화는 15분 "네, 가능합니다." 가능하지 않다. 하지만 관리자는 가능하다고 말해야 한다. 통화 내용은 이랬다. B팀에서 우리 API 호출할 때 500 에러가 난다. 확인 좀 해달라. 급하다. 오늘 배포해야 한다. "로그 봐야겠네요. 잠시만요." IntelliJ를 최소화했다. 키바나를 켰다. 로그를 뒤졌다. 5분 걸렸다. 에러는 없었다. "저희 쪽 로그엔 없는데요." "아, 그럼 저희 쪽 문젭니까?" "그런 것 같습니다." "알겠습니다. 감사합니다." 통화 종료. 3시 17분. 15분이 갔다. 코드는 한 줄도 안 짰다.다시 시작 IntelliJ를 다시 켰다. 코드가 거기 있다. 당연히 거기 있다. 하지만 흐름이 없다. 아까 뭘 하려고 했지? 메서드 분리. 맞다. 어디서부터? 이 for문부터? 아니면 저 if문부터? 키보드에 손을 올렸다. 쳤다. 지웠다. 다시 쳤다. 뭔가 이상하다. 흐름이 안 이어진다. 개발자는 안다. 한 번 끊긴 흐름은 다시 안 온다는 걸. 처음부터 다시 읽어야 한다. 위에서부터. 천천히. 10분이 걸렸다. 코드 200줄 읽는 데. 이제 다시 감이 온다. 손가락이 움직이기 시작했다. 띠링. 또다. "파트장님, DM 확인 부탁드립니다." 3시 31분. 코딩 시작한 지 4분. DM을 열었다. 주니어 개발자다. 코드리뷰 요청이다. 급한 건 아니라고 한다. 하지만 "오늘 안에 머지하고 싶다"고 한다. 오늘 안에는 지금이다. 지금 아니면 오늘은 없다. "확인하겠습니다." IntelliJ를 또 최소화했다. GitHub를 켰다. PR을 열었다. 변경된 파일 15개. 코드 300줄. 집중해서 봤다. 20분 걸렸다. 댓글 5개 달았다. "LGTM" 찍었다. 3시 54분. 내 코드는 한 줄도 안 짰다.4시의 선택 IntelliJ로 돌아왔다. 코드가 여전히 거기 있다. 커서가 깜빡인다. 비웃는 것 같다. 다시 읽어야 한다. 200줄. 또. 손목시계를 봤다. 4시 2분. 5시에 또 회의가 있다. 58분 남았다. 58분에 뭘 할 수 있나. 흐름 잡는 데 10분, 코딩 30분, 테스트 10분, 커밋 5분. 가능하다. 이론상으로는. 키보드에 손을 올렸다. 심호흡을 했다. 시작하려는 순간. 팀원이 책상으로 왔다. 물리적으로. 직접. "파트장님, 잠깐 여쭤봐도 될까요?" "네." 아니다. 하지만 "네"라고 말했다. 관리자니까. "DB 스키마 변경 관련인데요..." 15분 대화했다. 좋은 대화였다. 팀원이 성장하는 게 보였다. 뿌듯했다. 하지만 시계는 4시 21분이었다. 5시 회의 39분 남았다. 코딩을 시작할 수 있나. 할 수 있다. 해야 한다. 코드를 다시 읽었다. 세 번째다. 오늘만. 읽는 속도가 빨라졌다. 외워졌다. 손가락이 움직였다. 메서드를 분리했다. 변수명을 바꿨다. 테스트를 돌렸다. 초록불. 가슴이 뛰었다. 이거다. 이 느낌. 20년 전이나 지금이나 똑같다. 코드가 돌아가는 순간의 쾌감. 더 하고 싶었다. 더 고칠 게 보였다. 손가락이 빨라졌다. 띠링띠링띠링. 슬랙이 울렸다. 알람이 울렸다. 캘린더가 울렸다. "[Remind] 5시 전사 아키텍처 회의" 4시 57분. 저장했다. 커밋은 안 했다. 덜 끝났다. 푸시는 더욱 안 했다. 테스트 하나가 빨간불이었다. 회의방으로 걸어갔다. 노트북을 들고. 혹시 몰라서. 회의는 6시 반에 끝났다. 90분. 6시 반의 현실 자리로 돌아왔다. 동료들이 하나둘 퇴근했다. MZ 후배는 6시 정각에 나갔다. 부럽다. IntelliJ를 켰다. 아까 그 코드가 있다. 빨간 줄이 그어져 있다. 테스트 실패 표시. 고치려고 했다. 손가락을 올렸다. 머리가 안 돌아갔다. 4시간 회의의 후유증. 뇌가 젤리 같다. 코드를 읽었다. 네 번째. 이게 내가 짠 건가 싶었다. 분명 오늘 오후에 짰는데. 3시간 전인데. 낯설다. 아, 그렇다. 흐름이 끊겼으니까. 컨텍스트가 사라졌으니까. 처음부터 다시 읽어야 한다. 200줄. 또. 시계를 봤다. 7시. 배가 고프다. 점심을 12시에 먹었다. 7시간 전. 저장하지 않고 닫았다. 내일 하자. 내일. 내일도 똑같을 거라는 걸 알면서. 집에 가는 길 지하철에서 폰을 꺼냈다. 커뮤니티를 봤다. 누가 물었다. "파트장급은 코딩 얼마나 하시나요?" 댓글들이 달렸다. "저는 거의 못 해요. 회의가 너무 많아서." "코딩은 주말에 개인 프로젝트로..." "관리가 메인이죠 뭐." 나만 그런 게 아니구나. 위로가 됐다. 동시에 씁쓸했다. 30대 때가 생각났다. 그땐 하루 종일 코딩했다. 아침에 시작해서 저녁까지. 점심도 까먹었다. 흐름이 끊기는 게 싫어서. 그게 10년 전이다. 지금은 흐름이 시작되는 게 신기하다. 2분 이상 지속되면 기적이다. 집에 도착했다. 아내가 물었다. "오늘 일 많이 했어?" "응." 거짓말은 아니다. 일은 많이 했다. 회의 4시간, 통화 15분, 코드리뷰 20분, 질문 답변 15분. 5시간. 코딩은 20분. 실제로 완성된 코드는 0줄. 밤 11시 침대에 누웠다. 잠이 안 온다. 아까 그 코드가 생각난다. 빨간 줄. 테스트 실패. 왜 실패했을까. 뭘 놓쳤을까. 로직을 머릿속으로 되짚었다. 아, 저기다. null 체크를 안 했다. 거기만 고치면 된다. 1줄이면 된다. 일어나서 노트북을 켤까. 하다가 관뒀다. 시작하면 끝을 봐야 한다. 1줄이 10줄 되고, 10줄이 100줄 된다. 경험상. 내일 하자. 아침 일찍 출근해서. 9시 회의 전에. 1시간이면 된다. 그렇게 다짐하고 잤다. 다음날 아침 8시에 출근했다. 평소보다 1시간 일찍. 사무실이 비었다. 좋다. IntelliJ를 켰다. 어제 그 코드를 열었다. 빨간 줄을 찾았다. null 체크를 넣었다. 1줄. 테스트를 돌렸다. 초록불. 됐다. 커밋하려는 순간. 띠링. "파트장님, 아침부터 죄송한데요. 어제 배포된 거 롤백해야 할 것 같습니다." 8시 23분. 코딩 시작한 지 23분. 노트북을 덮었다. 커밋은 못 했다. 점심시간에 하자. 5분이면 된다. 커밋 메시지 쓰고 푸시만 하면. 그게 오늘 안에 될까. 모르겠다. 관리자의 숙명 파트장 달고 1년 됐다. 연봉은 올랐다. 책임도 늘었다. 회의도 늘었다. 코딩 시간은 줄었다. 처음엔 적응이 안 됐다. "나는 개발자인데 왜 하루 종일 회의만 하지?" 속으로 불평했다. 지금은 안다. 이게 관리자의 일이라는 걸. 막아주는 게 일이라는 걸. 팀원들이 코딩에 집중하게. 대신 내가 회의에 들어간다. 내가 질문을 받는다. 내가 리뷰를 한다. 팀원들은 하루 5시간 코딩한다. 나는 20분. 그게 맞는 거다. 이론상으로는. 하지만 가끔 생각한다. 정말 맞나? 관리자도 개발자 아닌가. 코드를 볼 줄 알아야 리뷰를 하고, 아키텍처를 이해해야 방향을 제시하고, 직접 짜봐야 난이도를 안다. 근데 언제 짜나. 어떻게 짜나. 팀원이 물어본다. "이 기술 써도 될까요?" 대답한다. "좋지. 그거 좋아." 속으로 생각한다. '그게 뭔지 정확히는 모르겠지만.' 퇴근하고 검색한다. 블로그를 읽는다. 아, 이거구나. 좋네. 다음 날 팀원이 또 물어본다. "이 부분 어떻게 구현하면 될까요?" 머뭇거린다. "음... 한번 시도해봐. 내가 리뷰할게." 리뷰하면서 배운다. 이렇게 하는 거구나. 흐름이라는 것 개발자에겐 흐름이 있다. Flow. 몰입. 코드가 술술 나오는 순간. 손가락이 생각보다 빠른 순간. 시간이 사라지는 순간. 그 순간이 개발자의 행복이다. 20년 전이나 지금이나. 근데 그 순간이 안 온다. 요즘. 흐름은 30분 이상 방해받지 않을 때 온다. 연구 결과도 있다. 딥워크라고 한다. 나는 10분도 안 간다. 평균 7분. 재봤다. 어제. 7분마다 슬랙이 온다. 전화가 온다. 질문이 온다. 회의가 온다. 7분에 뭘 하나. 코드 읽기도 부족하다. 그래서 코딩을 늦은 밤에 한다. 혹은 새벽에. 아무도 없을 때. 하지만 체력이 안 된다. 45살. 밤새면 3일 간다. 예전엔 하루면 회복됐는데. 결국 주말에 한다. 토요일 오전. 커피 마시고. 혼자. 그게 일주일에 유일하게 코딩하는 시간이다. 회사에서는 관리자. 집에서는 개발자. 이게 맞나. 모르겠다. 후배에게 하고 싶은 말 후배들이 묻는다. "파트장 되면 뭐가 좋아요?" 연봉? 연봉은 좋다. 9500만원. 적지 않다. 권한? 권한도 있다. 기술 선택할 수 있다. 방향 정할 수 있다. 근데 말 못 한다. 진짜 하고 싶은 말. "코딩 시간 없어진다." 그럼 후배가 묻는다. "그럼 왜 하세요?" 모르겠다. 해야 하니까? 누군가는 해야 하니까? 아니다. 솔직히 말하면. 개발만 하다 보면 천장이 보인다. 40대 중반. 50대. 개발자로 계속 갈 수 있나. 주변을 본다. 동기들. 선배들. 개발만 한 사람은 시니어 개발자 됐다. 연봉 7000~8000. 거기서 멈췄다. 관리 겸한 사람은 파트장 됐다. 나처럼. 9000~1억. 관리만 하는 사람은 임원 됐다. 1억 5000~2억. 숫자다. 냉정한 숫자. 코딩 시간과 연봉은 반비례한다. 이 회사에서는. 그래서 선택한다. 관리를. 돈을. 대신 잃는다. 코딩 시간을. 흐름을. 교환이다. 공정한 건 모르겠다. 그래도 짜증 난다. 솔직히. IDE 켜자마자 방해받을 때. 흐름 잡자마자 끊길 때. 빨간 줄 고치려는데 회의 들어갈 때. "아, 씨..."까지 나온다. 속으로. 하지만 참는다. 관리자니까. 대신 밤에 혼자 짠다. 주말에 혼자 짠다. 그게 내 유일한 코딩 시간이다. 아무도 방해 안 하는. 행복하다. 그 시간만큼은. 그리고 월요일이 온다. 다시 회의가 온다. 다시 슬랙이 온다. "파트장님, 잠깐 통화 가능하신가요?" "네, 가능합니다." 저장하고. 최소화하고. 전화 받는다. 코드는 거기 남는다. 커서가 깜빡이며. 나를 기다린다. 언젠가 돌아올 거라고 믿으며.코딩하고 싶다. 그냥 하루 종일. 방해 없이. 30대처럼.