brunch

아직도 개발자는 리트코드로 인터뷰를 본다

조금은 지겨운 것 같다

by 개일

한국과는 조금 다른 미국 회사 문화 중 하나가 이직을 자주 하는 걸 자연스럽게 생각한다는 점이다. 그나마 내가 있는 팀은 사람들이 오래 있는 편이다. 어떤 사람들은 1년도 안 돼서 회사를 바꾸기도 하는데, 아무래도 2년도 안 된 채로 계속 이직만 하면 좀 안 좋게 보일 순 있다. 2년 정도는 다니고 옮겨야 같이 일해보고 싶은 신뢰가 쌓이지 않을까.


이직이 당연시되는 곳이다 보니, 인터뷰 준비는 늘 꾸준히 해야 하는 숙제인데


개발자라면 피할 수 없는 인터뷰 관문이 하나 있다. LeetCode 라는 알고리즘과 코딩 실력을 테스트한다는 명목으로 모든 개발자를 아주아주 괴롭히는 지겨운 수수께끼들이다. 나를 3년 전에도 괴롭혔고, 지금 내가 다시 이직을 준비한다면 또 찾아와 귀찮게 할, 지겹지만 떼려야 뗄 수 없는 정말 정말로 지겨운 문제들이다.

tempImageqrwlMg.heic 프로그래밍 시작이 "Hello, World!" 라면 리트코드의 시작은 Two Sum 이다.



컴퓨터과학을 전공하면 보통 3학년까지는 필수 과목으로 알고리즘을 배운다. 1학년 때는 Big O, time/space complexity, 그리고 간단한 증명 방법을 배웠고, 2학년 때는 array부터 시작해서 recursion, 기본적인 자료구조들을 공부했던 것 같다. 3학년이 되면 조금 더 깊어져서 dynamic programming, trie, 여러 종류의 tree와 graph들을 배웠던 기억이 난다.


4학년 때 알고리즘은 다행히 선택 과목이라 알고리즘을 좋아하는 사람이라면 더 들었겠지만 대부분은 듣지 않았을 것이다. 다들 알고리즘이나 증명을 싫어하기도 하고, 솔직히 3학년에서 배우는 것 이상이 인터뷰에 나오지도 않으니까.


어쨌든 개발자라면 기본적으로 알고 있어야 하는 알고리즘과 자료구조. 요즘 같은 LLM 시대에도 어쩔 수 없이 인터뷰에서 빠지지 않는 기본 중의 기본이다. 인터뷰 시즌만 되면 하루 다섯 시간씩 리트코드를 풀다가, 취업하면 또 다 잊고, 다음 이직 시즌이 오면 다시 처음부터 시작하고.


그나마 다행인 점은 직급이 올라갈수록 리트코드 비중은 줄어들고 다른 것들의 비중이 높아진 것 정도? 간단한 리트코드 문제 한두 개로 필터링만 하고, 대신 시스템 디자인에 훨씬 많은 비중을 둔다. 경력이 있는 개발자라면 회사에서 해온 경험이 있으니 그걸 바탕으로 준비하면 되는 거고. 그래도 시스템 디자인 쪽으로 공부하면 공부하는 기분은 드는데...


리트코드를 풀다 보면 이걸 공부하는 게 도대체 내 인생에 무슨 도움이 될까라는 생각이 들 수 밖에 없다. 나름 객관적인 필터링을 위한 필요 절차라는 건 알겠지만 어차피 언젠가 다시 잊어버릴걸. 알고리즘의 기초만 알고 있어도 회사에서 코딩하는 데는 웬만해서는 문제가 없다. 현실에서는 결국 이중 for loop 정도를 어떻게 최적화할까 정도 고민하지, 리트코드 하드 문제 같은 걸 45분 안에 해결하라는 경우는 절대 없으니까. 적어도 며칠은 주겠지.


한창 취준 시기 때 리트코드를 열심히 풀던 시절이 있었는데, 정확한 개수는 기억나지 않지만 대략 200~300문제 정도는 되지 않을까 싶다. 그 정도 풀면 기초가 탄탄하고, 외워서 풀지 않았다는 가정하에 웬만한 인터뷰 문제는 다 풀 수 있지 않나 싶다. 물론 이건 3년 전 이야기고, 요즘은 컨닝 방지를 위해 코딩 테스트 난이도가 더 올라갔다고는 한다. 그러면 컨닝 안 하는 사람들은 대체 무슨 죄일까.


공부라는 건 뭐라도 나에게 남아야 계속하게 되는 법이다. 실력이든, 뿌듯함이든, 점수든, 어떤 식으로든 축적된다는 느낌이 있어야 하는데 리트코드는 아무리 생각해도 나의 실력 향상에 도움은 되지 않는 것 같다. 그래서 더 시간낭비처럼 느껴진다.


스타트업은 실제로 필요한 능력을 보기 때문에 리트코드보다는 개발 역량을 훨씬 더 본다. 내가 한창 인터뷰 볼 때도 스타트업에서 리트코드를 묻는 경우는 거의 없었다. 대신 특정 언어로 확률 계산을 직접 해보라거나, 머신러닝 파이썬 라이브러리를 사용해 모델 구조를 처음부터 만들어보라는 식으로 실제 업무와 연결된 문제가 더 많았다. 아쉽게도 대기업들은 아직 리트코드를 완전히 대체할 방식을 찾지 못한 것 같다.


매일 한 문제씩 풀겠다고 다짐하지만 어느 순간 잊어버리고 하루 밀리다 보면, 일하랴, 주말 보내랴, 이런저런 핑계들 사이에서 리트코드는 어김없이 우선순위 맨 아래로 내려가 버렸지만


다시 내일부터는 꾸준히 해볼 거다.

keyword