[잡담] 코딩테스트에 대한 잡담

Uno·2021년 8월 1일
1

잡담

목록 보기
1/4

"코딩 테스트"

이 글자만 봐도 많은 프로그래머들은 마음의 숙제로 가다오곤 합니다.
(저요!저요!)

전 지금 코딩테스트 공부를 하는 중입니다.

공부를 하는 도중에, 단순히 기업을 통과하는 이상의 의미를 찾아보고자 부지런히 생각해보고 정리하고 있다가 글을 씁니다.

Q. 기업에서는 왜 "코딩테스트" 를 채용과정에 추가한 것일까?

먼저 멋있는 이유를 생각해보자면 다음과 같습니다.

코딩 테스트는 컴퓨터과학적 사고력을 측정할 수 있다.


코딩테스트의 문제에는 여러가지 유형이 있겠지만, 다음과 같은 단계로 구성되어 있습니다.

  • 원하는 결과값
  • 임의의 입력값
  • 입력값과 결과값의 인과관계

말이 좀 이상할 수 있는데, 제가 보기엔 이렇더라구요.

어떤 행동을 했더니 A가 나온다. 그리고 A가 나올 때, 000한 경우는 이렇게 처리한다.

그래서 결과물의 예시는 다음과 같다.
A -> A'
B -> B'
C -> C'

이렇게 동작하는 메소드를 만들어서 제출하셈.

이과정이 어찌보면 실제로 코딩할 때, 이름과 구현되는 결과물만 다르지 사고과정은 유사할 수도 있는 것 같아요.

iOS를 예시로 들자면,

  • A 컨트롤러에서 데이터를 입력받는다.
  • A 컨트롤러에서 유효성 검사를 마치고, 그 중 사용자가 클릭한 버튼에 해당하는 순서를 인식하고 그 순서에 맞는 데이터를 B 컨트롤러에 전달한다.
  • B 컨트롤러에서는 전달받은 값을 바탕으로 연산을 한 후 UI로 구성한다.

물론! 실제 구현에 훨씬 단순하겠죠. 그리고 사용할 도구들도 많고 참고할 자료들도 많이 있습니다.

다만 여러가지 문제들을 추상화 시킨 것이 코딩테스트의 문제이고, 이를 잘 해결하는 사람이 확률적으로 볼 때, 구현도 잘한다고 판단할 수 있겠죠.

이제 조금 어두운 이유를 생각해보자면, 이럴 것 같습니다.

채용의 근거로 삼기 아주 용이하다.


인사과도 돈을 받고 일하는 근로자입니다. 그들도 한 명 한 명을 채용할 때, 채용의 근거를 들고 그 근거가 합리적이여야 합니다.

프로그래머들을 어떤 수단으로 수치화 할 수 있을까요?

프로젝트의 개수나 퀄리티로 보면 되잖아요!

네 맞습니다. 그런데 그 많은 지원자를 언제 다보고 있죠?

그리고 프로젝트의 개수나 퀄리티는 주관적인 요소입니다. 누군가는 단순한 걸 보고 베스트라고 할 것이고, 다양한 것을 보고 지저분하다고 합니다.

또 다른 누군가는 단순한걸 보고 도전적이지 않다고 할 것이고 다양한 것을 보고 도전적이라고 판단할 것 입니다.

이 또한 수치화하기 어렵죠.

그래서 저는 프로그래머들을 하나의 용이한 기준으로 선별하기 위해서 "코딩테스트" 가 뽑을 이유가 있는 과정이 아니라 거를 이유가 있는 과정으로 1차 테스트로 넣었다고 생각했습니다.

코딩테스트를 도입한 이유를 아무리 아름다운 이름으로 포장해도 저는 믿기 어렵습니다.

코딩테스트는 채용과정은 아무리 좋은 이유를 가져다가 붙여도, 이상합니다.

애초에 이상하잖아요.

특정 문제를 억지로 만들어서 해결하는 메소드 하나를 만들고 콘솔로 결과보고 통과여부만 판단하는 것보다,

해당 문제를 앱이나 다른 서비스로 만들어서 제공하는게

경험의 관점에서도 좋고, 수익의 관점에서도 좋다고 보거든요.

그러면 코딩테스트를 하면 안되냐?

아닙니다. 코딩테스트에 대해서 비판적으로 이야기했지만,

저는 코딩테스트를 도입하는건 적극 찬성인 입장입니다.
(뭐??? 여태 한소린 뭐야)

왜냐하면,

최고의 선택은 아니지만 최선의 선택이라고 생각하기 때문입니다.

코딩테스트를 통해서 점검하는 것이 무결점의 완벽한 과정은 아닙니다.

하지만 현재 있는 방법 중 가장 합리적인 방법이라고 봅니다.

만약 코딩테스트 말고 다른 걸 본다고하면 어떤걸 볼 건가요?

오히려, 더 납득할 수 없는 테스트가 생길 확률이 높습니다.

많은 대기업들이 "인적성"시험이 있습니다.

인적성시험을 왜 보느냐고 매번 이야기하죠.

그런데 인적성 시험이 아니라 만약에 쌀포대 옮기기 시험이면 납득하시겠나요?

현재상황에서 많은 사람들 필터링할 수 있는 좋은 테스트가 없어서 진행하고 있는 것이죠.

그래서 저는 현재 시험체제를 욕하기 보다는, 오늘날의 최선을 믿고 나아가되 내일의 최선을 잊지는 말자! 정도로 마무리하고 코딩테스트를 대비하고 있습니다.

TMI


이 글을 쓴 이유가, 코딩테스트 공부하다가 너무 어려워 멘탈이 춤을춰서 작성했습니다.ㅠㅠ

하나하나의 문제푸는 건 수리영역(지금은 수학인가요?) 푸는 것 같아서 재밌는데, 따로 공부해야만 풀 수 있는 문제들도 많이 있더라구요.

후.. 공부한 것들 정리되면 글로 정리해서 올리겠습니다!

profile
iOS & Flutter

0개의 댓글