흔한 개발자의 첫번째 이직 성공기 - 2

지난 시간 이력서를 작성하고 채용공고를 확인해서 지원하는 것까지 정리해봤다(자세한 것은 이전 포스팅 참고). 이력서에서 내가 어떤 사람인지 어떤 경험을 가지고 있는지 정리해놓고, 채용공고를 확인하면 은근히 지원할 곳이 많지 않다. 대부분 특정한 스펙이나 스킬셋을 요구하거나 특정 경력 이상을 요구한다. 경력자를 뽑는 곳에서는 당장 와서 일해줄 사람을 구하는거나 다름이 없으니, 아무 관련없는 경력을 가지고 지원을 하면 뽑히기 어렵다. 그렇게 내가 필요한 곳이며, 내가 가고자 하는 과 같은 회사를 잘 골라서 지원을 했다면 슬슬 서류 합격 소식이 들려올 것이다. 이제 본격적으로 합격하기 위한 관문을 통과하는 과정을 알아보자.

코딩 테스트

대부분의 개발자 채용은 서류 합격 이후, 혹은 서류와 함께 코딩 테스트를 요구한다. 그만큼 코딩 테스트는 개발자 취업에 있어서 필수적이다. 코딩 테스트는 왠만하면 온라인으로 진행되며 별도의 코딩 테스트 사이트(코딜리티, 해커랭크, 프로그래머스)를 통해서 이뤄진다. 방금 언급한 사이트들은 무료로 알고리즘 문제들을 연습해볼 수 있고, 인터뷰 킷 같은 것이 제공되는 경우도 있으니 필히 실제 코딩 테스트 전에 연습하도록 하자.

나의 수준은 코딩 테스트 사이트를 통해 몇 개 풀어본 정도였고, 그 상태로 코딩 테스트를 본 결과는 처참했다. 총 5번에 코딩 테스트에 도전했고 그 중 1군데만 합격했다. 앞에 4군데 코딩 테스트를 하면서 실전 연습을 한 것이라고 긍정적으로 생각을 하고 싶지만 부끄러운 것이 사실이다. 당연한 얘기지만 나와 같은 코딩 하수들은 시간을 두고 충분히 연습해야한다.

보통 테스트는 3~4 시간동안 진행되며 3~4 문제를 풀어햐 한다. 대부분의 테스트들은 일단 시작하면 멈출 수 없으니 주의하자! 또한 테스트 사이트마다 진행 방식이 다를 수 있으니 테스트 시작 전에 미리 해당 사이트의 다른 문제를 풀어보거나 테스트에서 제공되는 튜토리얼을 미리 진행해보는게 좋다. 나는 실제 테스트에서 진행방식을 숙지하지 않아서 크게 낭패를 본 적이 있다. 각각의 문제를 풀고 따로 제출하는 방식이었는데, 제출한 이후에 수정이 가능할 줄 알고 완성하지 않은 코드를 제출해버린 것이다. 당연히 그 시험에서는 탈락했다. 나처럼 바보 같은 짓은 하지 않길 바란다.

코딩 테스트에서 언어를 미리 지정해주지 않는 이상 언어 선택은 자유이다. 꽤 많은 언어들이 지원되며, 각자가 편하고 익숙한 언어로 선택하면 된다. 물론 자바 개발자를 뽑는 과정에서는 자바 언어를 사용하는 것이 좋을 듯 하다. 나는 파이썬을 선택했다. 파이썬을 선택한 가장 큰 이유는 코딩 테스트처럼 간단한 문제를 풀기에 간단하고 빠르게 코딩을 할 수 있다는 점이었다. 자바와 같은 언어를 사용하다보면 타입을 신경쓰다가 시간을 뺏길 수 있다고 생각했다(물론 나같은 하수의 기준이다ㅎㅎ).

코딩 테스트의 한 가지 팁을 주자면, IDE 를 적극 활용하라는 것이다. 심지어 몇몇 테스트 사이트에서는 IDE 를 활용하라는 안내를 주기도 한다. IDE 를 활용하면 자동 완성으로 빠르게 코딩을 할 수 있고 디버깅이 가능하다(눈디버깅은 이제 그만…). 또한 미리 연습하면서 특수한 자료 구조 같은 것들이나 알고리즘들을 미리 정의해두면 실제 테스트에서 참고할 수 있다. 부수적인 것들은 IDE 에 맞기고 알고리즘과 문제 해결에 집중하자.

코딩 테스트 문제들을 보면 대부분 초반의 문제들은 난이도가 낮고, 후반의 문제들일수록 난이도가 높다. 난이도가 높다는 것은 예외 케이스가 있거나 특정 시간 제한이 있어 그 시간 내에 동작이 완료되어야 한다. 예외 케이스는 문제를 잘 읽고 예외가 생길 수 있는 경우를 파악하고 사이트의 도구나 IDE 를 활용하여 테스트를 진행하면 좋다. 예외 케이스 같은 경우에는 천천히 생각해보면 생각보다 쉽게 파악할 수 있다. 하지만 시간 제한이 있는 경우가 사실 가장 까다로운 경우인데 특별한 아이디어(트릭)알고리즘으로 시간복잡도를 줄이는 능력이 필요하다.

정리하자면 다음과 같다.

  • 코딩 테스트는 왠만하면 온라인으로 진행되며, 별도의 코딩 테스트 사이트(코딜리티, 해커랭크, 프로그래머스)를 통해서 이뤄진다.
  • 그냥 코딩이 아닌 시간 제한이 있는 것이 코딩 테스트이다. 연습, 공부하자!
  • 코딩 테스트 방식은 미리 숙지하는 것이 좋다.
  • 코딩 테스트에서 사용할 언어빠르고 간단하게 코딩할 수 있는 것이 좋다.
  • IDE 를 적극 활용하라.
  • 예외 케이스시간 제한이 있는 문제는 어려우니 더 많은 연습이 필요하다!

이제 다음 포스트를 마지막으로 이직 성공기를 마무리하려 한다. 마지막 포스트에서는 대망의 인터뷰에 대한 기록을 정리해보겠다.