토스를 떠나면서

lingodingo·2023년 7월 4일
293

회고록

목록 보기
3/3
post-thumbnail

🚚 떠나면서

토스는 나의 두 번째 회사이기도 하면서 참 많은 경험을 겪게 해준 고마운 회사이다. 퇴사 직전에 여러 일들이 있었고, 5월에 퇴사했다. 이번 기록은 퇴사하기 한 달 전인 4월부터 오늘까지 겪은 이직 기록이다.

🚀 떠나기 전

마지막으로 있었던 팀은 인터널 프로덕트 팀이다. 해당 팀에선 프론트엔드 업계에서 유명하신 조유성님과 같이 일할 기회가 있었으며, 대단하신 분이라고 지금도 생각이 든다. 회사에 들어오기 전에, 현재 토스 프론트엔드 챕터 리드이신 박서진님도 대단하다고 느꼈지만, 리드는 이런 사람들이 해야 한다는 것을 느낄 수 있었다.

💻 Server Driven UI 개발

이전에도 소개했고, Slash 23의 발표 내용 중 하나를 나는 직접 참여했었다. 다른 회사 면접을 볼 때, 해당 주제와 비슷한 문제를 해결하려고 했다기에 궁금했는데, 기능의 자유도를 플랫폼이 어디까지 핸들링하느냐 따라 해당 프로젝트의 난이도가 급상승하게 된다고 느꼈다 (예시로, 화면만 꾸밀 수 있고 기능이 적은 제품을 자동화하여 찍어내는 건 쉽다. 하지만 특정 폼이 다른 폼을 참조하고, 변화를 감지하고 이벤트를 발생시키는 플랫폼을 만들기엔 굉장히 어렵다)

퇴사하고 나서, 여러 경험을 겪으면서 이 프로젝트에 대해 다른 사람들과 얘기를 해봤는데, 장점을 많이 내세우셨지만, 단점도 여전히 있는 프로젝트라고 생각한다.

👟 이직 준비

💻 macOS과 친해지기

토스에 다닐 때 동료 프론트 엔지니어분이 아이패드 프로를 중고로 파신다고 하시길래, 그 당시 아이패드 병이 도지던 나는 갑작스럽게 구매하게 되었다. 아마 내가 처음 구입한 iOS 디바이스이다. 사자마자 아이패드 병이 깨끗이 나았으며(?) 밥 먹을 때 제외하곤 아이패드를 사용하지 않게 되었다.

그 후 퇴사 후에 과제를 진행하게 될 것을 염려하여 사이클 수 16의 깨끗한 M1 맥북 에어 RAM 16GB를 업어왔다. 이직 준비가 끝난 현시점에 최근 들어 가장 잘 산 디바이스 1위를 뽑으라면 단연코 맥북일 것 같다.

현재 갤럭시 S22+를 쓰고 있는데, 아마 다음 아이폰이 USB-C 포트로 충전된다면 아이폰으로 정착하지 않을까 싶다. (내 집은 라이트닝 케이블을 허락하지 않는다)

📘 사전 공부

4년차 프론트엔드 엔지니어에겐 어떤 질문을 예상할까라고 생각하며 기초 CS 지식을 많이 공부했다. 결과적으로 도움이 많이 되었으며, 빈도수별로 정리해보면 다음과 같다. 근데 CS를 메인으로 물어보기 보단, 이력서 기반 질문만 하다가 좀 더 딥하게 진행되는 경우가 더 많았다.

  • 이력서 기반 질문 (빈도수 가장 높음)
  • JavaScript, 브라우저 동작 원리 (빈도수 높음)
    • 브라우저에서 네이버를 쳤을 때 어떤 일이 일어날까
    • 호이스팅, 클로저, var, let, const 차이점
    • 이벤트 루프, 실행 문맥을 곁들여서 설명
    • (번외) CORS의 simple request 조건
  • React (빈도수 낮음)
    • react는 어떤 방식으로 hook의 순서를 기억할까
    • react 18의 strict mode에서는 왜 useEffect가 2번 돌까
    • react를 쓰는 이유, 장단점
  • 자료구조, 네트워크 (빈도수 낮음)
    • http 0.9/1.1/2.0/3.0 차이점

📃 이력서

30여개의 회사에 이력서를 보내면서 서류탈락은 경험해 보지 못할 정도로 적었다. 다음과 같은 이유라고 생각한다.

  • 나름 귀한 4년차 프론트엔드 엔지니어
  • 네카라쿠배당의 네임밸류
  • 경력에 대한 깔끔한 정리 (~~에 대한 일을 ~~기술 스택을 사용했고, ~~한 성과가 있었다)
  • 서류 검토하는 분이 흥미가 갈만한 경력들

