잡담

코딩테스트 준비를 해야되는 이유 (코테준비를 꼭 해야만 할까?)

jinmc 2022. 1. 22. 02:14
반응형

요즘 거의 1일 1영상이라고 할 정도로 열심히 코딩테스트 영상을 찍고 있습니다. (채널명 : codingJim)

리트코드를 한 문제씩 풀고, 푸는 영상을 유튜브에 올리고 있습니다.

조회수는 거의 처참할 정도로 안나오긴 하지만, 올리는 자체에 재미를 들린 것 같습니다.

가장 큰 이유로는, 물론 문제들을 풀면서 올리면 제가 가장 크게 느는 걸 느끼기도 하지만, 

오프라인 스터디를 하면서 스터디를 같이 하는 팀원들에게 제가 링크를 줌으로써 일일히 설명해 주지 않아도 된다는점이 

좋다고 느껴졌습니다.

 

근데 코테스터디를 하면서 코테를 과연 해야되나? 라고 물어보는 사람들이 많아서, 

또 필요성을 딱히 느끼지 못하는 사람들이 많아서 코딩은 잘하고 싶지만, 코테는 할 필요성을 못느낀다거나,

실력이 부족하다고 생각해서 다음에 할게요 라고 말하는 사람들이 많습니다.

 

저는 그럴 때마다, 별 말 없이, 알았어요

뭐 굳이 할 필요 없죠 라는 말로 딱히 잡지 않았습니다. 

물론 하고 싶은 말은 많았지만, 그 사람들에게 그 말을 해줘 봤자 들을지도 모르겠고, 또 그렇게 말하는 게 좀 주제 넘다고 생각하기도 했기 때문입니다.

또, 코딩테스트 실력이라는게 그렇게 쉽게 늘지 않기 때문에, 몇주 만에 늘기는 힘들고

몇 달 만에 늘기는 힘들수도 있다고 생각합니다. 

저도 실제로 몇 년간 꾸준히 노력해서 지금 이정도 하는 거구요.

 

본론으로 들어가서, 코테준비를 해야되는가? 라고 물어보면, 

굳이 할 필요 없습니다. 라고 단적으로 얘기할 수 있을 것 같습니다.

제가 지금까지 한국에서 봤던 인터뷰에서 코딩테스트를 물어봤던 건, 반이 채 되지 않고, 

심지어 지금 직장에서도, 대기업 면접에서도 코딩테스트를 물어보지 않았습니다.

심지어 보는 직장에서도, 코딩테스트 수준이 그렇게 높지는 않았던 걸로 생각됩니다. 

카카오 네이버 공채 시험은 진짜 어렵고 시간이 오래걸리고, 문제가 좀 꼬아놓은 문제가 많아서 짜증났던 기억이 있지만,

보통 대부분 봤던 코딩테스트의 70프로 정도는 상당히 쉽게 풀수 있었던 것 같습니다.

 

그럼 왜 이렇게 코테공부를 열심히 하냐? 라고 물어보면,

몇 가지 이유가 있다고 생각합니다.

 

첫번째 이유로는, 

외국계 기업의 경우, IT 개발자로 채용 프로세스를 밟을 경우 거의 무조건 코딩테스트를 봅니다.

구글, 마이크로소프트, 아마존 등 많은 기업들에서 1차, 2차를 넘어 5차까지 보는 경우도 흔하다고 합니다. 

그래서 이런 외국계 기업을 노리는 경우, 코딩테스트는 무조건 넘어야 할 관문입니다.

그럼 한국 살면서 한국 기업 다니면 굳이 할 필요 없겠네? 네이버나 카카오 가지 않으면? 이라고 생각할 수 있는데,

요즘 한국 기업들도 코딩 테스트를 점점 도입하는 추세이긴 합니다. 아까 말했듯이 아직 그렇지 않은 경우도 많지만요.

 

하지만 제가 코테를 공부하는 이유는 첫번째 이유 뿐만이 아닙니다.

물론 미국 구글이나 아마존에서 일하면 좋겠지만, 이제 그 꿈은 좀 내려놓은 상태이고, 

한국에서 사는것도 나쁘지 않다고 생각합니다.

제가 코테를 준비하는 이유는 사실 두번째 이유가 더 큰 것 같습니다.

 

두번째 이유로는, 

코테를 준비하는 자체로 코딩 실력이 는다고 생각하기 때문입니다.

어떻게 보면, 코테라는 건 가장 쉬우면서도 어려운 프로그래밍이라고 생각합니다. 

코테를 한번 본 사람이면 어렵다는 게 무슨 의미인지 잘 이해할 겁니다. 

막 Syntax 기억 안나고, 머리속이 하얘지고, 토할꺼 같은 경험을 해보신 분들도 많을 겁니다.

하지만 그 시기가 지나고 나면, 알고리즘을 코드를 통해서 자유자재로 구현해 낼 수 있는 단계가 옵니다.

이 정도 수준이 되면, 언어에 국한되지 않고, 알고리즘에만 집중하게 됩니다.

