코딩테스트 스터디를 운영하려는 분들이라면 이미 어떤 준비를 해야 하는지 대략적으로 알고 계실겁니다.
하지만 이후 운영에 필요한 상황 설명 등을 위해 조금 더 자세히 설명하고, 나름대로 단계를 나눠 설명하려 합니다.
미리 한 문장으로 요약하자면, 최근의 코딩테스트는 개발자 전용 토익 시험 정도의 역할을 하는 것 같습니다.
최근 들어 코딩테스트는 개발자 채용 프로세스의 필수 과정처럼 취급되고 있습니다. 이전에는 신입, 특히 블라인드 채용처럼(원래 블라인드 채용의 의미는 이런게 아니지만, 카카오 블라인드 채용 등의 예시가 너무 유명하여, 이런 식으로 표현합니다.) 특별한 실력자들을 찾기 위해 진행되었다면, 이제는 경력도 코딩테스트 이후 면접 일정이 잡히는 등, 개발자 채용의 새로운 통과의례처럼 진행되고 있습니다.
이전 개발자 채용 프로세스를 들어보면, 지금처럼 체계화된 플랫폼을 사용하는 방식은 아니었지만, 간접적으로 코딩테스트 비슷한 것을 진행한 것으로 알고 있습니다. (면접때 화이트보드 등을 통해 간단한 코딩 과정에 대한 인터뷰 등)
왜 이렇게 코딩테스트가 새로운 통과의례가 되었는지에 대한 제 생각은 다음과 같습니다.
- IT 산업의 수요 증가와 함께, 고급 개발자 채용에 대한 수요가 높아짐.
- 고급 개발자 채용을 위해 처우 개선, 매력적인 조건 등을 제시하며 개발자 직무에 대한 공급이 늘어나기 시작함.
- 상대적으로 낮은 진입장벽, 유연한 근무 환경, 최근 개선된 매력적인 급여 등으로 비전공자의 IT업계 진입 시도가 증가함.
- 입사 지원자가 늘어남에 따라, 효율적으로 실력있는 개발자를 찾고 싶고, 기초가 모자란 사람들을 필터링하고자 함.
- 프로그래밍 능력 검증, 코딩스타일 참고 가능, 실력에 따른 차이가 명확함, 자동화 가능 등의 사유로 코딩테스트가 실시됨.
결국 블라인드 채용 등의 난이도 있는 코딩테스트로 실력자를 찾거나, 기초적인 코딩테스트로 자격미달의 개발자를 걸러내려는 용도라고 생각합니다. 물론 코딩테스트만으로 자격미달을 판단할 순 없다 생각하지만, 기업 입장에서 최소한의 비용으로 채용 프로세스의 자원을 줄이기 위해 사용한 전략이라 생각합니다.
위 내용을 종합해서, 제 의견은 블라인드 채용을 준비하는 것이 아니라면, 코딩테스트를 통해 확인하고자 하는 기준만 통과해도 충분하다 생각합니다. 게다가 이 기준은 각 기업이나 채용 프로세스마다 달라서 주어진 문제를 일부만 맞춰도 통과되는 경우도 있습니다.
저는 코딩테스트를 위한 문제/실력 레벨을 아래와 같이 분류합니다.
- 프로그래밍 언어의 기초적인 사용, 프로그래밍 실습 단계
문제 난이도: 백준(solved.ac) 브론즈 급, 프로그래머스는 해당 난이도 문제 없음 - 기초적인 자료구조 등을 이해하고 활용할 수 있는 단계
문제 난이도: 백준(solved.ac) 실버 5 ~ 실버 2 정도, 프로그래머스 Level 1 ~ Level 2 - 간단한 알고리즘 등을 활용하여 주어진 문제 상황을 이해하고 구현할 수 있는 단계
문제 난이도: 백준(solved.ac) 실버 2 ~ 골드 3 정도, 프로그래머스 Level 2 ~ Level 3 - 주어진 문제의 조건이 복잡하거나 까다로워, 간단한 알고리즘으로는 해결할 수 없는 단계
문제 난이도: 백준(solved.ac) 골드 4 ~ 플레티넘 5 정도, 프로그래머스 Level 3 ~ Level 4 - 복잡한 알고리즘 등을 제안, 활용하는 취미/학술 수준의 단계
문제 난이도: 이전 단계 이상 난이도의 문제들
앞에서 말한 블라인드 채용 정도면 4단계, 일반적인 채용의 코딩테스트는 2~3단계 정도 난이도의 문제가 나오는 것 같습니다.
1단계 수준을 준비 중인 분들은 독학으로도 충분히 극복할 수 있을 것이라 생각합니다. 5단계 분들은 이미 코딩테스트 걱정 안하셔도 될 분들이라 언급하지 않겠습니다.