신입 프론트엔드 개발자의 취업 준비하기

신입 프론트엔드 개발자의 취업 준비하기

다사다난했던 석사과정 2년이 지나고, 전문연구요원으로 근무할 회사를 찾아볼 시기가 되었다. 프로젝트 경험이 많지 않은 신입 프론트엔드 개발자로서 취업 과정에서 우여곡절이 많았다. 취업 준비(일명 "취준") 기간이 생각했던 것보다 길어진 만큼 이미 기억 속에서 잊혀진 정보도 많지만, 남은 기억이나마 기록할 목적으로 이 글에 정리해둔다.

개발자의 취업 준비는 크게 5개의 준비 과정을 갖는다:

  1. 이력서 / 포트폴리오
  2. 코딩 테스트
  3. 기술 과제
  4. 기술 면접
  5. 인성 면접

이 글에서는 개별 회사의 채용 프로세스 및 면접 후기에 특정된 내용은 가급적 배제하고, 어느 정도 일반화된 준비 과정에 대해 설명하고자 한다.

이력서 및 포트폴리오

김상훈의 이력서 및 포트폴리오는 개인 웹사이트에서 확인할 수 있다: https://seiker.kr/
이력서에 첨부한 개발 관련 프로젝트 내용

이력서에는 자신의 신상명세만을 작성하는 것이 일반적인 것 같다. 내 경우, 아래와 같은 신상명세 내역과 함께 이력서의 가장 마지막 두 페이지에 개발 관련 프로젝트를 진행했던 내용을 함께 작성하였다.

  1. 관심 기술 분야 및 기술 스택
  2. 교육사항 (소위 말하는 "학력")
  3. 논문 및 전문활동 경험 (reviewer, student volunteer 등)
  4. 학외경험 (교환학생, 조교 활동 등)
  5. 수상 이력

또한, 회사가 자유 양식의 이력서를 받는다면 해당 회사에 지원한 이유를 함께 작성하여 제출하였다. 이렇게 "지원 동기"에 대한 내용을 이력서에 함께 작성해서 제출하는 것은 내가 얼마나 지원 동기를 성의있게 작성하느냐에 따라 가산점이 될 수도 있고, 감점 요소가 될 수도 있다. (이 부분에 대해서는 추후 개별 회사 면접 후기를 다룰 때 다시 언급하고자 한다)

거의 대부분의 회사들이 이력서를 필수적으로 제출하도록 하는 반면, 개발자에게 있어 포트폴리오는 필수적이지 않은 편이다. 포트폴리오를 제출하는 방법도 회사마다 각양각색이다: 포트폴리오를 별개의 파일로 받는 회사(예컨대, T사)도 있는 반면, 단순히 GitHub 주소를 요구하는 회사(예컨대, P사)도 꽤 있는 것 같다.

이력서를 준비하며 개인적으로 느낀 점

  • 이력서는 조금씩 꾸준히 작성해두는 것이 좋다고 생각한다. 막상 작성하려고 하면 내가 뭘 하고 살았는지 잘 기억나지 않는다.
  • 이력서에 기재된 내용에 대해서는 증빙 자료를 준비해두는 것이 좋다. 예컨대, 내 이력서에 수상 실적이 기록되어 있다면 상장을 스캔해서 보관해두어야 한다.
  • 개발 관련 프로젝트 경험은 기술 면접에서 좋은 이야깃거리가 된다. 간단하게라도 프로젝트 경험을 작성하자.

코딩 테스트

개인적으로, 코딩 테스트(일명 "코테")는 "수능"과도 같다고 생각한다. 코테에 자주 등장하는 빈출 유형이 여러가지가 있고(프로그래머스를 참조하자), 이러한 유형들의 문제들을 많이 풀어보면서 해법을 익히는 것이 중요하다.

코테를 넘어서, "라이브 코딩 테스트" 또한 중요성이 높아지고 있는 것 같다. 즉, 화상 면접을 진행하면서 코딩 테스트를 진행하는 것이다. 피험자는 think-aloud 하면서 알고리즘 문제를 풀어야 하고, 면접관은 피험자의 논리 및 구현 과정 등을 평가한다. (내 경우에는 L모 사 면접에서 라이브 코테를 진행했다)

나는 "코테는 평소 실력대로 보는거지 뭐~"라는 생각으로 코테 준비를 소홀히 했고, 따라서 특별히 느낀 점은 없다...

기술 과제

기술 과제는 "제시된 요구사항을 충족하는 개발 산출물을 만들어라"는 것이다. 일반적으로 GitHub에서 private repo를 만들어서 진행하며, 3-7일 정도의 시간을 주는 것 같다.

기술 과제를 진행하며 개인적으로 느낀 점

  • 어떤 과제가 주어질지 모르기 때문에, 특별히 준비할 수 있는 것은 많지 않다. 한 가지 준비할 수 있는 점이라면 밑바닥부터 빠르게 시작해서 산출물을 만들어야 하는 만큼, 본인 직군에서 프로젝트를 bootstrap하는 과정을 익혀두는 것이다. 예컨대, React를 사용하는 프론트엔드 개발자라면 CRA를 사용해서 boilerplate를 준비하고, eslint 설정 등을 추가하면 바로 기술 과제를 시작할 수 있을 것이다.
  • README.md 파일을 꼼꼼하게 작성하자. 개인적으로, 기술 과제의 README.md에는 다음과 같은 정보들이 기재되면 좋을 것 같다:
    - 프로젝트 설치 및 실행에 필요한 주요 스크립트
    - 과제 요구사항 중 구현된 내용 / 구현되지 않은 내용
    - 프로젝트 디렉터리 구조에 대한 간단한 설명
    - 과제 요구사항에 없었던 부분에 대한 decision rationale (어떤 부분에서 요구사항이 없었거나 모호했고, 나는 어떻게 구현했으며, 그 결정에는 어떤 근거가 있는지 정도)
  • 기술 과제 진행을 도와준 실무자들에게 항상 감사하는 마음을 가지자. 그들은 자기 업무와 별개로 당신의 기술 과제를 평가하고 있는 것이다.
  • 기술 과제를 진행하는 회사들끼리 일정이 겹치지 않도록 주의하자.

