Showing Posts From

기술

기술 블로그 구독 리스트, 다 읽지 못한 죄책감

기술 블로그 구독 리스트, 다 읽지 못한 죄책감

아침 7시, 출근길 지하철지하철에서 폰을 켰다. 알림 167개. Feedly 53개, Medium 42개, 유튜브 72개. 어제 자기 전에 다 읽은 것 같은데. 스크롤을 내렸다. 제목들이 지나간다. "Rust로 시작하는 시스템 프로그래밍" "Next.js 14의 새로운 기능들" "LLM 파인튜닝 실전 가이드" 다 중요해 보인다. 다 읽어야 할 것 같다. 근데 출근하면 회의부터다. 일단 '나중에 읽기'에 추가했다. 나중에 읽기 폴더. 482개. 구독 리스트의 무게 작년 연말에 정리했다. 구독 리스트. "진짜 필요한 것만 남기자"고 다짐했다. 남은 구독:기술 블로그 23개 유튜브 채널 17개 뉴스레터 8개 팟캐스트 5개"줄였다"고 생각했는데. 매일 올라오는 글. 평균 15개. 일주일이면 105개. 한 달이면 450개. 일주일에 10개 읽으면 선방이다. 나머지 95개는 쌓인다.한 달 전에 저장한 글이 있다. "2024년 주목할 프론트엔드 트렌드" 아직 안 읽었다. 벌써 5월이다. 트렌드가 바뀌었을지도 모른다. 회사에서 느끼는 격차 오전 10시. 스탠드업 미팅. 김대리가 말한다. "이번에 Vercel AI SDK 써봤는데요." 나는 고개를 끄덕였다. Vercel AI SDK. 들어본 것 같기도 하고. 며칠 전에 저장한 글이 있었다. "Vercel AI SDK 완벽 가이드" 아직 읽지 않았다. "좋던데요? 박 파트장님도 한번 보세요." "응, 봐야지." 저장 목록에 추가했다. 또. 점심시간. 후배들이 얘기한다. "요즘 Bun 쓰시는 분 있어요?" "저 로컬에서 써봤는데 진짜 빠르더라고요." Bun. 들어봤다. 뭐였지. Node.js 대체재? 아니면 빌드 툴? 구글링했다. 아티클이 쏟아진다. "Why Bun is 3x faster than Node.js" 나중에 읽기에 추가. 483개. 주말의 의식 토요일 오전. 커피를 내렸다. "오늘은 밀린 글 좀 읽어야지." 노트북을 켰다. Notion을 열었다. '읽을 거리' 페이지. 스크롤이 끝없다. 카테고리별로 정리해뒀다.프론트엔드 (78개) 백엔드 (95개) 아키텍처 (62개) DevOps (41개) AI/ML (117개) 커리어 (89개)합계 482개. 어제 하나 더 늘었구나.AI/ML 카테고리부터 보자. 제일 최신 기술이니까. 첫 번째 글. "GPT-4 API 활용 가이드" 작성일: 2023년 4월. 1년 전이다. 이미 GPT-4o 나왔다. 이거 읽어도 되나. 삭제했다. 116개. 두 번째 글. "LangChain 시작하기" 작성일: 2023년 7월. 이것도 옛날이다. 근데 기초니까 읽어야 하나. 일단 놔뒀다. 세 번째 글. "RAG 파이프라인 구축" 작성일: 2024년 1월. 이건 최근이다. 읽어야 한다. 클릭했다. 읽기 시작했다. 5분 지났다. 아들이 들어온다. "아빠 점심 뭐 먹어?" 글을 닫았다. 다시 나중에. 불안의 정체 저녁. 가족들은 TV를 본다. 나는 방에서 폰을 본다. 유튜브 알고리즘이 추천한다. "주니어 개발자가 알아야 할 10가지" "시니어가 되는 법" "45세 개발자의 이직 성공기" 마지막 거 클릭했다. 45세. 나랑 같다. 영상 초반. 그 사람 스펙. "최신 기술 스택 꾸준히 공부했고요." 최신 기술. 나는 Java랑 Spring만. 요즘 애들 쓰는 거. 잘 모른다. 댓글을 봤다. "꾸준함이 답이네요." "저도 매일 기술 블로그 읽어요." 매일. 나도 매일 보긴 한다. 근데 제목만 본다. 내용은 안 읽는다. 구독한 뉴스레터가 왔다. "이번 주 프론트엔드 소식" 열어봤다. 링크가 15개. 좋은 정보들이다. 분명히. 북마크했다. 484개. 월요일 아침, 1on1 김대리와 1on1이다. "요즘 공부하시는 거 있으세요?" 갑자기 긴장된다. "응, 뭐... 이것저것." "저는 요즘 TypeScript 깊게 파고 있어요." "이번에 제네릭 완전 이해했거든요." TypeScript. 나도 쓴다. 근데 제네릭. 쓰긴 하는데 정확히는. 며칠 전에 본 글이 있었다. "TypeScript 제네릭 마스터하기" 읽으려고 저장했다. 2주 전. 아직 안 읽었다. "파트장님은 어떤 거 보세요?" "나는... 아키텍처 쪽?" 사실 아무것도 제대로 못 봤다. 회의하고 코드리뷰하고 나면. 저녁이다. 밤 11시, 침대에서 불을 끄고 누웠다. 폰을 켰다. 습관적으로. Feedly를 열었다. 오늘 새 글 18개. 제목들을 읽었다. "Rust의 소유권 시스템 이해하기" "Docker 컨테이너 최적화 팁" "마이크로서비스 모니터링 전략" 다 좋은 글이다. 분명히. 읽고 싶다. 진짜. 별표를 눌렀다. 저장. 485개. 폰을 내려놨다. 천장을 봤다. 내일은 읽을 수 있을까. 모레는? 목요일 점심, 후배의 질문 식당에서 최주임이 물었다. "파트장님, 이거 어떻게 생각하세요?" 폰을 보여준다. 어떤 기술 블로그 글이다. "이 사람이 Clean Architecture를..." 나는 글을 훑어봤다. 5초 만에 핵심을 파악했다. "음, 맞는 얘기긴 한데." "실무에선 케바케지." 20년 경력의 직관이다. 글을 안 읽어도 안다. 대충. 근데 이게 맞나. 요즘 트렌드는 다를 수도 있다. 내가 놓친 게 있을 수도. "제대로 읽어보고 얘기해줄게." 북마크했다. 486개. 금요일 저녁, 정리 시도 퇴근 30분 전. 정리하기로 했다. Notion 페이지를 열었다. 486개 중에서. 진짜 읽을 것만 남기자. 기준을 정했다.6개월 이상 된 글: 삭제 너무 기초적인 글: 삭제 당장 쓸 일 없는 기술: 삭제클릭 클릭 클릭. 삭제 삭제 삭제. 30분 후. 486개에서 312개로 줄었다. 여전히 많다. 하나씩 카테고리를 봤다. "꼭 읽어야 할 것" 태그를 달았다. 97개가 '꼭'이 됐다. 97개. 한 개당 20분이면. 1940분. 32시간. 주말에 하루 3시간씩 읽으면. 11주. 3개월. 3개월 동안 새 글은 안 나오나. 주말, 아내의 한마디 일요일 아침. 리빙에서 커피를 마신다. 아내가 물었다. "또 공부해?" "응, 밀린 거 좀 봐야 돼." "맨날 밀렸다고 하더라." 맞다. 맨날 밀렸다. "읽어야 하는데 시간이 없어서." "그럼 구독 줄이면 되잖아." 그게 안 된다. 다 필요한 정보다. "요즘 기술이 너무 빨리 바뀌어서." "근데 아빠 회사에서 잘하잖아." "파트장까지 됐는데." 회사에서 잘하는 거랑. 최신 기술 아는 거랑. 다르다. "그래도 계속 공부해야지." 아내는 그냥 웃었다. 월요일, 새로운 프로젝트 회의실. 임원이 말한다. "새 프로젝트 시작합니다." 화면에 기술 스택이 나온다. Java, Spring Boot, React. 익숙하다. 다 아는 것들. "박 파트장님이 리드 맡아주세요." "네." 회의가 끝났다. 사무실로 돌아왔다. Notion을 열었다. '읽을 거리' 312개. React 카테고리를 봤다. "React 18의 새로운 기능" "Suspense 완벽 가이드" "Server Components 이해하기" 읽어야 한다. 이번엔 진짜. 근데 프로젝트는 React 17이다. 회사 표준이 아직 안 바뀌었다. 그럼 이거 지금 읽어야 하나. 화요일, 코드 리뷰 후배가 올린 PR을 봤다. 코드가 깔끔하다. 근데 낯선 패턴이 보인다. 주석을 달았다. "이 부분 설명 좀 해줄래?" 30분 후 답변이 왔다. "아, 이거 Compound Pattern이에요." "Kent C. Dodds 블로그에서 봤어요." Kent C. Dodds. 유명한 사람이다. 나도 구독한다. 그 글 본 것 같기도 하다. 제목은 기억나는데 내용은. "아 그거. 나중에 같이 얘기하자." Feedly를 열었다. 검색했다. "Compound Pattern" 있다. 7개월 전 글. '나중에 읽기'에 있었다. 지금 읽었다. 10분 만에. 좋은 패턴이다. 7개월 전에 읽었으면. 내가 먼저 제안했을 텐데. 수요일, 동기 모임 대학 동기들을 만났다. 다들 IT 업계. 성준이가 말한다. "요즘 AI 대박 아니냐?" "우리 회사 LLM 도입한대." 재현이가 받는다. "우리도. 근데 할루시네이션 문제가." 민석이도 거든다. "RAG로 해결 가능하지 않아?" 다들 술술 얘기한다. LLM, 할루시네이션, RAG. 나도 안다. 개념은. 근데 디테일은. 저장해둔 글이 있다. "LLM 할루시네이션 해결법" "RAG 시스템 구축 가이드" 60개쯤. "박시니어는 어때?" "우리도 검토 중이야." 사실 우리 팀은 아직이다. 개인적으로 관심만 있다. "나도 요즘 공부하는데." 거짓말은 아니다. 글은 모으고 있다. 목요일, 체력의 한계 저녁 8시. 사무실에 혼자 남았다. 오늘은 코딩 좀 하려고. 커피를 마셨다. 세 번째. 코드를 짜기 시작했다. 30분 집중했다. 슬랙 알림. 김대리. "내일 회의 자료 확인 부탁드려요." 문서를 열었다. 검토했다. 20분 지났다. 다시 코딩으로 돌아왔다. 뭐 하고 있었지. 컨텍스트 스위칭. 예전엔 괜찮았는데. 요즘은 힘들다. 9시. 졸리다. 집에 가야겠다. 지하철에서 폰을 켰다. 유튜브 알림 12개. "개발자 생산성 높이는 법" 클릭했다. 10분짜리. 3분 보다가 졸았다. 금요일, 결심 오후 3시. 회의 없는 시간. 결심했다. 지금 당장 하나 읽는다. 뭐든. Notion '읽을 거리'를 열었다. 맨 위부터 보자. "Go 언어 시작하기" 작성일 1년 전. 당장 쓸 일 없다. 패스. "Kubernetes Pod 이해하기" 작성일 8개월 전. 우리 인프라팀이 한다. 패스. "효율적인 코드 리뷰 방법" 작성일 3개월 전. 이거다. 지금 필요한 거. 읽기 시작했다. 5분 후. 노크 소리. "파트장님 잠깐만요." 글을 닫았다. 결국 못 읽었다. 토요일, 깨달음 아침. 커피를 마시며 생각했다. 왜 이렇게 됐을까. 10년 전엔 달랐다. 블로그 글 하나 나오면. 그날 바로 읽었다. 회사 끝나고 스터디도 했다. 주말엔 토이 프로젝트도 했다. 지금은. 글은 모으기만 한다. 읽을 시간은 없다. 그런데. 진짜 시간이 없는 걸까. 아니면 우선순위가 밀린 걸까. 솔직히 말하면. 밤에 유튜브 본다. 1시간. 넷플릭스도 본다. 1시간. 폰으로 뉴스도 본다. 30분. 그 시간에 읽으면 되는데. 근데 그 시간은. 머리를 쓰기 싫은 시간이다. 기술 글은. 집중해서 읽어야 한다. 코드도 따라해야 한다. 퇴근하고 그럴 체력이 없다. 일요일, 실험 오늘은 해보기로 했다. 진짜 읽는 거. 타이머를 켰다. 25분. 포모도로 기법. Notion에서 글 하나 골랐다. "TypeScript 제네릭 마스터하기" 읽기 시작했다. 10분 지났다. 내용이 좋다. 예제도 따라했다. 15분 지났다. 이해가 된다. "아, 이렇게 쓰는 거구나." 25분 끝. 한 글을 다 읽었다. 기분이 좋다. 뭔가 배웠다는 느낌. 312개에서 311개로 줄었다는 성취감. 또 하나 읽었다. "React Hooks 실전 팁" 25분. 완독. 310개. 점심 먹고 또 읽었다. "Docker 컨테이너 최적화" 25분. 완독. 309개. 저녁까지 총 5개 읽었다. 304개 남았다. 월요일, 변화 출근길. 지하철. 폰을 켰다. Feedly 알림 23개. 예전 같으면 다 열어봤다. 오늘은 다르게 했다. 제목만 훑었다. "진짜 필요한가?" 자문했다. 23개 중 3개만 저장했다. 나머지는 '읽은 상태'로 표시. 회사 도착. 304개에서 307개. 3개만 늘었다. 예전엔 20개씩 늘었다. 화요일, 적용 팀 회의. 새 프로젝트 기술 스택 논의. 김대리가 제안한다. "이번엔 TypeScript 제네릭 적극 활용하면 어떨까요?" 나는 대답했다. "좋지. 이렇게 쓰면 되겠네." 주말에 읽은 내용을 설명했다. 구체적으로. 김대리가 놀란다. "오 파트장님 완전 마스터하셨네요." 기분이 좋았다. 읽길 잘했다. 수요일, 재정비 저녁. 집에서 Notion을 열었다. 307개 리스트. 카테고리를 다시 봤다. 솔직해지기로 했다. "AI/ML" 카테고리 117개. 당장 우리 프로젝트엔 안 쓴다. 관심은 있지만 우선순위는 낮다. 폴더를 새로 만들었다. "언젠가 읽을 것" 80개를 옮겼다. "프론트엔드" 카테고리 78개. 나는 백엔드 파트장이다. 알아야 하지만 깊게는 아니다. 50개를 옮겼다. "읽을 거리" 177개로 줄었다. "언젠가" 130개. 177개. 이 정도면 할 만하다. 목요일, 루틴 아침 30분 일찍 출근했다. 회사 카페에서 커피 마시며. 글 하나 읽었다. "효율적인 코드 리뷰" 25분. 완독. 바로 적용 가능한 내용. 점심시간. 밥 먹고 20분 남았다. 짧은 글 하나 읽었다. "Git Rebase vs Merge" 오후 6시. 퇴근 전. 10분 남았다. 짧은 아티클 훑었다. "Java 21 새 기능" 하루 3개. 60분. 176개에서 173개. 늘어나는 속도보다. 읽는 속도가 빠르다. 금요일, 효과 코드 리뷰 시간. 최주임 PR을 봤다. 목요일에 읽은 글. "효율적인 코드 리뷰" 내용이 생각났다. 댓글을 달았다. 구체적으로. 예시와 함께. 최주임 답변. "오 완전 이해했어요. 고맙습니다!" 예전 내 리뷰. "이 부분 수정해주세요." 지금 내 리뷰. "이 부분은 이런 이유로 수정하면 좋을 것 같아요. 예를 들면..." 차이가 느껴진다. 읽은 게 쌓인다. 적용이 된다. 주말, 정산 일요일 저녁. 이번 주를 돌아봤다. 읽은 글: 12개 늘어난 글: 8개 순감소: 4개 173개에서 169개. 천천히 줄고 있다. 그런데 깨달았다. 중요한 건 숫자가 아니다. 12개를 읽었다. 12개에서 뭔가 배웠다. 그게 실력이 됐다. 예전엔. 500개를 모았지만. 0개를 읽었다. 지금은. 169개가 있고. 조금씩 읽는다. 2주 후 Notion '읽을 거리' 142개. 한 달 전 312개에서 거의 반. 매일 23개씩 읽는다. 새로 추가되는 건 하루 12개. 균형이 맞춰지고 있다. 그런데 더 중요한 변화. 회의에서 말이 늘었다. "이런 방법도 있어요." 구체적 근거와 함께. 후배들이 질문한다. 예전엔 얼버무렸다. 지금은 설명한다. 코드가 달라졌다. 읽은 글의 패턴들이. 자연스럽게 손에서 나온다. 한 달 후, 회고 금요일 저녁. 한 달을 정리했다. 읽은 글: 52개 시간: 약 25시간 하루 평균: 50분 50분이면. 유튜브 2편. 넷플릭스 1편. 그걸 글 읽기로 바꿨다. 달라진 것들: 회의 발언권이 생겼다. "요즘은 이렇게 한대요." 근거 있는 의견. 코드 리뷰 품질 올랐다. "이 패턴 괜찮은데요." 구체적 피드백. 후배들 신뢰 느껴진다. "파트장님 의견 듣고 싶어요." 예전엔 형식적 보고. 무엇보다. 불안감이 줄었다. '뒤처지는 거 아냐?' 매일 읽으니까 괜찮다. '다 알아야 하는데.' 다 알 순 없다. 필요한 것만.구독은 줄이지 않았다. 대신 읽는 방법을 바꿨다. 모으기보다 소화하기. 숫자보다 이해하기. 그게 답이었다.

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

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

