코딩테스트는 곧 사라질 것




코딩테스트는 사라질 것!



1. 발단

물론, 완전히 사라지지는 않을 것 입니다. 코딩테스트가 필요한 직종이 있을테니까요. 현재, 코딩테스트는 '당신이 얼마나 코딩을 잘하느냐?' 를 보는 것이 아니라 '당신이 코딩을 얼마나 못하지 않느냐?' 를 보는 것입니다. 때문에, 올바르게 풀어야 함이라기 보다, 몰라도 어떻게 접근을 하는지도 중요합니다.

근데 코딩테스트 자체가 제한된 시간에 압박감을 가지고 풀어야 합니다. 그런 환경에 노출되지 않아 본 사람들은 처음 보는 문제가 나오면 건드릴 수도 없을 것 입니다. 개발자들이 말하는 '뇌 코딩'... 우린 사우나 안에서도, 변기에 앉아서도 이걸 할 수 있죠. ㅎㅎ 뇌 코딩 스킬(?)을 잘 쓰시는 분들이 코딩을 못하시냐? 아닙니다. 엄청 잘하셔요. 근데 뇌 코딩할 시간이 필요하지요. 그런 분들이 코딩테스트의 목적 중 하나인 '폭탄 제거'의 희생양이 종종 되곤 하십니다.

그런데... 고용주는 특히 스타트업에 이제 갓 시작한 회사들은 창의적인 사람이 필요하지 않은가요? 좀 더 독창적이고, 소위 말하는 '고인물' 들이 해내려면 돈을 쏟아 붓는 일을 좀 더 '스마트' 하게 해결 하는 그런 사람을 원하지 않나요?

물론, 그럴 것 입니다. 스타트업 뿐 아니라 모두가 동일하게 생각하는 점이에요.

"그래서.. 코딩 테스트가 .. 창의적이냐..?".. 전혀요.



2. 그래서, 코딩테스트가 뭐죠?

그냥 말그대로 코딩테스트 입니다. 꽤 방대한 범위에서 출제가 되고, 대표적인 알고리즘들에 관련해서 출제가 됩니다. 물론 CS관련 질문들도 나올 수 있고요. 객관식도, 코딩을 해야 하는 것도, 서술형도 나올 수 있습니다. 한마디로 너가 얼만큼 알아? 테스트 입니다.

대표적인 코딩 테스트 예제를 풀 수 있는 사이트(프로그래머스, 백준 온라인 저지)


3. 왜 창의적이지 않지?

직접 코딩테스트 문제를 만드는 회사가 얼마나 될까요? 그걸 만들 시간도 없거니와, 그걸 만들만한 추가 인력도 없을 거에요. 이미 RemoteInterview, HackerRank, Programmers 등 코테를 보는 플랫폼에 문제들은 대부분 노출 되어 있습니다. 문제 은행식으로 돌아가죠. 물론, 직접 만드는 회사들도 있습니다!

이 코딩테스트의 당락이, 이 문제를 풀어본 경험이 있느냐, 없느냐가 더 많이 좌우해요. 당신이 창의적인지 어떤지 보다는.. 그래서 훈련을 해야 합니다. 이게 아무리 좋지 않다고 생각해도 우리는 입사 후 내 능력을 보여줄 기회를 가지기 위해... 훈련을 해야 합니다.

그리고 대체 프론트엔드 개발자를 뽑으면서 그래프 알고리즘 시험은 왜 보는 걸까요? 때 되면 다른 포지션으로 쓰려는 걸까요? 쓰잘때기 없는 공부를 왜 시킬까요?(어떤 기업..)



4. 외국은 어떤가요?

코딩테스트가 있습니다. 근데 코딩테스트를 보는 기업이 기술테스트를 보는 회사 보다 적습니다. 기술테스트는 시험문제가 프로젝트 입니다. 제가 독일계 회사 기술테스트를 볼때 문제 입니다. 온라인 게임 업계에서 알아주는 회사입니다.

  • 우리는 당신에게 10개의 JSON 파일을 줄 것입니다.
  • Django와 RabbitMQ 그리고 pica 라이브러리를 사용해서 메세지를 큐에넣고 빼면서 DB에 저장하세요. 어떤 DB를 사용하셔도 상관없습니다.
  • API나 웹사이트를 통해서 DB에서 조회된 JSON파일을 출력해주세요.
  • 이 때, Django와 RabbitMQ는 Docker-Compose 설정으로 컨테이너화 해주세요.

