스펙타클했던 프론트엔드 이직 준비 1년
지난 1년 동안 프론트엔드 개발자로 이직을 준비하며 겪었던 시행착오를 기록한 글이다. 이 글이 지금 이직을 준비하고 있는 누군가에게 닿는다면 조금이나마 도움이 되었으면 좋겠다.
이 글은 합격 후기가 아니다.
💬 지난 1년간, 여러번의 지원이 있었고 가장 기억에 남는 라이브 코딩테스트, 과제, 면접을 진행했던 5개의 회사를 떠올리며 적은 글이다. 밑에서 A ~ E 오름차순으로 경험을 적어나가볼 예정이다.
현재 회사에서 이직을 결심한 계기
먼저, 프론트엔드 개발자로 SI, 유저없는 B2B SaaS 와 B2C, 그리고 B2B 설치형 제품을 만드는 회사에서만 근무를 해보았다.
그리고 모든 회사가 내가 기획자이자, 디자이너이자, 개발자이자, QA이자, … (끊이지 않는 쉼표 체이닝)
중간에 회사에서 디자이너와 기획자를 뽑아줬던 기억이 남아있긴하지만 제대로 된 포지션 간의 협업을 실무에서 경험해보지 못했다. 이 것이 첫 번쨰 이유이다.
두 번째로, 프론트엔드 개발자로써 유저의 목소리, 유저의 행동을 피부로 맞닿아 경험해볼 수 있는 환경이 아니였다.
물론 B2B 환경에서만 얻을 수 있는 복잡한 도메인을 어떻게 UI로 표현할지에 대한 값진 고민과 여러 데이터들을 직관적으로 보여주는 차트라던지, 드래그앤드롭 기반의 GUI 컴포넌트를 만드는 등, 어려운 좋은 경험도 할 수 있었다. 근데 중요한 하나의 갈증이 있다.
💬 그래서 제가 만든걸 잘 사용하고있는건가요? 피드백을 dollar.
이러한 생각과 갈증을 느끼게 되며 최종적으로 다음 목표는 유저와 직접 맞닿아있는 프론트엔드를 경험해보고 싶은 생각이 강하게 들었고, 일상 생활에서 사람들이 사용하는 서비스를 직접 만들어보고 싶다는 생각이 커져만 갔다.
현재 개발하는 과정도 너무 재밌지만 추가로 일종의 동기부여와 내 심금을 울리는 무언가의 + @ 가 필요했던 것 같다.
‘올해면 되겠지?’ (안됨)
"그렇게 시작된 거야..."
처음에는 몇 달이면 끝날 줄 알았다.
하지만 현실은
- 서류
- 과제
- 기술 면접
- 최종 면접
- 탈락
- 다시 준비
를 반복하는 1년이였다.
처음 탈락의 매콤한 맛을 경험하고 멘탈이 무너졌었다. 하지만 매운맛도 계속 먹으면 안맵듯이.. 점점 탈락에 무던해지는 내 자신을 발견했다.
처음 면접 봤을 때와 근래 면접 봤을 때를 비교해보면 어쩌면 이젠 면접 준비를 따로 하지 않아도 그냥 가서 대답할 수 있을 것 같은 경지에 오른 기분이다. (최근 2주동안 면접준비만 하며..)
A 회사
화상 라이브 코딩에서 장렬하게 전사
이직 결심 후, 판교에 있는 A 회사의 첫 서류가 붙었다.
막상 붙었다고 유선으로 전화가 오니 너무 설렜던 좋은 기억이 남아있다.
이후 채용 프로세스는 화상 라이브코딩이였는데 기억이 자세하게 남아있진 않지만 자바스크립트 Promise를 이용하여 무언갈 만들었던 것 같다.
그렇다. 장렬하게 전사했다. 문제 자체는 자바스크립트 딥다이브를 읽었다면 풀 수 있었던 문제로 기억하는데, 당시 내가 코드를 짜는 걸 누군가가 보고있다는 부담감이 강력하게 작용을 했었다.
최종적으로는 완벽하게 못 풀 었다. 떨어질 것을 직감하고 무언갈 얻어갈 심정으로 마지막에 면접관님에게 제 구현에 대한 문제점이 무엇이였을까요? 라고 질문을 했었다.
들려오는 대답은 알아서 찾아보세요 라는 뉘앙스의 대답이였고 그 후로 라이브코딩에 대한 트라우마가 생겼다. ㅋㅋ
B 회사
결론부터 말하면 과제에서 탈락했다.
먼저 B 회사다. 설날 시작과 동시에 다음 전형은 과제전형이였고, 시골에 있는 갈비찜을 포기하고 과제를 했기 때문에 기억에 남는다.
과제 기한은 대부분 3일이더라.
B 회사도 3일의 시간이 주어졌고, 과제 내용은 자세하게 말은 못하지만 피그마 시안과 개발 기획서를 보고 A-Z 까지 세팅하고 구현하는 것이였다.
Storybook, pnpm 기반의 모노레포 등, 개발 기획서에 어떠한 스택으로 구현하라 라는 것이 명시되어있었다.
여기는 제출 방식이 되게 특이했었는데, 개인 private 레포지토리에 프로젝트를 올려놓고 vercel로 배포하여 배포링크를 메일로 제출하는 방식이였다.
뭐가 문제였는진 모르겠지만 피드백이 되게 늦게 왔었고, 2주뒤에 불합이라는 피드백을 메일로 받았다.
C 회사
여기는 최종면접까지 가서 탈락했다.
그 다음 C 회사이다.
내가 평소에 관심있었던 도메인이였고, 실제로 개발을 진행하진 못했지만 이전에 진행했던 기획 와이어프레임이나, 유저플로우 등 피그마 시안이 있었기 때문에 해당 문서를 포트폴리오로 정리하고 이력서와 같이 제출했던 회사였다.
서류합격 메일을 받은 후, 과제를 진행했다.
여기도 B 회사와 다르게 보일러플레이트 프로젝트를 제공해주었고, 피그마 시안을 보고 대규모 코드베이스에서 확장가능한 설계로 근거를 대며 구현하는 과제였다.
단순한 Form 관련 구현 과제였지만 피그마 컴포넌트 그룹을 보며 어떻게 컴포넌트를 분리할지 많이 고민했던 것 같다.
결과적으로는 과제에 합격하였고, 1차 면접까지 가보게 된 이직 결심 후 첫번 째 회사였다.
면접 준비는 신입 떄와 같은 마음가짐으로 자바스크립트, 리액트 기본 지식, 동작원리 등 정도만 숙지하고 갔던 것 같다.
그런데 왠걸, 이력서 기반으로 질문이 시작되고 거기에 꼬리를 무는 기초 CS 질문이 이어졌다.
다행히도 아는 선에서 질문이 나왔기 떄문에 모두 대답하였지만, 이 때를 기점으로 이후 면접 준비 방식을 이력서 기반의 기술 중심으로 숙지하기 로 방향성을 바꾸게 되었다.
나왔던 면접 질문은 기억나는 대표적인 두가지 질문을 뽑아보자면,
- accessToken과 refreshToken을 어디에 저장하는게 맞다고 보시는지? → 왜 쿠키인지 → accessToken을 브라우저 저장소에 노출했을 때, 어떤 것을 고려할 것 같고 트레이드오프는 뭔지?
- react-hook-form 기반의 Form 컴포넌트를 만드셨을 떄, useContext가 아닌 왜 useForm의 control props를 넘기는 방식으로 구현하셨는지?
이다. 대부분 이력서와 과제 기반으로 질문이 이어졌고, 면접관님들이 편안한 분위기속에서 답을 낼 수 있도록 힌트도 주셨었고, 기억에 남는 좋은 1차 기술면접 경험이였다.
결과는 합격으로 이어졌었고, 대망의 2차 컬쳐핏 면접을 준비하게 되었다.
C 회사의 컬쳐핏 면접
부끄러울 정도로 대답을 잘 못했다.
대부분 같은, 그리고 서로 다른 직군과의 협업에 대한 커뮤니케이션 역량과 AI 에 대해 어떻게 생각하는지를 물어보는 질문이 대다수였고, 가장 이불킥을 찼던 답변을 했던 질문 두개가 바로 생각난다.
- 누군가를 설득해본 경험이 있는지?
이 부분은 하나의 사례를 말씀드리고 꼬리질문을 받았었는데 너무 기억에 남는다.
받았던 꼬리질문은 ..
제가 설득을 못했던 사람이라고 생각하고 한 번 지금 다시 설득해봐주실 수 있나요?
였다. 물론 잘 대답을 하진 못했다… 상상도 못했던 질문이였기 때문이다.
- 제가 00님의 역량을 100% 활용하려면 몇 퍼센트의 기획과 디자인을 드리면 될까요?
그렇게 마지막 최종 면접을 탈락하게 되었지만, 앞으로의 면접 준비를 어떻게 하면 좋을지에 대한 좋은 주관적인 방향성을 잡아주는 계기가 되었다고 생각한다.
D 회사
여기는 1차 기술면접에서 탈락했다.
강남에 있는 어느 핀테크 회사였다.
핀테크라는 도메인도 사용자의 돈을 정확하게 보여주어야하는 도메인이다보니 그 금액의 정합성을 어떻게 보장할건지에 대한 프론트엔드의 사고과정이 매우 궁금하였기에 경험해보고 싶은 도메인 중 하나였다.
또, 이 회사는 어느 테크 블로그를 보고 다양한 직군이 소통하며 AI를 어떻게하면 더 잘 쓸 수 있을까를 고민하는 문화가 인상깊었어서 이를 지원동기로 강력하게 내세우며 지원하였다.
그렇게 1차 면접이 시작되고, 바로 비상사태였다.
그 테크블로그를 작성하신 분이 면접관으로 들어오셨었다..
좋은 일이 일어날 것 같진 않아
이력서 기반으로 특히 웹 바이탈 개선을 위한 지원자의 경험과 관련된 딥한 질문을 하셨었고, 특정 부분에 대해서는 화이트보드에 직접 구조도를 그려가며 질문에 대한 답을 했다.
그리고 역시, 테크 블로그에 대한 질문이 와버렸고, 그 부분에 대해 무방비했기때문에 어떻게 보면 좀 창피하게 두루뭉실한 대답을 했던 것 같다.
그렇게 다음 날 바로 탈락을 해버렸다.
이 때 얻은 면접 인사이트는 지원동기에 무언갈 적었다면 그거에 대한 꼬리질문도 혹시 모르니 준비하도록 하자. 였던 것 같다.
E 회사
E 회사는 평소에 되게 가고 싶었던 회사다. 2월 경에 한 번 지원을 하고 떨어진 뒤, 다시 재지원을 한 회사였다. 주변 지인들이 많이 사용하는 서비스기도 했고 내가 이직을 결심하게 된 갈증을 모두 해소할 수 있을 것만 같은 회사였기 때문이다.
채용 프로세스는
서류 → 과제 → 1차 기술면접 (라이브코딩) → 2차 컬쳐핏 면접
으로 진행되었다.
솔직히 A 회사에서 라이브코딩에 대한 공포의 쓴 맛을 봤기 때문에.. 다시 지원을 할지 말지 너무 고민을 했었다.
하지만 역시 너무 가고 싶었기 때문에 서류합격을 한 이후의 내가 고민을 하는 것으로 결정하고 지원을 최종적으로 결정하게 되었다.
과제는 요구사항 기준 브랜치를 나누고 해당 브랜치를 main을 타겟으로 PR 템플릿을 남기는 식으로 진행되었다.
AI는 자유롭게 사용하였었고, 자유롭게 사용하되, 왜 이렇게 구조를 짜고, 왜 분리했는지에 대한 근거를 생각하며 코드를 써 내려갔던 것 같다.
그렇게 좋은 일이 일어났고 기술면접과 컬쳐핏 면접을 동시에 진행한다는 메일을 받았다.
기술면접은 다른 회사들과 다르게 처음으로 기초 개발관련 CS 질문들을 많이 여쭤보셨다.
이 부분은 평소에도 재밌게 공부했던 부분이였기 때문에, 아는 선에서는 최대한 답변을 했던 것 같다.
그리고 이력서 기반의 질문이 이어졌었는데, 실제로 경험하고 그 경험을 기록한 이력서였기에, 대답하는데 큰 무리는 없었던 것 같다.
그렇게 대망의 라이브 코딩 시간이 왔는데 면접관님이 힌트도 많이주시고, 분위기를 편안하게 해주셔서 결국 완벽하진 않지만 구현하는데에 성공하여 A 회사의 좋지 않은 추억을 조금이나마 없앨 수 있었던 것 같다.
그렇게 종합해서 생각한 결과
과제
과제는 회사별로 제출방식, 무엇을 구현해야하나?, 어떠한 것을 중점적으로 보나?
모두 달랐다. 즉 회사 by 회사 였다.
하지만 지금 생각해보면 붙을 수 있는 치트키는 존재한다.
바로 코드를 짜는 순간마다 내가 이렇게 코드를 짠 근거가 무조건 뒷받침 되어야한다는 것이다.
실제로도 과제전형에 합격한 회사들을 생각해보면 모두 코드를 왜 이렇게 짰나? 에 대한 근거가 존재했고, 떨어진 회사들은 솔직히 코드를 짤 때 근거가 없었다.
또한 제출방식도 정말 가지각색이였던 것 같다.
어떤 곳은 vercel로, 어떤 곳은 zip으로 메일보내기, 어떤 곳은 pr 남기기 등등..
역시 채용 과제는 많이 해본사람이 감을 잘 잡을 것 같다는 생각이 든다.
면접
솔직히 회사만 달라질 뿐 면접 질문은 놀라울 정도로 비슷했다.
그리고 AI를 어떻게 사용하고 있는지, AI 가 다해주는데 개발자를 왜써야하는지? 등등
모든 회사가 AI 에 대한 지원자의 생각은 꼭 물어보는 것 같다.
- 이력서 기반의 면접
대표적으로 나는 이력서에 아래와 같은 항목들을 적었다.
- 웹 성능 최적화
- npm 라이브러리
- WebSocket
- 구조 개선
- 각각의 선택에 대한 트레이드오프
위에 대한 항목에 관한 딥한 질문들이 대부분 이어졌고, 내가 어떠한 사고방식으로 문제에 접근하고 해결했는지를 공통적으로 물어보시더라.
- 기초적인 프론트엔드 개발관련 CS
솔직히 이 부분은 따로 공부하지 않아도 기본적인 것은 알아야한다 생각한다.
간단하게라도..
예를 들면
- 브라우저 렌더링 과정
- 리액트에서 말하는 불변성이란 뭔지
등등
나도 모든 것을 깊숙하게는 알지 못한 것 같다. 실제로도 면접에서 꼬리질문이 딥하게 나왔을 때, 거기까지는 알지 못하는 것 같습니다 라고 솔직하게 말하는 편이다.
다 안다면 나는 구글에 있을 것이다.
- 컬처핏
난 컬처핏 면접이 제일 어려웠다.
기술 면접은 내가 했던 일과 선택의 이유를 설명하면 된다. 하지만 컬처핏은 조금 달랐다.
평소에 동료와 어떻게 소통하는지, 의견이 다를 때는 어떻게 해결하는지, 피드백은 어떻게 주고받는지처럼 평소의 일하는 방식 자체를 말로 설명해야 하는 면접이라는 느낌을 받았다.
문제는 이런 것들은 대부분 의식적으로 하는 행동이 아니라는 점이다.
왜 그렇게 했어요? 라는 질문을 받으면 이유를 설명할 수는 있지만, 막상 평소에 어떻게 일하세요? 라고 묻는 순간 당연하게 해오던 행동들을 하나씩 꺼내 말하는 게 생각보다 쉽지 않았다.
내가 일을 못해서 그런가? 라는 생각도 잠깐 했지만, 면접이 끝나고 돌아보니 그건 아니었다.
오히려 내가 너무 익숙하게 해오던 일들이라 언어로 정리해본 적이 없었던 것이다.
최근에는 기술적인 경험뿐 아니라, 협업 과정에서 어떤 판단을 했고 어떤 방식으로 소통했는지도 한 번씩 생각해보게 되는 것 같다. 컬처핏 면접은 좋은 사람인지를 평가하는 자리가 아니라, 평소 어떤 방식으로 일하는 사람인지 설명하는 자리라는 걸 이번에 가장 크게 느꼈다.
응원해요
이 글을 누군가가 볼지는 모르겠지만, 바늘구멍 같은 채용 시장에서도 자신의 자리를 만들기 위해 오늘도 달리고 있는 모든 분들이 존경스럽다.
나는 지금 이직을 준비하는 1년이 지난 지금도 서류 탈락과 면접을 겪으면서 올해는 되겠지라는 생각을 항상 하고 있다. 결과보다 과정이 더 길게 느껴지는 시간도 있었다.
그래도 하나씩 경험을 쌓고, 부족한 부분을 돌아보고, 다시 준비하다 보니 결국 좋은 결과를 만날 수 있을 것만 같은 기분이다.
이 글이 누군가에게는 나만 그런 게 아니구나라는 작은 위로가 되었으면 좋겠다.
읽어주셔서 감사합니다. :)