오늘도 회의 오전 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년 경력도 마찬가지다. 후배들이 아는 게 있다. 새 기술, 새 트렌드. 그들이 현장에 더 가깝다. 내 역할은 뭘까. 모든 걸 결정하는 게 아니다. 방향을 제시하고, 리스크를 관리하고, 실패를 받아주는 것. 확신 없어도 괜찮다. 대신 믿어줘야 한다. 후배를 믿고. 데이터를 믿고. 결과를 보고 수정하면 된다. 완벽한 결정은 없다. 빠른 실행과 빠른 수정. 이게 답인 것 같다. 요즘 회의에서 바뀐 것. "둘 다 장단점이 있어. 근데 일단 해보자." 한 줄 추가했다. "일단 해보자." 이게 내가 할 수 있는 최선이다. 확신은 없어도 실행은 할 수 있다.경력이 길수록 겸손해진다. 그게 약점일 수도, 강점일 수도 있다. 중요한 건 멈추지 않는 것이다.

기술 선택을 물으면 '둘 다 장단점이 있어' 로 시작하는 이유

기술 선택을 물으면 '둘 다 장단점이 있어' 로 시작하는 이유

또 그 말이 나왔다 "파트장님, React랑 Vue 중에 뭐가 나을까요?" 회의실에 앉은 후배 넷이 날 본다. "음... 둘 다 장단점이 있어서..." 내 입에서 또 나왔다. 이 말. 후배들 표정이 미묘하게 변한다. 아, 또 저 말 하시네. 그 표정이다. 나도 안다. 이게 답이 아니라는 거.5년 전엔 달랐다. "React 가자. 생태계가 넓어." 이렇게 말했다. 지금은? 확신이 없다. 확신이 사라진 이유 20년 개발했다. 기술 스택을 수십 개 봤다. 그리고 깨달았다. 내가 "이게 최고야" 했던 것들이 3년 뒤 사라지는 걸. 2010년, Backbone.js가 최고였다. 지금 쓰는 사람? 거의 없다. 2015년, Angular가 대세였다. 지금은? React한테 밀렸다. 2020년, React가 답이었다. 지금? Svelte, Solid, Qwik 나온다. 그러니까 말이다. "이게 답이야" 하고 싶어도, 3년 뒤 내가 틀렸을까봐 무섭다.어제 회의에서도 그랬다. "MySQL이 나을까요, PostgreSQL이 나을까요?" "둘 다 장단점이..." 막내가 물었다. "그럼 뭘 선택해야 하나요?" 할 말이 없었다. 진짜로. 후배가 원하는 건 확신이다 점심 먹으면서 옆 팀 김 과장이 말했다. "요즘 애들, 답 바로 안 주면 답답해해." 맞다. 후배들은 명쾌한 답을 원한다. "A 하세요. 왜냐하면..." 이렇게 말해주길 바란다. 근데 나는? "음... 상황에 따라... 둘 다..." 후배 입장에선 답답할 것이다. 신입 때 나도 그랬다. 선배한테 물으면 명확한 답을 원했다. "자바 해. Spring이 대세야." 그 한마디에 3년을 공부했다. 지금 내 후배들도 그런 한마디를 원한다. 근데 난 못 준다. 확신이 없으니까.작년에 신입이 물었다. "TypeScript 배워야 하나요?" "음... JavaScript 먼저 잘하고..." 신입이 답답한 표정으로 "네..." 했다. 그리고 혼자 TypeScript 공부했다. 3개월 뒤 나보다 잘했다. 내가 확신 있게 "배워. 필수야" 했으면 더 빨랐을 텐데. 사실은 모르는 거다 솔직히 말하자. "둘 다 장단점이 있어"는 현명한 답이 아니다. '나도 잘 모르겠어'의 포장이다. 요즘 기술은 진짜 모른다. Next.js 13 App Router? 써본 적 없다. Rust? 들어만 봤다. WebAssembly? 개념만 안다. 그러니까 후배가 "이거 어때요?" 물으면, 정확히 판단할 근거가 없다. 그래서 나오는 말. "둘 다 장단점이..." 안전한 답이다. 틀릴 일이 없다. 지난주 코드 리뷰 때였다. 후배가 Zustand로 상태관리 했다. "Redux 말고 Zustand 썼어요. 더 간단해서요." 나는 Zustand를 써본 적이 없다. "음... 그것도 좋지. Redux도 나쁘진 않은데..." 후배가 물었다. "그럼 뭐가 나아요?" "...상황에 따라 다르지." 후배 표정이 '아 또 저러시네' 였다. 집에 와서 Zustand 문서 봤다. 30분 읽었다. ...확실히 간단하긴 하다. 근데 production에서 괜찮을까? 모르겠다. 결국 또 "둘 다 장단점이 있다"로 귀결된다. 나이가 만든 신중함인가, 비겁함인가 동기 녀석이 말했다. 걔는 스타트업 CTO다. "우린 그냥 빠르게 결정해. 틀려도 돼." 부럽다. 그 확신. 나는 대기업 파트장이다. 틀리면 안 된다. 프로젝트 기술 스택 잘못 선택하면? 팀 전체가 고생한다. 그래서 더 신중해진다. 아니, 비겁해진다. "이것도 저것도 괜찮아요" 하면 안전하다. 나중에 문제 생겨도 "내가 둘 다 장단점 있다고 했잖아" 할 수 있다. 이게 경험에서 나온 지혜인가, 책임 회피인가. 밤에 혼자 생각한다. 답이 없다. 오늘도 후배가 물었다. "MongoDB랑 DynamoDB 중에..." "둘 다 장단점이..." 말하다가 멈췄다. 후배가 날 본다. "...MongoDB 가자. 우리 상황엔 맞아." 후배 눈이 반짝였다. "네!" 확신은 없었다. 근데 말했다. 혹시 틀릴까? 그럴 수도 있다. 근데 명확한 방향이 없는 것보다는 낫다. 선배로서의 무게 파트장이 됐을 때. '이제 기술 리더구나' 생각했다. 실제로는? 매일 불안하다. 후배들은 내 말 한마디로 3개월을 공부한다. 그 무게가 무겁다. 틀린 방향 제시하면? 그 시간이 아깝다. 그래서 "둘 다 장단점"이 나온다. 안전한 답. 무책임한 답. 3년 전 신입이 지금 시니어 됐다. 걔한테 물어봤다. "내가 도움 됐어?" "파트장님 말씀이 항상 중립적이셔서... 스스로 판단하게 됐어요." 좋게 들리지만, 사실 이거다. '명확한 답을 못 줘서, 네가 알아서 했구나.' 미안하다. 변명을 해보자면 기술은 정말 빠르다. 내가 20년 개발했지만, 요즘 프론트엔드는 다른 세상이다. 6개월마다 새 프레임워크 나온다. 다 써볼 수 없다. 그러니 "이게 최고"라고 못 한다. 경험해보지 못한 걸 어떻게 확신하나. 근데 후배들은 그걸 모른다. '파트장님은 20년 차니까 다 아실 거야' 생각한다. 아니다. 나도 모른다. 어제 막내가 SolidJS 써보고 싶다고 했다. "음... React도 있는데..." "React는 너무 무겁지 않나요?" 맞는 말이다. 근데 SolidJS는 생태계가 작다. 뭐라고 해야 하나. "둘 다 장단점이..." 또 나왔다. 막내가 "네..." 하고 돌아갔다. 실망한 표정이었다. 어쩌면 정답일 수도 가끔 생각한다. "둘 다 장단점 있다"가 사실 진실 아닐까. 은탄환은 없다. Silver bullet은 없다. 모든 기술은 trade-off다. React는 생태계가 넓지만 무겁다. Vue는 배우기 쉽지만 기업에서 덜 쓴다. Svelte는 빠르지만 생태계가 작다. 다 맞는 말이다. 그럼 "둘 다 장단점이 있다"는 정답 아닌가? 근데 후배들은 이런 답을 원하지 않는다. "그래서 뭘 선택해야 하나요?" 이게 진짜 질문이다. 며칠 전 1on1에서 주니어가 말했다. "파트장님, 결정을 잘 안 내리시는 것 같아요." 찔렸다. "뭐든 양쪽 다 얘기하시면... 저희가 헷갈려요." 맞다. 인정한다. "미안. 앞으론 명확하게 말할게." 근데 할 수 있을까? 모르겠다. 오늘의 선택 점심 후 회의. 신입이 또 물었다. "GraphQL이랑 REST 중에..." 습관적으로 입이 열렸다. "둘 다..." 멈췄다. 팀원들이 날 본다. "...GraphQL 가자. 우리 프로젝트 특성상 맞아." "이유가 뭔가요?" "클라이언트가 여러 개고, 데이터 요구사항이 제각각이야. GraphQL이 유연해." 신입이 고개를 끄덕인다. 확신은 50%다. 근데 100%처럼 말했다. 이게 맞나? 모르겠다. 틀릴 수도 있다. 그럼 그때 가서 바꾸면 된다. 배운 것 "둘 다 장단점이 있다"는 진실이다. 근데 리더는 진실만 말하면 안 된다. 방향을 제시해야 한다. 틀릴 수 있다. 그래도 제시해야 한다. 후배들은 완벽한 답이 아니라, 확신 있는 방향을 원한다. "이렇게 가자. 이유는 이거야." 이게 리더의 말이다. 나는 그걸 못 했다. 2년 동안. 이제는 해야 한다.회의 끝나고 신입이 말했다. "오늘 결정 시원시원하셨어요." 기분이 좋으면서도 무섭다. 내가 틀리면 어쩌지. 근데 어쩔 수 없다. 파트장이니까.

