어떻게 프론트엔드 개발자가 되었나

사실 이제 비전공자 출신의 개발자는 발에 치일 정도라 할 만큼 흔하다. 나는 그 발에 치이는 무리 중 하나에 불과하다. 하지만 2023년도는 그만큼 개발자로 취업하기 어려웠던 해이기도 했다. 면접을 보러 다니면서 가장 많이 들었던 얘기 중 하나는 ‘이력서가 쌓여있다’는 말이었다. 어딜 지원하나 ‘경쟁률이 수백 대 일은 되실 거에요’라는 말을 들었고, 지금 들어오게 된 홉스도 수백 장의 이력서 중에서 합격하게 된 것이다. 지금도 많은 국비 교육과 부트캠프 수강생 분들이 취업 문을 두드리고 계시다. 내가 개발자가 된 이야기가 이런 분들에게 조금은 도움이 되지 않을까하며 써본다.

부트캠프

나는 바닐라코딩이라는 부트캠프를 수료했다. 지나고보니 부트캠프에 들어가서 취업준비를 하게 된건 정말 행운이라는 생각을 한다. 개발자로 성장하기 위해서는 좋은 길과 사람들이 필요하다고 생각하는데(특히 비전공자일수록), 부트캠프에는 그런 부분이 잘 갖춰져있다.

부트캠프나 개발자 교육 커리큘럼을 다녀야할 지, 혹은 어떤 곳을 다녀야할 지부터 고민하는 분들이 많다. 사실 부트캠프가 제공해주는 건 그다지 특별한 게 아니다. 특별한 강의나 최신 트렌드 같은 건 허상에 불과하다. 특히나 프론트엔드 분야에서 개발을 처음 시작하는 사람들은 ‘TypeScript’, ‘Next.js’같은 키워드를 조심해야 한다. 이런 최신 기술은 보통 ‘기업에서 원하는’이라는 상표를 붙고 나와 아무것도 모르는 사람들을 유혹한다1. 프론트엔드는 당연하게도 HTML과 JavaScript가 더 중요하다. 이들을 단지 위의 키워드를 배우는 발판 정도로 생각한다면 웹 개발자로서 조금 더 본질적인 것들을 배울 수 없을거라고 생각한다.

부트캠프에서 가장 중요한 건 환경과 사람이라고 생각한다. 부트캠프는 사람들을 강제로 강의실에 출입하게 만들고, 열심히 개발하는 사람들 사이에 앉혀 코딩에 열정을 쏟아붓게 만드는 구조다. 만약 부트캠프를 고민하고 있다면, 스스로 몰입하고 원동력을 이끌어낼 수 있는 환경에 있는 지를 생각해보자. 부트캠프가 ‘100% 온라인’이라던지 ‘유연한 스케줄’의 환경을 제공한다는 꼬드김에 넘어가지 말자. 코딩을 스케줄로 만드는 곳에 가야한다. 그리고 어느정도 허들이 있는 곳이 좋다. 쉽게 등록할 수 있는만큼 그만큼 의지력도 약해진다. 나 또한 그렇다면 주변 사람들도 마찬가지라 비슷한 처지의 사람들만 가득하게 된다.

내가 나온 바닐라코딩 부트캠프는 좋은 사람들과 함께 혹독한 환경에서 공부할 수 있어 추천한다. 켄님이라는 지독한 분의 채찍질을 받을 수 있고, 좋은 분들과 함께 개발할 수 있는 곳이다.

면접에 대비하기

취업을 준비할 때 특별한 준비는 하지 않았지만, 반대로 특별히 하지 않은 것이 있다면 ‘면접 기출 질문 외우기’ 였다. 실은 초반 준비기간에 부트캠프 동기들과 몇 번 하기는 했었는데, 그 이후로는 안했다. 이유는 간단한데, 답변 퀄리티가 낮아지고 획일화된다. 보통 그런 ‘프론트엔드 면접 질문 리스트’같은 것들은 양이 방대하다. 방대한 양의 질문에 대한 대답을 준비하다보면 답변의 퀄리티는 당연히 떨어지게 된다. 시간은 한정적인데 모든 걸 답할 수는 없다.

마찬가지로 책을 외우지도 않았다. 어디선가는 ‘모던 자바스크립트 딥 다이브’2를 몇 번이고 달달 외워 면접을 준비한다는 얘기를 들은 적이 있다. 물론 ‘모던 자바스크립트 딥 다이브’는 방대한 지식을 담은 좋은 책이고 책을 외우면서 공부하는게 나쁜 건 당연히 아니다. 그런 방식이 효율적이지 않다고 생각했을 뿐이다.

요즘의 취업시장은 어느 자리나 지원자 분들이 많다. 그런 상황에서 주의할 것은 단순히 기본적인 개념들을 아는 것만으로는 임팩트가 떨어질 수도 있다. 결국 차별화 된 지원자가 되기 위해서는 어느 한 분야에서라도 깊이있는 통찰이 필요하다. 나는 내가 더 강점이 있다고 생각하는 분야들을 더 다듬었다. 그래서 그 주제의 이야기가 나왔을 때 좀 더 인상적으로 대답하려고 노력했다. 나는 평소에 개발에 관한 생각을 할 때마다 메모해놓았는데, 그런 습관이 어느정도 도움이 되었던 것 같다. 메모하면서 좀 더 생각해보고 메모를 더 달고, 그러면서 개발 방식과 문제 해결 방식에 관해 아이디어를 많이 생각해뒀다.