💡 이력서에 관련한 팁

이력서를 작성할 때 중요한 것은 면접관이 물어볼 만한 질문의 방향을 자신이 정할 수 있다는 것이다. 실제로 나의 이력서엔 다음과 같은 항목이 있다.

XXX 서비스 개발

  • 서비스 초기 도입한 mobx이 현재 기술 스택과 맞지 않고, 유지 보수의 어려움을 느끼고 개발 안정성 및 경험을 높이기 위해 서버 상태와 클라이언트 상태를 분리(recoil, react-query)

만약에 면접관이라면, 해당 문항을 이렇게 물어볼 것이다.

  • mobx가 현재 기술 스택과 맞지 않는다는 어떤 뜻인가요?
  • 어떤 점에서 유지 보수의 어려움을 느꼈나요?
  • mobx의 장단점은 무엇일까요?
  • 왜 다른 상태관리 라이브러리가 아닌 recoil인가요?
  • 서버 상태와 클라이언트 상태를 왜 분리하였나요?
  • 왜 recoil + react-query말고, recoil 하나만 쓰지 않았나요?
  • 왜 상태관리 라이브러리를 맘대로 바꿨나요? 전사적인 관점에서 라이브러리 파편화가 이루어지지 않았나요?

나는 해당 답변을 미리 준비할 수 있기도 했고, 해당 경력이 나에 대한 어떤 긍정적인 영향을 끼칠지 알 수 있어서 저렇게 작성했다. 해당 경력에 대한 질문들은 내가 준비한 답변으로 모두 대답할 수 있었다.

📞 스크리닝

몇몇 회사는 서류 합격을 하면, 리쿠르터분이 나에게 간소한 스크리닝을 요청했다. 전문적인 지식은 요구하지 않았고, 왜 이직하냐는 질문이 대부분이었다.

(토스 좋은 회사잖아요. 왜 여기로 지원하셨어요?) <- 앞으로 이 질문을 여러 번 보게 될 것이다.

이 당시 회사를 퇴사할 것이라는 암시를 분명히 했고, 지원 동기도 나름 명확히 밝혔다고 생각한다.

📚 코딩테스트

코딩테스트는 평소 hackerrank, leetcode를 통해 틈틈히 공부했었다. 경력직 코딩 테스트 문제는 어려워 봤자 그리디, DP 알고리즘 정도였다. 심지어 같은 문제 풀을 공유하는지 다른 회사 코테지만 같은 문제가 나오는 경우가 있었다.

다만 코딩 테스트에 특이한 과제가 껴있는 경우가 많았는데, 다음과 같았다

  • Typescript template를 주고 4시간 만에 과제 구현하기
  • ReactJS로 Timer 만들기
  • API 명세서 작성하기(?)

🙄 ChatGPT가 나온 뒤로, 난이도가 낮은 코딩테스트는 의미 없다 느껴졌다. 알고리즘 플랫폼들의 연습 문제들을 코딩테스트를 한 번 ChatGPT(v3.5)에 넣어봤는데 해당 문제를 어떻게 풀어나가야 하는지 잘 제시해주었고, 최적화하는 문제도 잘 해줬다. 고질적인 Hallucination 문제를 빼면 난이도 낮은 코딩테스트는 의미가 없다고 생각한다.

🤨 개인적으로 구름에서 치르는 코딩테스트는 너무 별로였다. input을 파싱하는 코드를 직접 작성해야 하는것이 너무 별로였다. hackerrank, leetcode, programmers 처럼 함수 하나만 작성하게 하면 얼마나 좋을까?

국내 코딩테스트 플랫폼 특징으로 화면 녹화, 복붙 금지, 화면 해상도가 너무 작으면 풀기 불가능, 개발자 도구 켜기 불가능을 하는 옵션도 있던데, 개인적으로 너무 끔찍했던 경험이었다.

개인적으로 제일 어려웠던 코딩테스트는 오늘의 집 코딩테스트라고 생각한다. 보통 5문제가 출제되는데, 3문제까지는 풀만하나 그 이상은 알고리즘을 꽤 많이 공부해야지 풀 수 있었던 것 같다.

