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

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

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

면접관석에 앉다

작년부터 면접관으로 들어간다. 파트장이 되면서 당연한 수순이다. 첫 면접 전날 밤, 예상 질문 리스트를 정리했다. 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개다.

다 못 본다. 알지만 계속 저장한다.

불안하니까.


면접관석은 생각보다 불편하다. 판단하는 사람인데 확신은 없다.