테크리드 오답노트

코딩 테스트에 대하여

dxnlab 2026. 9. 16. 19:49

개인적으로 코딩테스트 신뢰하지 않습니다. 웬만하면 잘 안 하려고 합니다. 딱 한 번, 코딩테스트와 코딩 과제 후에 심층면접을 해 본 적이 있는데, 결과가 판이하게 다르게 나와서 어리둥절한 적이 있습니다. 심지어 인터넷 사용도 불가한 현장 코딩테스트였는데, 왜 코딩테스트에서 맞춘 비슷한 문제를 검색도 가능한 일주일짜리 과제에서는 못 풀지?

 

코딩테스트 그 자체가 잘못되었다는 이야기는 아닙니다. 제한적으로 기초 실력을 확인하는 차원에서는 의미가 있다고 봅니다. 따라서 낮은 난이도로 / 긴 시간을 주고 / 절대평가로 pass, fail을 판별한다면 의미가 있다고 봅니다. 이 경우 fail 비율은 상당히 낮겠지만.

그런데 이 테스트를 막연한 시험으로 받아들이면, 높은 난이도로 시간 계산 안 하고 득점 순서로 자르게 됩니다. 제출 코드 내용을 일일이 리뷰할 것이 아니라면 그런 점수 랭킹은 지원자에게 제발 속여 달라고 비는 꼴입니다.

일단 코딩테스트 자체가 현업 실무와는 크게 동떨어져 있을 수 밖에 없습니다. 제한적인 환경에서 풀 수 있는 문제를 내려면 그럴 수 밖에요. 그리고 시험을 내는 사람들이 그 문제를 안 풀어 봅니다. 출제자 입장으로 코딩 과제/테스트를 내는 경우라면 직접 한 두 가지 조건으로 풀어본 후에, 기술적 미숙함 페널티 (x2~3)와 제한 시간의 부담 및 기타 변수(x1.5~2)를 감안해서 최소 4배 시간을 산정합니다. 이 기준을 적용하면 낼 수 있는 문제는 대단히 줄어듭니다. 웬만한 문제 두어개 섞으면 총 시간이 8시간 쯤 될 걸요?

지원자 입장으로 비슷한 형식의 과제/테스트를 접했을 때 시간 제한 편향을 고려하는 곳은 딱 한 군데 봤습니다. A모 사라고, 5 문제 과제 1주 주더군요. 대략 1 업무일 분량 정도 됐습니다.

앞서 지식/학습의 관점에서 풀었던 이야기와 비슷합니다. 실무 수행을 위한 최소 지식 수준을 보려 한다면, 웬만하면 pass할 수 있는 정도의 가벼운 테스트가 되어야 합니다. 그렇지 않다면 최소한 제출 답안을 일일이 뜯어 봐야 하는데 그 보다는 차라리 지원자의 github repo를 뜯어 보는게 훨씬 현업 실무에 가깝습니다.

세간에서 코딩테스트를 잘 푸는 일종의 방식? 패턴이 있다고 하는데 그런 부분은 관심도 없고 잘 모르겠습니다. 다만 그 패턴을 잘 숙지하는게 실무에 필요한 스킬 레벨과 별 상관이 없을 거라 확신합니다. 객체 디자인 패턴OOP Design Pattern도 안티패턴Anti-Pattern 소리 나온지 10년이 훌쩍 넘는 세대가 무슨.

문제를 패턴화하면, 그 패턴에 최적화되는 답안을 만들어내는 공식이 발달합니다. 단순히 점수로만 줄을 세운다면 현실 문제/실력과 무관하게 최적화 공식에만 맞춘 훈련으로 속이기 쉽습니다. 문제를 이해해서 푸는게 아니라, 공식과 답만 외우는 편이 훨씬 효율적이란 이야기 입니다. 명백하게 잘못된 인센티브 설계입니다. 지금까지 수 많은 공식 시험들이 입증한 사실 아닙니까?

그 대신으로 썼던 방법은 구술 의사코드Psedo code 코딩 인터뷰, 개인 포트폴리오 (github repo 같은) 리뷰입니다. 코드 과제를 제출한 적도 있는데 이 경우 제한 시간은 보통 일주일 정도로 합니다.

인터넷 보고 베끼면 어떻게 합니까? 당연히 인터넷 찾아 보고 풀어야 합니다. 그만한 난이도로 출제하구요 (검색 포함 0.5~1 업무일 분량 정도). 사무실에 네트워크 끊어 놓고 업무하나요? 게다가 코드 과제는 풀어 냈으니 끝, 이 아니라 당연히 리뷰와 심층 면접으로 이어져야 합니다. 생각 없이 베꼈다면 심층 면접에서 절대 통과 못합니다.

 

해서 공채라는 포맷 자체를 싫어합니다. 최근까지 3년 정도 공채 면접을 들어갔는데, 매 해 20–40명 수준으로 (분석/개발 부문을 다 봐서…) 1, 2차 면접을 보고 과제와 평가를 했습니다. 뭐, 개인적으로는 여러 에피소드들이 있습니다, 마는.

그래서 준비 시간은? 대략 1차 면접 전에 꼬박 3–5일 (업무시간 기준으로 30시간 내외) 정도는 면접 준비에 들어가는 것 같습니다. 서류 확인/평가, 관련 자료 검색/탐색 및 검토, 예상 성향, 확인 질문지 마련을 했습니다.

과제/코딩테스트가 있는 경우에는 출제에 1–2일 정도 (20시간 내외) 들였던 것 같습니다. 문제를 만들어 보고, 풀어보고, 레벨/난이도 조정하고, 관련 자료 검색해서 인터넷 레퍼런스 확인합니다. 코딩테스트 플랫폼도 써 봤는데, 문제 검색하고 풀어보려면 시간 소모가 크게 줄지 않습니다.

그리고 제출 답안 코드는 전부 읽어보고 특이 사항이 있는 경우 심층 면접 질문으로 넣습니다. 이 단계까지 오면 4배수 이하이기 때문에 10명 미만인데, 이 작업이 또 1일 정도 걸립니다. 그리고 2차 면접을 보면 최종 평가만 남습니다.

여기까지 대략 총 1.5개월 진행되는 공채 과정 도중에 최소 1.5주 이상의 업무 시간을 꼬박 투입한다는 계산입니다. 이것도 혼자 들어 가는게 아니고, 후반기에는 팀원 1–2명이 같이 들어갑니다. 수시 채용이라면 분량/강도만 줄어들지 투입되는 단위 시간은 엇비슷 합니다.

 

다시 말씀 드리지만, 결혼 — 동료로 맞이하기까지 — 그 사람을 알아 볼 수 있는 기회는 서류, 소개팅(1차 면접)과 애프터(2차 면접) 정도의 몇 번에 불과합니다. 이 정도 리소스 투입은 최소한의 정성이라 생각합니다. 시간을 쓰고 노력을 해도 장담할 수 없는 일인데, 겨우 이 정도 시간과 노력, 고민과 정성도 없이 무슨 자격으로 딱 맞는 인재를 바라겠습니까. 이 방법에 자신이 있어서가 아니라, 그만한 시간x인력 비용도 지불하지 못하겠다면, 그냥 사주를 보세요. 랜덤도 나쁘지 않아요. 진심으로.