코테 전형은 약 10개의 회사에서 1군데 회사(오늘의 집) 빼고는 모두 합격했다.
서류 지원은 한 달 전쯤에 했는데, 월초에 들어서면서 일괄적으로 채용을 시작하는 회사가 있었다. 채용 프로세스가 너무 느리다고 판단해서 코딩테스트 백지를 내고 깔끔하게 포기한 회사도 있다.

✏ 과제

개인적으로 과제를 치르고 난 곳이 그렇지 않은 곳보다 기술 면접 통과율이 더 높았다. 코드를 통해서 내가 어떤 생각을 갖고 과제를 해결했는지 설명할 수 있어서, 시간이 걸리더라도 과제를 하는 쪽이 결과가 더 좋았다.

기술 스택을 내가 온전히 정할 수 있는 경우가 많아서, Next 13을 사용해 본다든지, 이름만 들어본 Material UI를 직접 사용해 본다던가, 다른 라이브러리를 사용해가며 개발했던 것이 너무 재밌었다.

토스에선 비동기 처리를 선언적으로 비동기 처리하기 방식을 이용하고 있어서 나도 이 방식으로 과제에서의 비동기 처리를 많이 했는데, 과제 리뷰를 하시는 분들이 이렇게 적용하는 건 처음 본다고 하셨다. 아직까지 마이너한 방법인가 보다.

과제는 총 5번 했고, 1곳에서 떨어졌다. 떨어진 곳의 이유는 애초에 시니어도 아닌데 시니어 포지션으로 지원했었고, 그러기에 기준이 높았으며 버그도 크리티컬한게 있었고, 관심사 분리나 요런 게 좀 아쉬웠다고 했다. 😅

여기까지의 단계는 사람들(면접관)과 대화할 일이 없는 경우가 많다.
그래서 나 자신만 준비를 잘하면, 무난하게 합격했던 것 같다.

😬 기술 면접

저번 이직과는 다르게, 기술 면접을 볼 때 피드백을 위해 휴대폰으로 인터뷰 녹음을 했다.
(어디 공개할 건 아니고, 자신만의 피드백을 위해서 사용했다. 이때 면접이 끝난 후, 복기를 해야 하는데 네이버 클로바 노트소리 => 텍스트 변경 기능이 아주 많은 도움이 되었다, 효율을 300% 올려주었다고 생각한다)

💡 만약 면접을 혼자 준비하는 개발자라면, 꼭 한 번은 해보길 바란다. 자신이 무슨 말을 하는지, 말을 왜 이렇게 빨리하는지 부끄러움의 연속이다.

💡 여러 사람이랑 이직, 구직 준비를 할 수 경우라면 모의 면접을 꼭 해보자


기술 면접은 이력서 기반 질문에 좀 더 꼬리에 꼬리를 무는 질문을 하는 경우가 많았으며, CS 기초 + 이력서 기반 질문이 그다음으로 많았다.
가장 별로였던 면접은 마치 CS 질문 리스트가 있는 것처럼 읽으면서 체크하는 회사가 있었는데, 개인적으로 너무 힘들고, 별로였다. 하지만 반대로 내가 이 정도도 모르나? 싶었던 것 같아서 나중에 도움이 많이 되긴 했다. 🤣


여러 면접을 보고 나니, 다음과 같은 질문을 정말 많이 받았다.

Q. 토스 좋은 회사잖아요. 왜 여기로 지원하셨어요?
Q. 토스에서 여기로 지원하신 분은 처음 봐요. 이직하는 사유가 어떻게 되시나요?

첫 회사에서 토스로 지원했을 때에도 나왔던 질문이지만, 그 때는 좀 더 큰 곳에서 일해보고 싶다고 대답할 수 있었고, 그렇게만 말하면 심각한 문제가 되지 않았다. 하지만 큰 회사에서 상대적으로 작은 회사로 지원하다 보니 이직 사유는 굉장히 중요하단 사실을 나중에 깨달았다


🎈 그리고 매번 느끼지만, 기술 면접은 O/X가 퀴즈가 아니다. (종종 그런 경우도 있긴 하지만)

어떤 방법론에 대해 설명해보세요는, 그 방법론이 비록 틀리더라도, 자신의 생각을 얼마나 잘 표현할 수 있고, 거기에 대한 면접관과 커뮤니케이션이 잘 되는 것인가가 중요하다. 이건 마음 속으로는 알고있지만, 매번 면접관과 O/X 퀴즈를 풀고있었다.

개인적으로 뽑은 가장 인상 깊었던 기술 질문은 다음과 같다.