기술 면접

기술 면접에서 무엇을 물어보는가에 대해서는 수많은 글이 있으므로 생략하고, 프론트엔드 개발자를 준비한 나는 다음과 같은 인터넷 글을 읽으며 공부했다. 프론트엔드 직군이라 그런지, 기술 면접에서 특별히 CS 이론 지식(예컨대, 자료구조나 운영체제 등)을 질문받지는 않았다.

Web & JavaScript 관련

React 관련

기술 면접을 진행하며 개인적으로 느낀 점

두 가지의 기술 면접 접근법이 있는 것 같다: 하나는 "기술"을 중심으로 질의응답을 진행하는 것이고, 다른 하나는 "경험"을 중심으로 질의응답을 진행하는 것이다.

V사 기술면접에서는 웹 프론트엔드에 대한 전반적인 내용 중심으로 질의응답이 진행되었다. 가장 처음에는 특정한 기술에 대한 얕은 내용을 물어보고, 해당 기술에 대한 꼬리물기 질문을 이어나가는 식으로 면접을 진행했다. 다음 예시를 참고하면 이해가 빠를 것 같다:

Q1. HTTP/1.1과 HTTP/2.0의 차이에 대해 설명해주세요.
Q2. 다음으로 HTTP/3.0에 대해 설명해주세요.
Q3. 그렇다면 HTTP와 HTTPS에는 어떤 차이가 있나요?
Q4. UDP를 기반으로 하는 프로토콜에도 SSL을 적용할 수 있을까요?

P사 및 L사의 기술면접에서는 내가 이력서에 작성한 프로젝트에 대해 물어보는 얕은 질문으로 시작했다가, 점차 기술에 대한 깊이 있는 질문으로 넘어가는 식으로 질의응답이 진행되었다. P사에서의 예시는 다음과 같다:

Q1. OOO 프로젝트에 대해서 자세히 설명해주시겠어요?
Q2. Redux를 사용하셨다고 말씀해주셨는데, 왜 Redux를 썼나요?
Q3. Redux를 사용한 아키텍처의 디자인 패턴에 대해 설명해주세요.
Q4. Redux 스토어에 상태 변화가 일어났을 때, React는 어떻게 변화가 발생했음을 알게 되나요?

이런 기술 면접의 스타일은 회사 성향에 따라서, 그리고 면접관의 성향에 따라 좌우되는 만큼 양 쪽 모두에 대해서 깊게 공부할 필요가 있다.

인성 면접

앞선 단계와 달리, 인성 면접은 어느 정도 일반화된 준비 과정이 정해져 있다. 면접관들이 가장 먼저 부탁하는 1분 자기 소개 외에도, 나는 다음과 같은 예상 질문을 준비하였다.

  • 회사의 비전과 연관된 지원 동기는 무엇인가요?
  • 회사의 기술적인 도전과 연관된 지원 동기는 무엇인가요?
  • 10년 뒤의 내 모습에 대해 어떻게 생각하나요?
  • 본인이 어떤 개발자라고 생각하나요?
  • 회사에서 지원자를 뽑아야 하는 이유는 무엇인가요?
  • 남들과 다른 길을 과감히 가본 경험이 있나요?
  • 남들과 다른 내 장점 / 단점이 있나요?
  • 자신을 세 단어로 표현한다면 무엇인가요?
  • 입사 후 회사에서 무엇을 하실건가요?
  • 어려움을 극복한 사례가 있나요?
  • 일할 때 가장 중요하게 생각하는 것은 무엇인가요?
  • 본인의 궁극적인 커리어 골은 무엇인가요?
  • 다른 사람과 의견 충돌이 있으면 어떻게 해결하나요?
  • 본인이 생각하는 좋은 사람 / 나쁜 사람은 무엇인가요?
  • 본인은 스스로 일할 수 있는 사람인가요?
  • (석사과정 Only) 왜 박사과정에 진학하지 않았나요?

대체로 이 정도 선까지 준비하면 거의 대부분의 인성 면접 질문에 대답할 수 있었다. 그 외에 회사에 대해 물어보고 싶은 역질문을 하나 준비해가면 충분할 것 같다.

결론

막상 구직활동을 하는 동안에는 내 준비가 참 부족했다고 생각했다. 모든 취업 프로세스가 끝나고, 이렇게 내가 준비했던 내용을 정리하니까 생각보다 많이 준비했던 것 같다. 이 글을 읽고 취업을 준비하는 독자 분들도 희망하는 회사에 합격하기를 바란다.

다음에는 내가 취업 프로세스를 준비했거나, 진행했던 회사들에 대한 개별 후기를 작성하고자 한다. 다음 링크에서 확인할 수 있다: https://blog.seiker.kr/2021-employment-record-1-2/