주말 기술 블로그, '나 뒤처지는 거 아니야?' 라는 불안

주말 기술 블로그, '나 뒤처지는 거 아니야?' 라는 불안

주말 기술 블로그, '나 뒤처지는 거 아니야?' 라는 불안 토요일 아침 10시 아내가 나갔다. 아이들도 학원. 집에 혼자다. 커피 내렸다. 노트북 켰다. 습관처럼 북마크를 연다. "기술 블로그" 폴더. 안 읽은 글이 47개다. 지난주에도 47개였는데. 요새 핫하다는 Rust 글. Bun 성능 벤치마크. React 19 무슨 기능. 전부 읽어야 할 것 같다. 근데 읽으면 뭐가 달라지나. 20년 전엔 이렇지 않았다. 자바 새 버전 나와도 몇 달 뒤에 봐도 됐다. 지금은? 어제 나온 기술을 오늘 모르면 뒤처진 것 같다. 스크롤을 내린다. "2024년 개발자가 알아야 할 10가지." 클릭했다가 닫았다. 작년 글도 못 봤는데.읽기 시작하면 첫 문단은 괜찮다. "Rust는 메모리 안전성을..." 알겠다. 이건 안다. 두 번째 문단. 코드가 나온다. async fn, await, Arc<Mutex<T>>. 뭔지는 알겠는데 손으로 쳐보진 않았다. 세 번째 문단. 실전 예제. 200줄짜리 코드. "이렇게 하면 제로 카피가..." 머리가 아프다. 아들이 "아빠 이거 어떻게 해?" 하면 10분 안에 답 준다. 근데 Rust 배우려면 몇 시간이 필요한가. 아니, 몇 달. 탭을 하나 더 연다. "Next.js 14 서버 컴포넌트." 이것도 읽어야 한다. 우리 회사는 Next.js 12 쓴다. 14는 언제 쓰나. 15분 지났다. 아직 한 글도 제대로 안 읽었다. 그냥 훑었다. 훑는 것도 읽는 거라고 우기면 되나. 예전엔 이렇지 않았는데 2010년쯤. Spring 3.0 나왔을 때. 레퍼런스 문서 처음부터 끝까지 읽었다. 토요일 오후 통째로 썼다. 코드도 따라 쳤다. 그때는 재밌었다. 새로운 걸 배우는 게. "이걸 월요일에 써먹어야지" 했다. 실제로 썼다. 지금은? Next.js 배워도 쓸 데가 없다. 우리 프로젝트는 JSP다. 레거시 유지보수가 80%다. Rust 배워도 마찬가지. 회사에서 자바 쓴다. 개인 프로젝트? 할 시간이 없다. 그럼 왜 읽나. 불안해서다. "요즘 개발자는 이거 다 안다"는 말이 무섭다. 면접관으로 들어간 적 있다. 27살 지원자가 말했다. "Rust로 CLI 툴 만들어봤습니다." 나는 Rust로 Hello World도 안 해봤다. 면접 끝나고 검색했다. "Rust 기초." 그 지원자 붙였다. 나보다 잘하니까. 근데 기분은 이상했다. "내가 뒤처졌구나."후배들은 당연하게 월요일 출근. 막내가 물었다. "파트장님, Bun 써보셨어요?" "아니. 그게 뭔데." "Node.js 대체하는 런타임이요. 엄청 빠르대요." "음. 우리 프로젝트엔 필요 없을 것 같은데." "그냥 궁금해서요." 그냥 궁금해서. 이 말이 부럽다. 나도 예전엔 "그냥 궁금해서" 새 기술 공부했다. 지금은 "이거 실무에 쓸 수 있나"부터 생각한다. 쓸 수 없으면 안 본다. 근데 그러면 영영 모르는 기술이 된다. 후배는 주말에 Bun으로 토이 프로젝트 만들었단다. "3시간 걸렸어요." 나는 주말에 뭐 했나. 밀린 드라마 봤다. 틀린 건 아니다. 쉬는 것도 중요하다. 근데 마음 한구석이 불편하다. "나만 안 쉬는 건가" 싶다가도 "나만 공부 안 하는 건가" 싶다. 읽은 척하기 팀 회의. 누가 말했다. "요즘 React Server Component가 대세래요." "맞아. 나도 봤어." 거짓말이다. 제목만 봤다. "어떻게 생각하세요?" "음. 장단점이 있지. 서버 부하는 늘어날 수 있고." 대충 얼버무렸다. 다행히 더 안 물었다. 회의 끝나고 검색했다. "React Server Component란." 10분 읽었다. 대충 알겠다. 아니, 대충 아는 척할 수 있을 정도로. 이게 요즘 내 공부법이다. 모르는 기술 나오면 10분 검색. 키워드만 익힌다. "SSR", "hydration", "streaming". 이 단어들 넣어서 말하면 아는 것처럼 들린다. 진짜 아는 건 아니다. 코드 못 짠다. 근데 회의에서 막히진 않는다. 이게 맞나. 모르겠다. 근데 다른 방법도 없다. 전부 깊게 공부할 시간은 없다.진짜 배우려면 Rust 제대로 배우려면 시간이 얼마나 드나. 책을 봤다. "The Rust Programming Language." 600페이지. 하루 10페이지 읽으면 2개월. 근데 읽기만 하면 안 된다. 코드 쳐야 한다. 에러 보고 고쳐야 한다. 그럼 4개월. 4개월 동안 매일 1시간. 가능한가. 평일엔 야근. 주말엔 가족. 1시간 내기도 어렵다. 그럼 짬짬이? 출퇴근 지하철에서? 가능하다. 근데 피곤하다. 지하철 타면 졸린다. 핸드폰으로 유튜브 보다가 내린다. 점심시간? 밥 먹고 나면 30분. 커피 마시면 10분. 10분으로 뭘 배우나. 퇴근 후? 9시에 집 도착. 씻고 밥 먹으면 10시. 가족이랑 얘기하면 11시. 그때부터 공부? 30분 하면 졸린다. 계산해보면 답 없다. 시간이 없다. 근데 "시간 없어"라고 하면 핑계처럼 들린다. 후배 코드 리뷰하면서 PR 올라왔다. 후배가 짠 코드. 흐름은 괜찮다. 근데 모르는 게 있다. suspend fun fetchData() = coroutineScope { val deferred = async { repository.getData() } deferred.await() }코틀린이다. 우리 팀이 작년부터 쓰기 시작했다. 나는 아직 자바로 짠다. suspend, coroutineScope, async. 들어본 건데 정확히 모른다. 대충 비동기라는 건 알겠다. 댓글 달았다. "Good." 뭐라고 더 쓸 말이 없다. 예전엔 코드리뷰가 신났다. "여기 이렇게 고치면 더 좋을 것 같아." 구체적으로 알려줬다. 지금은? "Good", "LGTM", "Approve". 짧다. 할 말이 없어서. 후배가 물었다. "이 부분 어떻게 생각하세요?" "음. 나도 코틀린 공부 중이라 확실하진 않은데." 솔직하게 말했다. 후배는 "네"라고만 했다. 표정이 이상했다. 실망한 것 같기도. 파트장인데 코틀린 모른다. 이게 말이 되나. '나중에' 리스트 북마크 폴더를 열었다. "나중에 볼 것" 폴더. 글이 312개다. 제일 오래된 건 2년 전 글. "Docker Kubernetes 완벽 가이드". 안 봤다. 작년 글도 있다. "함수형 프로그래밍 입문". 안 봤다. 이번 달 글도 있다. "AI 시대 개발자의 역할". 안 본다. 전부 언젠가 보려고 저장했다. 언젠가는 안 온다. 알고 있다. 근데 지우진 못한다. 지우면 진짜 안 볼 것 같아서. 희망 고문이다. "나중에 볼 거야"라는 희망. 실제론 안 본다. 근데 버리면 '포기'한 것 같다. 후배한테 물었다. "너는 기술 블로그 어떻게 관리해?" "저요? 안 봐요. 필요하면 그때 찾아봐요." 충격이었다. "안 봐요"를 당연하게 말한다. 나는 '봐야 한다'고 생각했는데. "뒤처지는 거 걱정 안 돼?" "뒤처지면 어때요. 필요할 때 배우면 되죠." 맞는 말이다. 근데 나는 못 한다. 불안하다. 유튜브 알고리즘 유튜브 켰다. 추천에 뜬다. "초보 개발자가 반드시 알아야 할 기술 스택." "시니어 개발자도 모르는 최신 트렌드." 클릭했다. 15분짜리 영상. 빠르게 넘긴다. 2배속으로. 7분 만에 끝. 뭐 배웠나. 기억 안 난다. "요즘은 이게 대세"라는 말만 남았다. 구체적인 건 없다. 또 클릭했다. "개발자 공부법 - 하루 30분으로 성장하기." 봤다. 내용은 뻔하다. "매일 조금씩", "꾸준히", "실습하기". 알고 있다. 다 안다. 근데 안 된다. 되면 벌써 했다. 영상 보는 게 공부한 기분 들게 한다. 실제론 아무것도 안 했는데. 15분 봤으니 "오늘 공부했다" 싶다. 착각이다. 알고 있다. 근데 또 본다. 내일도 볼 거다. 컨퍼런스 가면 회사에서 보냈다. "개발자 컨퍼런스 갈 사람?" 손 들었다. 금요일이라 좋다. 코엑스 갔다. 사람 많다. 다들 젊다. 20대, 30대. 나 같은 사람은 별로 없다. 첫 세션. "AI 기반 코드 생성의 미래." 들어갔다. 앞자리 앉았다. 발표 시작. GPT-4로 코드 짠다. Copilot 쓴다. "이제 개발자는 코딩 말고 설계에 집중해야 합니다." 맞는 말 같다. 근데 불안하다. '내 자리가 없어지는 거 아냐?' 옆 사람이 고개 끄덕인다. 메모한다. 열심히 듣는다. 나도 메모했다. "AI", "설계 중심", "역할 변화". 나중에 볼 일 없다. 두 번째 세션. "클라우드 네이티브 아키텍처." 어렵다. 모르는 용어 투성이. "서비스 메시", "사이드카 패턴". 30분 들었는데 이해 못 했다. 졸렸다. 커피 마시러 나왔다. 복도에 사람들 많다. 다들 얘기한다. "방금 발표 좋았어." "나도 써봐야겠어." 나는 뭐 써봐야 하나. 모르겠다. 커피만 마셨다. 월요일 출근 팀원이 물었다. "컨퍼런스 어땠어요?" "좋았어. 요즘 트렌드 알았어." "뭐가 핫해요?" "음. AI랑 클라우드 네이티브?" "구체적으로요?" 막혔다. 구체적으론 모른다. 그냥 들었다. "나중에 자료 공유해줄게." 안 했다. 자료 찾기 귀찮아서. 팀원도 안 찾았다. 다들 바빠서. 결국 컨퍼런스도 "다녀왔다"는 것만 남았다. 배운 건 없다. 돈은 회사 돈. 시간은 근무시간. 손해는 없다. 근데 얻은 것도 없다. 임원님 말씀 임원님이 말했다. "우리 회사도 AI 도입해야 해. 개발 생산성 높여야지." "네. 좋습니다." "박 파트장이 한번 검토해봐. 다음 주까지." "네." 검토? 뭘 검토하나. AI 툴은 많다. Copilot, Cursor, Tabnine. 다 써봤나? 안 봤다. 주말에 찾아봤다. "AI 코딩 툴 비교." 블로그 10개 읽었다. 다 비슷하다. "생산성 향상", "코드 품질 개선". 월요일에 보고했다. "Copilot 괜찮아 보입니다." "왜?" "많이 쓰고, 안정적이고, VS Code 연동 잘 되고." "얼마야?" "월 10달러." "팀 전체면 얼마?" "8명이니까... 960달러. 연간 만 불 좀 넘네요." "비싸네. 효과는 확실해?" 모른다. 써본 적 없다. 블로그만 봤다. "네. 보통 30% 생산성 향상된다고 합니다." "30%면 괜찮네. 진행해봐." 결정됐다. 나도 처음 써본다. Copilot 써보니 설치했다. VS Code에. 로그인하고 활성화. 코드 짰다. 주석 쓰니까 코드 자동완성. 신기하다. 맞는 코드다. 한 시간 썼다. 편하다. 타이핑 덜 한다. 근데 이상하다. 내가 코드 짠 건가, AI가 짠 건가. 경계가 모호하다. 예전엔 한 줄 한 줄 생각하면서 짰다. 지금은? 제안 보고 엔터. 또 제안 보고 엔터. 빠르긴 하다. 근데 덜 생각하게 된다. 후배한테 물었다. "너 이거 써봤어?" "네. 작년부터요." "어때?" "편해요. 근데 가끔 이상한 코드 줘요." "이상한 거 어떻게 알아?" "그냥 이상하잖아요." 그냥. 이 말이 무섭다. "그냥 안다"는 건 기본기가 있다는 거다. 나도 안다. 20년 짰으니까. 근데 새로운 언어는? 코틀린에서 이상한 코드 알아챌 수 있나. 기본기 회식 자리. 팀장님이 말했다. "요즘 신입들은 기본기가 약해." "그렇죠." "옛날엔 자료구조, 알고리즘 다 알았는데." "맞습니다." 근데 나도 까먹었다. 레드블랙트리? 10년 전 면접 때 공부했다. 지금은 설명 못 한다. "AI 시대엔 기본기가 더 중요해. AI는 도구일 뿐이야." 맞는 말이다. 근데 나도 AI 쓴다. 나도 도구에 의존한다. 차이가 뭔가. 나는 경험이 있다? 20년 경력? 그게 앞으로도 의미 있나. GPT-4가 내 20년 경험보다 더 많은 코드 본 거 아닌가. 더 다양한 문제 풀어본 거 아닌가. 생각하고 싶지 않다. 근데 자꾸 생각난다. 토요일 저녁 결국 한 줄도 안 배웠다. Rust도 안 봤다. Next.js도 안 봤다. 유튜브만 봤다. "개발자 트렌드" 영상 5개. 본 것 같은데 기억 안 난다. 북마크는 50개 됐다. 읽을 일 없다. 아내가 물었다. "오늘 뭐 했어?" "공부했어." "뭐?" "기술 공부." 거짓말이다. 유튜브 봤다. 근데 "유튜브 봤어"라고 하기 부끄럽다. 아내는 "음"하고 넘어갔다. 관심 없다. 나도 관심 없으면 편할까. 불안의 정체 왜 불안할까. 생각해봤다. 뒤처지는 게 무섭다? 뭐에서? 나는 파트장이다. 이미 관리직이다. 최신 기술 몰라도 일은 된다. 이직? 할 생각 없다. 여기 9년 다녔다. 연봉도 괜찮다. 그럼 뭐가 문제냐. 자존심이다. "개발자"라는 정체성. 20년 했다. 그게 나를 정의한다. 근데 최신 기술 모르면 '진짜 개발자'가 아닌 것 같다. 누가 그래? 아무도 안 그랬다. 나 혼자 생각한다. 후배들은 나 보고 뭐라 안 한다. "파트장님 옛날 사람이다" 이런 소리 안 한다. 내가 오버하는 거다. 근데 멈출 수가 없다. 습관이다. 20년 된 습관. 가끔은 가끔은 생각한다. '몰라도 되는 거 아냐?' Rust 몰라도 자바 잘하면 되잖아. Next.js 몰라도 Spring 잘하면 되잖아. 전부 다 알 순 없다. 인정해야 한다. 근데 인정하면 '포기'한 것 같다. '포기'와 '선택'은 다르다. 알고 있다. 근데 느낌은 비슷하다. "나는 Rust 안 배운다." 이렇게 선언하면 편할까. 시도 안 해봤다. 무섭다. 후배가 "Rust 어때요?"라고 물으면 "안 해봤어"라고 답하는 게 무섭다. "관심 없어"도 이상하다. "시간 없어"는 핑계 같다. 그래서 "나중에 해볼게"라고 한다. 나중은 안 온다. 임원 승진하면 내년에 임원 대상자다. 승진하면 연봉 오른다. 근데 개발은 못 한다. 예산 짜고, 보고서 쓰고, 임원 회의 들어간다. 코딩은? 일주일에 한 번? 아니면 아예 안 할 수도. 그럼 기술 공부는 더 안 해도 되나. 필요 없으니까. 근데 그게 더 무섭다. '개발자'에서 '관리자'로 완전히 넘어가는 거. 돌아올 수 없다. 승진 거부할까. 생각해봤다. 바보 같은 소리다. 아내가 뭐라 할까. 부모님은? "승진 안 할래요" 이러면 "왜?"라고 물을 거다. "개발하고 싶어서요" 이러면 이해할까. 안 할 거다. 승진한다. 그리고 개발은 덜 한다. 기술 공부는 더 안 한다. 이게 정답인 것 같다. 근데 마음은 불편하다. 20년 후배에게 입사 동기가 창업했다. 스타트업. 성공했다. 작년에 엑싯했다. 만나서 물었다. "기술 공부 어떻게 해?" "안 해. 직원들이 알아서 하지." "불안 안 해?" "왜 불안해? 내가 다 알 필요 없잖아." 충격이었다. "다 알 필요 없다"를 당연하게 말한다. "나는 안 그래. 모르면 불안해." "그럼 계속 공부해야지. 평생." "그게 가능해?" "모르지. 근데 너가 선택한 거잖아." 맞다. 내가 선택했다. '개발자'로 남기로. 그럼 평생 배워야 한다. 가능한가. 모르겠다. 근데 다른 길도 모르겠다. 그래서 오늘도 북마크 열었다. 안 읽은 글 53개. 하나 클릭했다. "Go언어 시작하기." 읽었다. 10분. 뭐 배웠나. 모르겠다. 그래도 읽었다. 0보단 낫다. 이렇게 위로한다. 내일도 그럴 거다. 모레도. 계속. 이게 맞는지 모르겠다. 근데 멈출 수도 없다. 토요일 오후 3시. 아내가 "나가자"고 한다. "곧" 이라고 답했다. 노트북 닫았다. 일어났다. 내일 또 열 거다. 불안은 안 없어진다. 알고 있다. 익숙해지는 것밖에. 20년 개발자의 주말. 이렇다.배워도 끝이 없고, 안 배워도 불안하다. 그래서 계속 화면만 본다.