물론 대답할 수 있는 범위를 전혀 신경쓰지 않을 수는 없다.. 신입 개발자의 세상은 가혹하다.. 웬만한 개발 질문들도 어느정도 답을 할 줄 알아야 할 것 같다.

투명하게 공개하기

내가 노력한 또 한 가지는 모든 과정을 투명하게 공개한 것이다. 내가 했던 모든 개발 관련 기록들이 공개되도록 했다. 부트캠프 동기분들과 알고리즘 스터디를 했었는데, 모든 알고리즘 풀이와 알고리즘 풀이에 단 리뷰들을 볼 수 있도록 했다. 사실 그 알고리즘 스터디를 생각해보면 그다지 실력은 늘지 않았다. 다만 스터디를 하면서 남긴 많은 기록들이 인상적이었다는 얘기를 들었다.

코드를 작성한 기록도 좋지만, 코드에 대한 생각을 남긴 기록들도 많은 것이 좋다고 생각한다. 개발자로서 코드에 대한 사유와 철학은 작성된 코드를 보고도 드러나기도 하지만, 이런 흔적들에서 직접적으로 잘 드러나게 된다. 그건 알고리즘 스터디의 깃허브 레포지토리가 될 수도 있고 블로그가 될 수도 있다.

알고리즘과 자료구조

알고리즘과 자료 구조에 대해 그렇게 잘 아는 편이 아니다. 나는 알고리즘을 풀 때 leetcode를 이용하는 편인데, easy ~ medium 정도를 끙끙대면서 푸는 편이다. 해외 개발자들이 구글, 페이스북, 넷플릭스 같은 회사 들어가기 위해 달달 풀 수 있는 정도는 아니다. 알고리즘 스터디를 하긴 했지만 이런저런 사정 상, 크게 도움이 되지는 못했다.

실제로 알고리즘 전형에서 DFS 정도나 간단한 DP 문제들 정도만 풀 수 있지 그래프나 백트래킹, 그리디 등등의 문제들은 손도 못댔던 것 같다. 네카라쿠배라고 불리는 개발자 시장의 유명 회사인 곳들은 알고리즘이 중요하다는 얘기는 들어본 적이 있는 것 같다. 다만 알고리즘은 단기간에 실력 향상이 어렵다고 생각해 중점적으로 공부하지는 않았다. 붙을 정도의 난이도는 붙었고, 떨어질만한 회사들은 떨어졌다. 위의 회사들을 노린다면 중요할 수도 있지 않을까?

최신 기술들

개발 시장에도 FOMO라는 것이 있어서, 모르면 뒤쳐진다는 생각이 있다. 나는 최신 트렌드 기술, 회사에서 사용하는 기술이라고 해서 그게 정답이라고 생각하지 않았다. 애시당초 어떤 기술 영역에서 무조건 정답인 기술이나 라이브러리가 있을 리가 없다.

회사에서 많이 쓰는, 핫한 기술들의 단점은 획일화와 개성 부족으로 나타나는 편이라, 트렌드에 맞는 기술만 쓰는건 별로 추천하지 않는다. 오히려 그것보다는 어설프더라도 바닥부터 구현해보는게 훨씬 눈에 띈다. 문제 해결을 위해서 이것 저것 써본 사람이 이야깃거리가 풍부해진다. React만 한 사람보다 React, Angular도 해본 사람과 프론트엔드 라이브러리/프레임워크에 대해 좀 더 논해볼 수 있다.

상태 관리도 마찬가지다. 학원에서 개발을 배운 분들의 프로젝트를 보면 사실 거의 비슷하다. redux나 react-query, jotai.. 사실 조금 뻔한 감이 있다. 어쩌면 MobX를 이용해서 간단한 프로젝트 정도는 해볼 수 있지 않을까..? 그러면 반응형 프로그래밍과 같은 얘기도 좀 더 해볼 수 있다. 물론 어느정도 회사에서 사용될만한 범위 내에서 해야한다. 너무나 힙스터스럽다면 뽑기 꺼려질 것 같다.

결과

취업 과정은 2023년 6월에서 7월까지 진행했으며, 6주 동안 150여 곳에 지원서를 넣어 21곳에 서류 합격을 했고, 그 중 세 곳의 합격 오퍼를 받았다. 합격 수락할 때 8개 정도의 회사와 채용 전형을 진행하고 있어 중단하였다. 오퍼는 회사와 시장 상황에 따라 제각각이라 얘기하는 의미는 없을 것 같다.

혹시 취업 준비를 하면서 이 글을 보게 되는 개발 준비생이 있다면, 준비를 잘 해서 좋은 개발자가 되길 바란다. 취업을 해서 어느정도 안정을 찾고나면, 쫒기듯 공부하는게 아니라 마음 편하게 내가 원하는 방향으로 성장할 수 있다. 취업하기 힘들다 힘들다 하지만, 힘들 때도 개발자를 뽑는 회사는 언제나 있다. 그리고 어느정도 본인을 잘 어필한다면 신입에게도 기회가 있을 것이다.

Footnotes

  1. 물론 TypeScript와 Next.js는 요즘의 프론트엔드 개발자들이 대부분 활용하는 스택이 맞다. 그렇지만 이런 도구들은 그저 HTML과 JavaScript를 더 잘 작성할 수 있도록 돕거나 최적화된 HTML을 만들어주는 도구일 뿐이다. 프론트엔드 개발의 처음 단계에서 중요한건 당연히 HTML, JavaScript, CSS다. 이것들은 그 이후에 배워도 충분하다.

  2. 이웅모, 『모던 자바스크립트 Deep Dive』