우리는 당신의 시간이 소중하다는 것을 알고 있습니다.
그래서 각 아래 항목 1개당 가산점을 드릴 것입니다.
  • RabbitMQ 익셉션 핸들링 해주세요.(Disconnection 등)
  • Python Logging을 이용하여 로깅을 해주세요.
  • API 데이터를 ElasticSearch를 이용해서 제공해주세요.
  • 만약 JSON 안에 'id'가 같다면 더 최신 것으로 Merge 해주세요.


그리고 10일을 주었습니다. 6시간만에 끝났지만요. 2차 면접때 물어보았습니다.

'코테 왜 안봐요?'

'시간 낭비.. 어짜피 수습기간동안 빡세게 지켜볼 것.'


아.. 라인이 이제 코테 안보는 모양이던데요? 위랑 비슷한 기술테스트를 하는 것 같았습니다.



5. 화이트보드 코딩 테스트

사실 화이트보드 코딩 테스트는 엄청 어려운 문제를 내기가 쉽지 않습니다. 보는 사람도 힘들고... 쓰는 사람들도 힘들고... 그래서 기본적인 코딩스타일과 문제 해결 방법을 살펴보는 방법으로는 좋은 것 같아요. 화이트보드 코딩 테스트로 사람을 고르는 방법이 더 좋은것 같기도 합니다.

저도 코딩테스트 참 많이 보았는데요. QuickSort나 MergeSort 문제도 종종 나옵니다. 아니 그냥 할 줄 아는 Sorting 함수를 하나 짜보라고요 해요.  근데 현존하는 가장 빠른 정렬방법은 TimSort 입니다. 아래, 시간 복잡도를 볼까요?

TimSortQuickSortMergeSort
O(n) - BestO(n) - BestO(n log n) - Best
O(n log n) - AverageO(n log n) - Average
O(n log n) - Average
O(n log n) - Worst
O(n^2) - Worst
O(n log n) - Worst


TimSort는 파이썬의 기본 내장 소팅 방법입니다. Java도 JDK에 내장 되어 있어 편하게 쓸 수 있습니다. 코테에는 나오는 주제지만, 안타깝게도.. 우린 실생활에 QuickSort를 안써요...



6. 앞으로는 어떻게 될까?


  • 실제 프로젝트를 던저주고 오류를 찾거나 개선을 시켜달라고 하지 않을까요?
  • 아니면 더미 프로젝트를 만들어 보라고 하던지..
  • 아니면 코딩 테스트를 안보거나..
  • 아니면 지금처럼 그냥 보던지..

하지 않을까요?


시대가 시대인만큼 알고리즘 풀이를 블로그에 적어보고 싶은데.. 심적인 딜레마가 좀 있습니다만, 종종 적어 보겠습니다. DP(Dynamic Programming) 같은 경우엔 코딩실력보다 임기응변 또는 두뇌회전이 많이 좌우해서 한번씩은 봐줘야 해요. 실제 코테 볼려면..

다시 본론으로 돌아가서, 지금도 위 방법처럼 입사 스크리닝을 하고 있지만, 추 후 코테의 비율이 크게 줄 것으로 예상합니다. 중요한건 코테를 보고 안보고, 더미 프로젝트를 하고 안하고가 아니라, 실제 합격하고 입사해 봤자 입사해서 공부안하면 금방 뒤쳐집니다. 거기가 끝이 아니라 시작이라는 것을 잘 모르시더라고요? ㅎㅎ 우리 모두 공부합니다. ^^;;


  • [[a.original_name]] ([[a.file_size | fileSizer]])
좋아요[[ postLike | likePlus ]]
공유
라이언

“Lead Python Engineer”

댓글 [[totalCommentCount]]
[[ comment.author__nick_name ]] [[ comment.datetime_updated | formatDate]] (수정됨)

[블라인드 처리된 글 입니다.]

답장
[[ sub.author__nick_name ]] [[ sub.datetime_created | formatDate ]] (수정됨)

취소
댓글을 남겨주세요.
'데브옵스' 관련 최신 포스트
[[ post.title ]]
[[ post.datetime_published_from | DateOnly ]]