기술 면접관이 된 후 느낀 불안감

기술 면접관이 된 후 느낀 불안감

기술 면접관이 된 후 느낀 불안감 면접관석에 앉다 작년부터 면접관으로 들어간다. 파트장이 되면서 당연한 수순이다. 첫 면접 전날 밤, 예상 질문 리스트를 정리했다. Java 기초, Spring 동작 원리, DB 최적화. 내가 20년간 써먹은 것들이다. "괜찮아, 이 정도는 눈 감고도." 그렇게 생각했다.첫 번째 당황 면접장에 들어온 지원자는 27살. 이력서에 적힌 기술 스택을 보는 순간 식은땀이 났다. Rust, Go, Kubernetes, GraphQL, Next.js. "아... 이거 하나도 안 써봤는데." 일단 내가 아는 걸로 시작했다. "Spring으로 RESTful API 설계해보셨어요?" "네, 근데 요즘은 GraphQL을 더 선호해서요." GraphQL. 들어는 봤다. REST의 단점을 보완한다는 건 안다. 근데 실무에서 어떻게 쓰는지는 모른다. "아, GraphQL. 좋죠. 어떤 점이 좋던가요?" 지원자가 10분간 설명했다. Over-fetching, Under-fetching, Schema, Resolver. 나는 고개만 끄덕였다. 질문은 못 했다. 무슨 질문을 해야 할지 몰랐다.역전된 시간 면접이 끝났다. 옆에 앉은 30대 후배가 물었다. "형, GraphQL 괜찮은 것 같지 않아요?" "응, 근데 우리 프로젝트에 당장은..." 변명이었다. 사실은 잘 모르니까 도입이 무섭다. 우리 팀에 아는 사람도 없다. 레퍼런스 찾아보려면 시간도 들고. 그날 저녁, 유튜브로 GraphQL 강의를 봤다. 40분짜리 영상. 10분 보다가 껐다. 피곤했다. "내일 보자." 그 내일이 아직도 안 왔다. 두 번째 면접, 더 큰 문제 한 달 후 또 면접. 이번엔 5년차 개발자. 이력서에 "대규모 트래픽 처리 경험" 이라고 적혀 있었다. "일 평균 트래픽이 어느 정도였나요?" "DAU 300만, 피크 시간대 초당 5만 요청이요." 오... 우리 서비스는 많아야 1만이다. 좀 쫄렸다. "어떻게 처리하셨어요?" "Redis 클러스터 구성하고, Kafka로 비동기 처리했습니다." Redis는 안다. 캐시다. 근데 클러스터는 이론으로만 알지 직접 구성은 안 해봤다. Kafka는... 이름만 들어봤다. "Kafka 도입 과정에서 어려움은?" 질문은 했는데 대답을 이해 못 했다. Partition, Consumer Group, Offset. 모르는 단어가 3개나 나왔다. "아... 네네. 잘 처리하셨네요." 면접 끝나고 평가서에 뭐라고 쓸까 고민했다. "기술적으로 우수함" 이라고 썼다. 근데 속으로는 "나보다 잘하는 것 같음" 이었다.폭과 깊이 그날 밤 생각했다. 나는 Java를 깊이 판다고 생각했다. JVM 동작 원리, GC 튜닝, 동시성 제어. 이 정도면 시니어 맞지 않나. 근데 요즘 개발은 폭이 필요하다. 프론트도 알아야 하고. 인프라도 알아야 하고. 새로운 언어도 따라가야 하고. 나는 깊이만 팠다. 20년간 Java만. 폭은 좁았다. 후배들은 다르다. 5년 안에 Python, Go, TypeScript 다 써본다. Docker, Kubernetes도 당연히 안다. 클라우드도 익숙하다. "이게 맞나?" 깊이 없이 넓기만 한 거 아닌가 싶기도 하다. 근데 면접 보면서 느낀 건. 그들의 깊이도 만만치 않더라. 면접관 자격 요즘 면접 들어갈 때마다 불안하다. "오늘은 무슨 기술이 나올까." "모르는 거 나오면 어떻게 대처하지." 면접관이 지원자한테 배우는 꼴이다. 이게 맞나. 옆 팀 박 차장은 더 심하다. 그분은 나보다 2년 선배다. 얼마 전에 면접 끝나고 하소연했다. "야, 요즘 애들 무슨 말 하는지 하나도 모르겠어." "저도요." "우리 늙은 건가." "아직 45인데요." "개발자로는 늙은 거지." 씁쓸했다. 검색하는 면접관 요즘은 이력서 받으면 일단 검색한다. 모르는 기술 스택 전부. 간단하게라도 개념은 알고 들어가야 한다. 지난주 면접 전날. Rust 공부했다. 2시간 투자해서 기초 문법 봤다. "메모리 안전성, 소유권 개념." 이 정도만 알고 들어갔다. 면접 중에 "Rust 써보신 이유는?" 물었다. "C++의 메모리 안전성 문제를 해결하면서 성능도 유지할 수 있어서요." "맞아요, 소유권 시스템이 핵심이죠?" "네, Borrow Checker 덕분에 컴파일 타임에 잡히니까요." Borrow Checker. 전날 못 본 내용이다. 또 모른다. "좋네요, 실무에서 어떻게 활용하셨어요?" 대충 넘어갔다. 면접 끝나고 또 검색했다. Borrow Checker. 공부할 게 끝이 없다. 깊이의 착각 생각해보면 나도 착각했다. Java 20년 했다고 다 아는 건 아니다. Virtual Thread 나왔을 때 개념도 몰랐다. Spring WebFlux도 제대로 안 써봤다. Reactive Programming은 이론만 안다. 깊이를 판 게 아니라. 익숙한 것만 계속 쓴 거다. 새로운 Java 기능도 안 쓴다. "레거시 코드가 많아서." "마이그레이션 비용이 커서." 핑계다. 그냥 배우기 귀찮은 거다. 체력도 떨어지고. 새로운 거 배우면 머리 아프고. 그러는 사이 후배들은 계속 배운다. 그들에게는 모든 게 새로운 거니까. 배우는 게 당연하니까. 역질문 시간 면접 끝나고 "질문 있으세요?" 하면. 요즘은 내가 더 궁금하다. "이 기술 도입하면서 힘들었던 점은?" "레퍼런스가 적어서 어떻게 공부하셨어요?" "주변에 아는 사람 없으면 어떻게 해결하세요?" 면접관이 물어볼 질문이 아니다. 근데 진짜 궁금하다. 어떤 지원자는 대답해준다. 친절하게. 마치 선생님처럼. "공식 문서 먼저 보고요, 안 되면 해외 포럼이요." "Discord 커뮤니티 들어가면 다들 잘 알려줘요." "일단 해보면서 삽질하는 게 제일 빠르더라고요." 나는 공식 문서 보면 영어에서 막힌다. Discord는 뭔지 잘 모른다. 삽질할 시간은 없다. 세대 차이다. 합격 통보의 무게 면접 평가회의 때마다 고민이다. 내가 제대로 평가한 건가. 이 사람이 실력자인지 아닌지. 판단할 자격이 내게 있나. 결국 다른 면접관들 의견을 따른다. "30대 후배가 괜찮다고 하면 괜찮은 거겠지." "기술 질문 잘 받아쳤으면 실력 있는 거겠지." 내 판단은 점점 줄어든다. 면접관인데. 합격 통보하고 나면 불안하다. "이 사람 들어와서 나한테 뭐 물어보면 어떡하지." "내가 리드할 수 있을까." 파트장인데 말이다. 관리자의 핑계 회사는 말한다. "파트장은 기술보다 관리가 중요합니다." "팀원들이 잘할 수 있게 도와주세요." "기술은 팀원들이 캐치업하면 됩니다." 맞는 말이다. 근데 씁쓸하다. "기술 못 따라가도 괜찮아, 넌 관리자니까." 이렇게 들린다. 관리만 하는 개발자. 코드는 못 짜는 개발자. 후배들 실력은 못 따라가는 개발자. 그게 나다. 면접 볼 때마다 확인한다. "아, 나 진짜 뒤처졌구나." 불안의 정체 왜 불안할까. 생각해봤다. 첫째, 권위가 무너진다. 20년차 시니어인데 모르는 게 많다. 후배들이 알면 어떡하나. 둘째, 자리가 불안하다. 관리만 하는 개발자는 언제든 교체 가능하다. 기술 없으면 경쟁력 없다. 셋째, 자존심 상한다. 후배한테 배운다는 게. 면접에서 질문 못 한다는 게. 결국 다 자아 문제다. 실력은 둘째고. 내 위치, 내 자존심이 먼저다. 한심하다. 인정의 시작 지난주 면접 후 솔직하게 물어봤다. 27살 지원자에게. "저는 GraphQL 안 써봤거든요. 3분만 설명해주실 수 있어요?" 당황하더라. 면접관이 질문받는 상황. 근데 설명해줬다. 친절하게. 이해하기 쉽게. "감사합니다. 많이 배웠네요." 그 사람 합격시켰다. 우리 팀에 꼭 필요하다. 내가 모르는 걸 아니까. 면접 끝나고 30대 후배가 말했다. "형, 솔직하게 물어보시는 거 멋있었어요." "아니, 그냥 진짜 몰라서." "그래도 인정하고 배우려는 게 쉽지 않잖아요." 위로인지 칭찬인지 모르겠다. 근데 조금 편해졌다. 바뀐 면접 방식 요즘은 면접 스타일을 바꿨다. 모르는 기술 나오면 솔직하게 말한다. "이 기술은 저도 안 써봤는데, 어떤 점이 좋은가요?" "실무에서 어떻게 적용하셨는지 자세히 설명해주세요." 질문이 아니라 학습이다. 면접인지 세미나인지 모를 때도 있다. 근데 이게 더 낫다. 지원자 실력도 제대로 보인다. 설명 잘하는 사람이 실력자다. 아는 척하는 사람은 금방 티 난다. 그리고 나도 배운다. 한 번에 하나씩. GraphQL, Rust, Kafka. 면접 볼 때마다 하나씩 는다. 느리지만 방법이다. 시니어의 역할 요즘 생각이 바뀌었다. 시니어는 모든 기술을 다 알아야 하는 게 아니다. 어떤 기술이 필요한지 판단하는 게 중요하다. 면접에서 지원자가 Rust 얘기하면. "우리 프로젝트에 Rust가 필요할까?" 를 생각한다. 성능이 중요한가. 메모리 안전성이 핵심인가. 팀원들이 러닝 커브를 감당할 수 있나. 이건 5년차는 못 한다. 20년 경험이 필요하다. 기술은 몰라도 된다. 판단력은 있어야 한다. 그렇게 자위한다. 매일. 다음 면접 다음 주에 또 면접이다. 이력서 받았다. 이번엔 Python 머신러닝 경험자. 모른다. Python은 문법만 안다. 머신러닝은 완전 초짜다. 주말에 공부해야 한다. "머신러닝 기초" 유튜브 영상. 1시간짜리. 볼 수 있을까. 아들이 "아빠 게임하자" 할 텐데. 일단 저장해놨다. "나중에 보기" 목록에. 거기 영상이 벌써 37개다. 다 못 본다. 알지만 계속 저장한다. 불안하니까.면접관석은 생각보다 불편하다. 판단하는 사람인데 확신은 없다.