언어는 Syntax 차이에 불과하다는 걸 깨닫게 되죠.

언어에 대한 이해도 덩달아 늘게 됩니다. 

만약 파이썬으로 코드를 짜게 되고, 다른 사람들이 푼 코드를 보면서, 새로운 언어의 활용방식이나 

새로운 syntax를 발견하게 될 수도 있습니다. 

Python의 예를 들면, 다른 사람들의 코드에서 Pythonic한 방법이 어떤것이고, 그 활용방법을 배울 수 있습니다.

 

제가 가장 쉬운 프로그래밍이라고 말한 것은, 

코딩테스트만큼 단시간에 여러가지 syntax를 사용하고, 여러가지 알고리즘이나 프로그래밍 구현 능력을 

보여주는 수단이 없다고 생각하기 때문입니다.

코딩이 어려운 이유가 뭘까요? 코딩이 어려운 이유는 프로그래밍적인 사고방식이 일반인들이 갖추기 힘들기 때문입니다.

코딩테스트는 그 프로그래밍적인 사고방식을 갖추고 있는지 가장 단시간에 보여줄 수 있는 수단입니다.

왜냐면 한정된 시간 내에 웹 어플리케이션이나 프로그램을 만들 수는 없기 때문입니다.

개인적으로 좋은 프로그래머는 무조건 코딩테스트를 잘한다고 생각하지는 않습니다.

하지만 코딩테스트를 잘하는 프로그래머는 기본적인 프로그래밍적 사고방식이 좋은 프로그래머라고 생각합니다.

그러기 때문에 프로그래밍을 가장 빨리 느는 방식은 역설적으로, 코딩테스트 실력을 늘리는 것이라고도 생각합니다.

코딩테스트를 공부하면서 컴퓨터과학에서 중요한 개념들인 자료구조나, Big O 개념 등을 쉽게 터득할 수 있기 때문입니다.

그리고 이것들을 아는 것은 프로그래밍에 있어서 무척이나 중요합니다.

 

저도 예전에 프로그래밍을 처음 시작하고 한동안 코딩테스트 공부를 해야된다는 것을 알았지만, 

의도적으로 기피했습니다. 

그 이유로는, 한정된 시간에서, 코딩테스트만 잘하는 개발자가 되기보다는, 

실질적인 코딩을 잘하는 개발자 (즉, 실무를 잘하는 개발자)가 되고 싶었기 때문입니다.

하지만 생각해보면, 아무리 실무 경험이 많다고 해도, 인터뷰 과정에서 이를 보여주는 건 쉽지 않습니다.

오히려 더 암기식 인터뷰가 될 가능성이 높습니다. (interface vs abstrac class), GIL이 뭐냐 등...

과연 이런 암기식 인터뷰를 잘하는 개발자가 좋은 개발자라고 할 수 있을까요? 

 

물론 모든 개발자가 다 코테공부를 해야된다고 생각하지는 않습니다.

일례로, 머신러닝 쪽 개발자의 경우에는 코딩보다 머신러닝 지식이 더 중요할 수도 있고,

cloud engineer의 경우 어떤 인프라를 다뤘는지가 더 중요할수도 있겠죠(도커라든지).

게다가, 예전에 제가 그랬듯이, 코테공부보다 실무를 더 중시해서 프로젝트를 많이 하는 것을 

나쁘게만 볼 수는 없을것 같습니다.

프로젝트를 하면서 배우는 점들도 코테공부를 하는 것 이외에도 많고, 또 신입 개발자에게 있어서 프로젝트를 많이 해봐야

자신감이 생긴다고 생각하기 때문이고, 자신감은 가장 중요한 요소 중 하나라고 생각합니다.

그러기 때문에, 저연차 때는 프로젝트 위주로 자신감과 실력을 쌓는 것이 더 중요할 수 있다고 생각합니다.

저의 경우도 실제로 그렇게 하였구요, 하지만 저의 경우에는 여러가지 언어와 프레임워크로 사이드 프로젝트도 많이 해보고, 

회사에서의 경험도 많이 쌓이다 보니깐,  

이 사이드 프로젝트를 하는 게 나의 코딩능력 향상에 도움이 얼마나 되나? 라는 의문이 들기 시작하면서

오히려 더 알고리즘과 그 알고리즘을 풀어내는 능력의 중요성에 대해서 중요성을 더 느끼게 된 것 같습니다.

 

결론적으로, 코테준비가 더 좋냐, 프로젝트가 더 좋냐는 그 사람의 수준에 따라서, 그 사람의 욕구에 따라 달라지는 것 같습니다.

하지만 코테실력이라는게 단기간에 길러지는 게 아니기 때문에, 프로젝트를 진행하고 회사를 다니는 와중에 꾸준히 한다면, 

알고리즘, 자료구조, 그리고 언어능력까지 늘리는게 효율적으로 가능하다고 생각합니다.

 

그럼 여러분 모두 즐코 하세요~

 

반응형

'잡담' 카테고리의 다른 글

29살.. 코딩 시작을 주저하는 그대에게  (0) 2022.04.03