Q. 프론트엔드에서 SOLID 원칙을 지켜가며 리액트 컴포넌트를 개발하기엔 힘든 것 같다. 혹시 xx님께선 어떻게 생각하시는지?
(물론 이거 대답 제대로 못 했다. 해당 질문을 하신 이유는, 저 질문에 대한 나의 생각을 어떻게 표현하는지가 궁금하셨을텐데 너무 당황한 나머지.. (끔찍))

😀 인성 면접

Q. 토스 좋은 회사잖아요. 왜 여기로 지원하셨어요?
Q. 어떤 동료와 의견 충돌이 있다면 어떻게 하실 건가요?
Q. 만약 이런 사람이랑은 일을 못 하겠다면, 그 사람의 성격은 어떨거라 생각하시나요?
Q. 자신의 장단점이 무엇인가요?

면접 보는 초창기에 저 질문들에 대한 답을 자세히 준비하지 않아서 답변하기가 매우 힘들었다. 나중엔 저 질문을 하는 이유가 뭘까를 따로 공부하고, 시나리오를 만들고 복습하다 보니 데이터가 많이 쌓여 어렵지는 않게 되었다.

만약 이직을 고려하고 계신다면, 인성 면접의 기본(왜 이 질문을 할까?)에 대한 영상을 꼭 봤으면 좋겠다.

🎞 결과

한 달 반 동안 약 25개의 회사에 지원했고, 총 3개의 회사에 최종 합격하였다.

요번 이직을 준비하면서 나에 대한 성장도 굉장히 많이 이뤘다고 생각한다. 누군가 말하길, 이직할 때 엄청난 성장을 하게 된다고.. 실제로 나도 이 말에 동의하며, 내가 어떤 생각을 갖고 코드를 작성하는지를 말로 잘 표현하게 된 것 같다.

여담으로 마지막 면접까지 나름 잘 보고 떨어진 경우도 많았다. 인성이 문제일까 싶었지만 요즘 채용 시장이 워낙 안 좋아서 떨어졌다고 생각하기로 했다. 어떤 회사의 최종 탈락 이유는 경력이 좀 더 있으신 개발자를 원해서라는 이유도 있었고, 자신이 왜 이 회사에 있어야 하는지에 대한 설명이 부족했다는 이유도 있었다.

🎨 마치며

  1. 이직 기록을 정리하고, 출간하는 건 매번 어렵다. 이 아티클이 완성되기까지 한 달 넘게 걸린 것 같다. (평소에 글을 잘 쓴다고 생각하지 않기 때문에 회고와 퇴고의 과정을 여러 번 거친다 😂)
  2. 현재 집 전세가 만기가 끝나가는데, 전세 -> 전세는 생각보다 힘들다는 걸 깨닫고 월세로 넘어가려고 한다.
  3. 토스는 좋은 직장이었으며, 현재 다른 회사에 일하고 있을 때 종종 생각난다. (아.. 토스가 진짜 편하게 개발할 수 있었는데)
  4. 반대로 생각하면 그 좋은 기억을 가지고 다른 회사의 기술 스택에 녹여내려고 시도하고 있다.
  5. 위에도 언급했듯, 요즘 채용 시장이 정말 좋지 않다. 부디 모두 좋은 결과가 있으면 좋겠다.
profile
Frontend developer

7개의 댓글

comment-user-thumbnail
2023년 7월 6일

좋은 정보 감사합니다!

답글 달기
comment-user-thumbnail
2023년 7월 10일

너무 재밌게 읽었습니다. 경험 공유해주셔서 감사드려요! 😆

답글 달기
comment-user-thumbnail
2023년 7월 11일

4년차로써 공감추
과제하면서 평소 안써본 것 써보고 ㅋㅋ
면접질문은 깨지고 나면 더 발전하는것 같아서 좋지만 당시는 끔찍..
스피드 퀴즈 면접은 별로고, 내가 대답을 못할때 더 끔찍...

답글 달기
comment-user-thumbnail
2023년 7월 12일

좋은 글 감사합니다 ~~!

답글 달기
comment-user-thumbnail
2023년 7월 14일

잘 읽었습니다.

답글 달기
comment-user-thumbnail
2023년 7월 15일

종은 정보 감사합니다

답글 달기
comment-user-thumbnail
2023년 7월 19일

면접가서 배우는 경우도 종종 있습니다.
면접에서 대답 못했던거 집에와서 공부하면서 많이 배웠던 기억나네요

답글 달기