프론트엔드 개발자에게 코딩테스트 공부가 필요할까?

    반응형

     

    저는 개발자가 되어야겠다고 결심했던 날부터 지금까지 알고리즘, 자료구조 공부에 최선을 다하지 않았습니다

    요즘은 부트캠프, 국비수업에서 코딩테스트까지 알려주고 관리해 준다고 들었습니다만, 저는 개발을 독학한 사람이기에 그런 케어는 받아보질 못했죠. 또한 그 당시 코딩테스트 실력은 실무를 하는데에 전혀 도움되지 않는다는 글도 많았습니다. 저는 그 당시 굳이 필요하지 않다는 말에 자기합리화를 하며 코딩테스트에는 소홀히 하고, 클론 코딩에 집중했었습니다.

    지금부터 3년 전에는 프론트엔드, 백엔드 가릴 거 없이 정석으로 코테를 푸는 면접이 많이 포함되기 시작하던 때였습니다. 지금은 트렌드가 많이 바뀌어서 정석 그 자체 고테보다는 실무형 테스트, 과제로 많이 내주는 편이죠. 쨌든 저는 운이 좋게도 기술면접은 있었지만 코딩 테스트가 없는 회사에 합격해서 지금까지 개발자로서 일을 하고 있었습니다

    그러나 역시, 기초 지식이 부족하면 그 밑천이 들어나길 마련인 것 같습니다. 물론 제가 실무에서 기능구현을 하는 거에 전혀 문제는 없었습니다. 그러나 제가 작성한 코드에 고민이 되기 시작하더라고요. 내가 작성한 코드가 과연 좋은 코드인가? 효율적인가? 만약 내가 알고리즘에 대해 잘 알고 있더라면 더 효율적인 로직이 떠오를 것 같은데... 같은 고민들이요.

    한때 전회사에서 IDE를 개발하자라는 말이 나왔을때 잠을 못 이 룰정도로 고민이 많았습니다. 왜냐하면 한 번도 경험해 본 적이 없는 서비스라서 어떤 식으로 설계하고 접근해야 할지 감조차 잡히지 않았거든요. 심지어 검색조차도 어떻게 해야 할지 몰라서 이상하게 검색하고, 정보는 정보대로 못 얻고 그랬었죠. 시간이 흐른 지금, 그 당시 저렇게 헤맸던 제 모습을 보니 문제 해결 능력, 컴퓨팅적인 사고가 부족하다는 생각이 들더군요. 아마 제가 자료구조, CS적인 지식은 잘 알았더라면 아무리 모르더래도 조금의 실마리는 떠올랐을 거라고 생각이 듭니다

     

     

    프론트엔드 개발자도 알고리즘, 자료구조 공부를 해야 할까?

    네, 저는 필요하다고 생각합니다

    물론 데이터를 더 전문적으로 다뤄야 하는 백엔드만큼은 아니어도 됩니다. 그렇지만 프론트단에서 데이터 핸들링을 하면서 써먹을 수 있을법한 알고리즘은 아는게 좋다고 생각합니다. 프론트단에서 데이터 핸들링을 해봤자 얼마나 하겠냐?라고 생각하실 수 있겠지만, 이건 회사마다 다를 것 같습니다. 저 같은 경우에는 서버보다 프론트에서 데이터 핸들링을 많이 해야 하는 형태가 되어버려서 Data fetching 하는 쪽 로직을 보면 반복문, if문이 엄청나게 많았고, 중첩도 많았습니다. 그런 환경이었어서 그런지 이게 과연 효율적인 코드인가?라는 고민이 들었던 거죠.

    그리고 실무에서까진 아니더래도 혼자 사이드 프로젝트를 하게 되면 백엔드까지 구축을 해야 합니다. 그럴 때 충분히 써먹을 수 있는 지식이 된다고 생각합니다.

    또한 이렇게 준비된 자세(?)가 된다면 좋은 기회가 다가왔을 때 주저하지 않을 수 있겠다는 생각이 듭니다. 세상에는 많은 서비스들이 있습니다. 어느 회사는 단순 CRUD만 반복하는 회사일 수도 있고, 어느 회사는 생각보다 복잡한 형태를 만들어야 하는 회사일 수도 있습니다. 그 어떠한 환경이든 최대한 빠르게 적응하려면 해당 지식들이 바탕이 되면 좋겠다는 생각이 듭니다. (세상이 매우 빠르게 변화되는 것도 한 몫하는 것 같습니다)

     

     

    그럼 필요하지 않다고 말하는 이유는 무엇인가?

    백엔드 쪽은 잘 모르겠습니다만, 프론트엔드 개발 쪽에선 알고리즘, 자료구조 공부가 무조건 필수적으로 제안되진 않습니다. 그 이유는 무엇일까요?

    프론트에게 가장 중요하게 여겨지는 능력은 컴포넌트, 로직 재사용성과 효율적인 상태관리라고 생각합니다. 이러한 능력은 알고리즘, 자료구조 지식이 없어도 충분히 구현 가능합니다. 또한 프론트단에서 최적화를 해야 할 때가 있는 게 이건 우리가 아는 알고리즘 최적화랑은 다릅니다. 리렌더링 방지, 이미지 또는 폰트, CSS 파일 최적화 정도입니다. 이러한 최적화는 알고리즘까지 이용해서 최적화하진 않습니다.

    그리고 직접 구현하는 것보다 이미 구현이 되어있는 API, 함수를 쓰는 게 효율적입니다. DOM 트리를 탐색하는데 우리가 직접 구현할 필요가 있을까요? 전혀 없습니다. 그렇다 보니 프론트엔드에는 라이브러리가 갈수록 방대해지고 있다는 문제점이 야기되긴 합니다만, 회사에서는 빠른 개발이 중점이기 때문에 우리가 회사에 속해있을 땐 효율적이고 좋은 라이브러리를 선택하여 빠르게 개발하는 게 중점입니다.

    사실상 대부분의 데이터 핸들링은 서버에서 처리되기에 프론트엔드는 그저 받아서 쓰기만 하면 됩니다. 이건 앞서 말했다시피 회사마다 다를 순 있겠으나 뭐가되었든 브라우저단에서 방대한 데이터를 받아 처리하는 것보다 서버에서 처리하는 게 훨씬 빠르고 효율적입니다. 가끔 "서버는 뭐 만능이냐", "서버에서 처리하는 것도 오래 걸리는 건 매한가지"라고 말씀하시는 분이 계시는데.... 애초에 브라우저는 대용량의 데이터를 처리하라고 만들어진 것이 아닙니다. 또한 비즈니스 로직을 프론트단에서 가지고 있는 것도 비합리적이라고 생각합니다. 그리고 브라우저는 데이터 패칭을 받는 순간 엮여있는 컴포넌트 리랜더링이 일어납니다. 이 과정에서 브라우저 랜딩 속도가 지연되죠. 그럼에도 불구하고 데이터 핸들링을 프론트에서 받아서 또 for문 돌려서 맵핑하고 if문 돌려서 필터링한다? 리랜더링이 자주 일어나겠죠? 전혀 효율적이지 못합니다.

     

     

    지금 당장 알고리즘, 자료구조 공부를 해야 할까?

    프론트엔드 취준생이라면 지금 당장 취업의 필수조건마냥 코테 공부에 집중하실 필요는 없다고 생각합니다. 만약 지금 갓 취업한 신입이라면 일단 실무 코드로 기능구현을 하는 것에 먼저 초점을 맞추는 게 좋을 것 같습니다. 그다음 어느 정도 실무에 적응이 되었을 때 좀 더 질 높은 코드를 쓰고 싶다는 고민이 될 때쯤 해보면 어떨까 싶습니다. 사실 여유가 있으신 분들이라면 늘 꾸준히 미리미리 공부하시면 좋을 것 같습니다.

    마치 학교 공부 같다고 생각하시면 됩니다. 우리가 학교에서 배우던 수학 미적분, 국어 고전문학 등등.. 실생활에 써먹지도 않을 것들을 배워서 뭐 하는 거지? 싶잖아요. 저 또한 어렸을 때 그렇게 생각했고 성인 된 후에도 그렇게 생각했습니다. 그러나 이젠 왜 공부를 해야만 했는지, 개발자의 알고리즘으로 대입해 생각해 보면 이해가 가기 시작하더라고요. 당장 우리가 어디다가 써먹으려고 배우는 게 아닌, 알고리즘, 자료구조, CS 공부를 통해서 컴퓨팅적인 사고, 문제 해결 능력을 키우는 거죠. 좀 더 효율적일 수 있는 생각의 흐름을 키워주는 스텟을 쌓는 느낌이라고 생각합니다. 

    그래서 저는 영어 공부처럼 꾸준히 공부하는 게 좋을 것 같다고 생각합니다. 저 또한 그 생각으로 코테 공부를 하고 있습니다.

     

     

    마무리

    최근에 유튜브에 코테 공부하는 영상을 올렸더니, 굳이? 효율적이지 못하다는 댓글이 달려서 제 생각들을 써봤습니다. 저는 코테로 지금 당장 좋은 기업에 취업하려고 공부하는 것이 아닙니다. 앞으로 제 개발자 생활이 더 슬기로웠으면 좋겠고, 효율적인 로직을 짜고 싶어 시작하게 되었습니다. 지금 당장 코테 공부 안 한다고 제가 개발 못하고 그러는 건 아닙니다. 하지만 전 개발자란 직업에 진심이니까요. 실력 좋다는 소릴 들으며 오래오래 일하고 싶고, 모르는 걸 개발해야 할 때 몰라서 좌절하는 순간을 최소화하고 싶습니다. 다들 각자 우선순위와 목표에 맞춰서 방향을 결정하셨음 좋겠습니다.

    중요한 건! 아무것도 안 하는 것보다 코테 한 문제라도 푸는 게 인생에 도움이 된다는 것입니다.

    반응형

    댓글