기타/인터뷰

개발자로 취업하기 위한 7가지

배발자 2024. 5. 31.
반응형

개요

안녕하세요. 정말 오랜만에 글을 쓰게 되었습니다. 한동안 블로그 포스팅을 하지 않았는데 사실, 그 사이에 취업에 대한 걱정과 몇 번의 최종 탈락 경험을 하면서 어떻게 살아야하나 스스로 고민을 많이 하게 되었습니다. 눈을 낮춰서 중소 기업을 가야하나, 교육을 또 한 번 더 들어야하나 뭐 이런저런 생각이 많이 들더군요. 이 글을 접하시는 분들은 아직, 학부생이거나 또는 프로그램의 교육생이거나 취업을 절실히 바라는 취준생 등 다양한 분들이 계실텐데요. 현재 저의 경험상 취업은 쉽지 않습니다. 코로나 시대가 열리면서 네이버는 1,000명을 뽑았던 시기가 있었지만, 지금은 채용 시장이 얼어붙었다는 얘기도 많이 들으셨을 겁니다. 저는 얼어붙은 시장이 되고나서야 취업을 준비하였고, 정말 많은 지원을 했습니다. 그리고 그 결과는 항상 좋지는 않았었죠.
 
저는 누군가에게 정보를 얻기 보다는 스스로 많은 탈락을 하면서 자소서나 포트폴리오를 개선해나갔습니다. 그리고 면접에서의 인성과 CS 질문 등 답변해야하는 내용들을 계속해서 수정해나가며 연습해갔죠. 그리고 그 결실을 '카카오'에서 맺을 수 있었습니다. 
 
지금부터 제가 준비했던 과정들을 이 글 안에 모두 정리하여 시간이 급한 여러분께 어떤 방식이 통했는지 전해드리려고 합니다. 저처럼 오랜시간 고생하진 않았으면 하는 바램입니다. 
 

 

[2024 카카오 채용연계형 겨울 인턴십] 최종 합격 및 전환 후기

카카오 인턴을 합격하기 위해 준비했던 과정과 그리고 전환을 위해 어떻게 달려왔는지 적어보려고 합니다. 현재는 인턴 합격 후 정직원으로 전환되었다는 근황만 공유하며, 시간적으로 여유가

baebalja.tistory.com


 

[1] 코테 준비 꾸준히 하기 

먼저, 1차 관문을 뚫기 위해 가장 먼저 생각나는 것은 아무래도 '코딩 테스트'라고 생각합니다. 일단 저의 스펙을 보면 다음과 같습니다. 
 
1️⃣  백준

 
2️⃣ 프로그래머스

 
저는 위의 두 사이트에서 문제를 많이 풀었습니다. 여러분께 당부드리고 싶은 말은 단기간에 실력이 늘지 않는다는 점입니다. 위의 스펙을 보면 해결한 문제가 1,000문제가 넘어가는데 '언제 나는 저만큼 푸냐...'라고 생각하시는 분들도 계실거에요. 하지만, 양이 중요한 것이 아닙니다. 어떤 문제를 풀었고 어떤 알고리즘을 적용했는지가 가장 중요합니다. 저는 2022년 5월 이전까지는 알고리즘을 적용하지 않는 단순 구현 브론즈 문제로만 양치기로 진행했었어요. 그리고 알고리즘, 자료구조를 생각하며 코딩 테스트를 준비했던 시기는 2022년 5월 이후입니다. 그리고 카카오에 최종 합격되기 전까지 약 1년 6개월 정도의 시간이 흘렀는데요. 첫 코딩테스트를 합격한 기업은 2022년 11월 '카카오 뱅크 겨울 인턴십' 이에요. 6개월 뒤에 코딩테스트를 뚫은거죠. 그리고 그 이후에도 많은 기업의 코딩 테스트를 뚫었어요. 다시 말해서, 6개월 정도 알고리즘과 자료구조를 생각하며 문제를 많이 풀면 코딩 테스트를 뚫을 수 있는 능력치가 생긴다는 거죠. 
 

코딩테스트 유형은 한정되어있어요.

 
 
DFS, BFS, 투포인터, 완전 탐색, 다익스트라, 구현, 이분탐색, DP, 비트마스킹, 증가수열, 그리디 정도에서 거의 다 출제된다고 보시면 됩니다. 저는 6개월 동안 하루에 8시간 정도는 코딩 테스트 준비에 투자하였고 위의 유형을 계속 돌렸습니다. 이제 막 취업을 준비하시는 분들은 기업 코딩 출제 난이도가 어떤지 잘 모르실 수 있어요. 제가 체감상 느꼈던 난이도는 다음과 같습니다. 
 
금융 & SI 기업  : ⭐️⭐️⭐️
IT 기업 : ⭐️⭐️⭐️⭐️⭐️
 
금융 & SI 기업은 언급한 유형의 알고리즘을 6개월간 빡세게 돌리면 코딩테스트를 뚫을 수 있는 실력이 형성될 거에요. 하지만 네이버, 카카오와 같은 IT 기업은 다른 기업에 비해 상대적으로 어렵게 나와요. 지문 자체가 상당히 길고 이해하기도 힘들어서 읽는 연습도 많이 해야해서 시간을 더 투자하셔야 가능성이 생기겠죠. 물론, 사람마다 시기는 다를거에요.
 
만약, 6개월의 시간이 다 흘렀으면 코딩 테스트 준비를 그만해도 되느냐? 아닙니다. 하루에 하나씩은 꾸준히 풀면서 유형을 계속 익히시는 것을 추천합니다. 사람은 망각의 동물이라고 하잖아요. 2주동안 코딩을 하지않으면 뭔가 어색하고 가물가물한 것처럼 코딩테스트도 감을 잃게 돼요. 그러니 하루에 하나씩은 꼭 풀려고 노력해주세요. 
 
❗️추가 팁
백준은 골드 문제, 프로그래머스는 Level 2~3을 많이 푸셔야합니다. 백준 플래티넘 문제와 프로그래머스 Level 4 이상부터는 코테에 자신있거나 재미를 느끼시는 친구들만 접근하세요. 기업용 코테 수준이 아닙니다. 만약 그 정도 레벨이 나오더라도 못 푸셔도 됩니다. 그 시간에 풀었던 문제의 히든 테케를 더 고민해보세요. 자신이 맞았다고 생각하는 문제가 정답이 아닐 가능성이 큽니다. 그리고 기업마다 다르지만 주어진 코테의 문제를 어떻게 풀었는지 코드를 보는 곳이 있습니다. 변수 네이밍과 메서드 분리 등 습관화하시는 것을 추천합니다. 그리고 실제 코테에서 시간이 남으시면 주석을 달아서 어떤 로직인지 명시하는 것도 좋은 생각입니다. 간혹, 주석을 달았으면 좋겠다라는 면접관님의 피드백을 받은 친구들도 있으니까요. 

 

아! 그리고 백준이나 프로그래머스를 풀면서 맞췄다고 좋아하지마시고 남들 코드도 참고해보세요~ 문제를 풀고 나면 코드의 시간 성능이 나오는데 그 시간이 유독 짧은 사람들의 코드를 보면서 자신의 코드와 비교해보라는 뜻이에요. 그래야 실력이 늘어요
 

[2] 깃허브 잔디 심기

 
핵심만 말씀드리자면, 꾸준한 사람을 정말 좋아합니다. 신입은 아직 아무것도 모르니 그 사람에게 큰 기대를 하지않아요. 채용 담당자나 면접관님들은 여러분들이 그 동안 어떤 삶을 살아왔고 얼마나 '성실한' 사람인지 보려고합니다. 이를 증명하는 객관적 수치&자료는 "깃허브의 잔디"로 충분히 증명됩니다. 다만, 잔디용으로 공백을 커밋한다던지 그러진 마세요. 어뷰징하는 친구들이 있는데 그러진 말아요..! 본인의 양심에 따라 꾸준함을 기록하는 거에요. 
 
가장 간단하게 잔디 심는 것은 알고리즘 문제를 하루에 하나씩 풀면 되겠죠? 크롬 확장 프로그램 중에 '백준 허브"라고 있습니다. 문제 풀기만 해도 자동으로 개인 리파지토리에 커밋되니 편하게 잔디를 심어보세요. 하루에 하나씩 실천해보시고 1년이 지난 후 보세요. 지난날을 만족하게 될거에요. 
 

+ 꾸준히 활동하고 있는 히스토리가 보여진다면 꼭 깃허브가 아니더라도 괜찮을거에요 :) 

 

[3] 기술 노트 작성

개발자는 단순히 코드만 잘 짠다고해서 박수쳐주는 것이 아니에요. 코드 레벨 뿐만 아니라 아키텍처 설계도 할 줄 알아야 하고 더 나은 기술이 없는지 계속 찾아보고 학습하게 됩니다. 시대가 계속 바뀌고 새로운 기술이 등장하니 개발자는 늘 공부해야하는 직업입니다. 그러기 위해서는 능동적으로 학습해야하고 팀원들에게 그 기술을 공유하겠죠. 그러기 위해서는 자신의 학습 내용을 기록하는 것을 습관으로 가지면 좋습니다. 여기까진 실무자로서의 느낀점이고 그럼 취업 준비생에게 무엇이 좋느냐. 
 
프로젝트를 하면서 자신이 왜 이 기술을 썼고, 어떤 학습을 했으며, 어떤 결과를 얻어왔는지를 기억하고 있어야해요. 그러기위해선 기록만큼 좋은게 없어요. 그리고 자신이 사용하는 프레임워크를 깊게 분석해본다던지, CS 학습을 깊게 공부한다던지 많은 주제를 가지고 정리할 수 있습니다. 사람은 공부한 내용을 계속해서 잊어버리게 돼요. 그러니 자신의 노트에 기록하고 복습하는 것을 추천합니다. 자신이 한번 이해하고 정리한 글은 떠돌아다니는 자료보다 몇 배는 이해가 빨리 되니까요. 귀찮고 힘들어도 하나 하나 모이면 큰 자산이 됩니다. 여기서 중요한건 남들이 정리한 글을 복붙하는 친구들이 있는데 그러지마세요. 참고는 해도 본인이 직접 쓰시고 남들이 읽는다고 생각하고 글을 잘 쓰시길 바랍니다. 

1,000개의 짧은 글 VS 100개의 긴 글 

 
 
1,000개의 얕은 글보다 100개의 꼼꼼하고 긴 글이 낫습니다. 딱 100개까지 목표로 두고 글 하나하나를 논리정연하고 가독성 좋게 작성해보세요. 그리고 기업에 지원할 때 자신의 기술 노트 링크를 공유해봐요. 면접 때 칭찬이 들어올 수 있을거에요. 다만, 본인이 쓴 글은 알고 있어야합니다참고로 여기서 말한 기술 노트는 채용 담당자 및 면접관님들이 볼 수 있는 티스토리, 노션 등을 의미합니다. 저는 지금 이 블로그 링크를 제출했어요~
 

+ 서류 제출시 블로그, 노션 링크를 달 수 없는 기업들도 존재합니다. 제 기억으론 삼성 SDS, LG CNS, SK C&C와 같은 SI 기업이 그랬어요. 사실, 저는 이 부분은 비판하고 싶은 서류 전형인데요. 이 기업들은 보통 자소서 3문항 정도를 가지고 뽑을지 말지 결정합니다. 물론, 졸업 학교나 스펙 등 추가적으로 보는 것들도 있죠. 하지만, 개발자로서 커리어를 어떻게 쌓아왔는지, 얼마나 꾸준한 사람인지의 객관적 지표 정도는 보여줄  기회는 줘야하지 않나 생각합니다. 이러한 링크를 달 수 있는 항목 자체가 없거든요. 뭐.. 취준하는 시절에 조금 불만이 있어서 ㅎ.. 적어봤습니다 :) 

 

[4] 포트폴리오 생각하면서 프로젝트하기

이거 정말 중요합니다. 보통 프로젝트하면 단순히 기능 구현에만 초점이 맞춰질 가능성이 높아요. 프로젝트가 끝나고 가고자하는 기업에 지원할 때 강조할 내용이 없을거에요. 프로젝트를 할 때 꼭 생각해야하는건 나중에 포트폴리오에 쓸 내용을 생각하면서 진행하라는거에요. 단순히 기술 나열보단 어떤 문제점이 있었고 어떻게 해결했고 어떻게 더 개선할 수 있을지 고민해보세요. 그러면 남들과 차별성을 가질 수 있어요. 
 
협업 프로젝트를 하게되면 쉬운 길을 걸어가려고 하지마세요. CRUD 기반으로 하는 API 구현의 역할만 맡았다면 그 순간에는 편할 지 몰라도 훗날 취업 시즌 때 자신이 한 내용을 기재하는 날에는 정말 적을게 없을거에요. 그러니 프로젝트를 참여할 때 정말 진심으로 참여하시고 그리고 '내가 더 할 수 있는 것이 없을까?' 계속 고민해보세요.  
 
서버를 사지 않고 로컬에서만 진행하는 프로젝트도 있을 것이고 서버를 사서 서비스를 실제로 세상 밖에 출시하는 프로젝트도 있을텐데요. 이 둘의 공통점은 트래픽이 몰리지 않는다는거죠. 정말 서버 하나만 띄워놓고 로직을 개판으로 짜더라도 아무 문제없이 돌아가겠죠. 왜냐하면 현재 상용화되고 있는 서비스가 엄~~청 많은데 우리가 만든 프로젝트에 실제로 유입되는 사용자가 거의 없다는거죠. 프로젝트에 참여한 개발자 말곤 서비스의 존재 자체도 모를걸요?!
 
남들이 다 Monolithic 구조로 진행할 때 MSA 구조로 진행해본다던가, DDD로 설계해본다던가, 서버에 의도적으로 과부하 때렸을 때 안뻗고 정상적으로 동작할 수 있게 한다던가, TPS를 향상시켜본다던가, DB 성능을 개선해본다던가 등등 개선할 수 있는 내용은 정말 많습니다.
 
'성능', '가용성', '유지 보수' 등 어떤 키워드를 정해서 개선할 수 있는 것들을 공략해보세요.
 

[5] CS 면접 미리 준비하기

CS 면접 주제는 거의 정해져있습니다.
 
[공통 과목]
1️⃣ 자료구조
2️⃣ 알고리즘
3️⃣ 네트워크
4️⃣ 운영체제
5️⃣ 데이터베이스
 
1~2번은 사실 코딩테스트를 준비하다보면 따라오는거에요. 문제를 풀려면 당연히 알고리즘의 시간 복잡도를 알고 있어야하고 그 안에서 사용되는 자료구조는 어떠한 구조이고 어떻게 탐색하는지 학습하게 될거에요. 그러면 1번, 2번은 해결되겠네요~ 
 
3~5번은 컴퓨터를 전공했으면 당연히 알고 있어야하는 내용이에요. 만약, 아직 학사모를 던져보지않은 재학생들은 '네트워크', '운영체제', '데이터베이스' 이 3과목은 더 열심히 하셨으면 좋겠어요. 그리고 비전공자분들도 컴퓨터를 전공한 재학생들이 배운 모든 과목을 학습할 필요가 없겠죠. 네트워크, 운영체제, 데이터베이스 정도는 관련 서적을 사서 투자하실 수 있으시죠?? 
 
[개인 과목] 
1️⃣ 지원한 직무 기술
2️⃣ 포트폴리오에 기재한 기술
 
1번은 채용공고를 보시면 지원한 직무에서 활용하는 기술이나 우대 사항이 기재되어있을겁니다. 예를 들면, 백엔드 직무에 지원을 했고 활용 기술이나 우대사항이 Java, Spring이라고 기재되어있다면, Java, Spring을 면접 때 많이 물어볼거에요. 그래서 보통 백엔드 웹 개발로 지원을 하시면 Java, Spring이 국내 기업에서 가장 많이 활용되기 때문에 국비나 여러 교육 프로그램에서 Spring을 디폴트로 한 커리큘럼이 많이 짜여져있는거죠. 만약, FE분들이라면 보통 리액트, 자바스크립트를 많이 준비하시더라구요. 
 
2번은 개인 포트폴리오에 기재한 자신이 활용한 기술들을 학습하셔야돼요. 예를들면, 프로젝트에 Kafka, Redis, Elasticsearch 등 이러한 기술을 적용했다고 적었다면 왜 썼고 이 기술의 내부 동작 원리 같은 기본 개념은 알고 있어야합니다. 그리고 면접에서 관련 질문이 들어오면 답변을 할 줄 알아야하구요. 예를들면, 제가 특정 프로젝트에 카프카를 적용했다고 가정해볼게요. 그러면 다음과 같이 예상 질문들을 만들어보고 답변도 미리 정리해놓는거죠. 
 

예시) Kafka

1. Kafka idempotence(멱등성) 보장 원리가 어떤건가요
2. 리플리케이션 동작 원리에 대해서 설명해주세요
3. 리플리케이션은 시간이 오래걸리는 작업이 아닌가요
4. 파티셔너에 대해서 설명해주세요
5. 리더에 포크에 대해서 설명해주세요
6. 컨트롤러에 대해서 설명해주세요
7. 로그 세그먼트에 대해서 설명해주세요
8. 파티셔너에 대해서 설명해주세요
9. 중복없는 전송에 대해서 설명해주세요
10. 정확히 한 번 전송하는 로직에 대해서 설명해주세요
11. 컨슈머 리밸런싱에 대해서 설명해주세요
12. 주키퍼가 무엇인가요
13. kafka 몇 버전 사용하셨나요

 
 
CS 면접 준비는 관련 깃허브나 블로그들이 정말 많습니다. 이를 참고해서 개인 노션에 정리하고 자신만의 방식으로 설명하는거를 연습하세요. 단순히 외운거를 말하는것이 아니라 이해를 바탕으로 얘기해야합니다. 보통 si 기업은 얕은 CS 질문 하나 던지고 다른 주제의 CS 질문을 합니다. IT 기업은 하나의 질문을 던지고 이어서 또 던지고 또 던져요. 방어하실거면 예상 꼬리질문까지 생각하시면서 정리하시면 도움 될거에요.
 
CS 참고 자료

 

[6] 면접을 보고 복기하세요

 

떨어지고 또 떨어져봐야 안다. 

 
 
한 번에 붙는 것은 어려워요. 저 또한 정말 많이 떨어져봤어요. 최종 면접에서도 4번이나 떨어졌는걸요. 취업 시즌에는 정말 스트레스 많이 받고 멘탈이 계속 흔들릴겁니다. 다만, 그 멘탈을 최대한 빨리 잡으세요. 
 
면접 끝나자마자 바로 침대에 드러눕지마시고 어떤 질문이 있었고 무엇을 답변 못했는지 바로 복기하세요. 그리고 바로 리서치해서라도 질문들에 대한 답변을 정리하세요. 그리고 말을 더듬었거나 애매하게 말한 부분들도 자신의 것으로 만들라는거죠. 나태해지지말고 바로 다음 면접을 준비하라는거에요. 그리고 답변을 못했다고 상심하지마세요. 그 경험이 있어야 다음 면접을 잘봅니다. 저도 기술 면접의 50퍼센트를 답변 못했던 경험이 있었는데 그때 당시에는 면접을 중도 포기하고 싶었어요. 근데 그 면접이 끝나자마자 모두 복기하고 관련 답변을 정리했는데 이후 지원한 기업들에서  유사한 질문들이 정말 많이 들어왔어요.
 
그러니까 일단 경험을 해보세요. 그리고 많이 뚜들겨 맞아봐야 자신의 부족함을 느낄 수 있어요. 
 

[7] 포트폴리오 작성법

마지막입니다. 제 경험상 포트폴리오를 작성할 때 상당히 많은 시간을 투자했었고 스트레스도 정말 많이 받았던게 기억나네요. UI는 어떻게 구성해야할 지 목차는 어떻게 짜야할 지 고민이 많았거든요. 일단 저의 포트폴리오를 보여드릴 순 없지만 어떻게 구성했는지는 공유하겠습니다. 
 

1. 표지 (사진 + 소개)
2. 목차
3. 인적 사항
4. 기술 경험
5. 프로젝트 소개 (각 3~4장 : 소개, 아키텍처 & 역할, 문제 해결 사례)
6. 개발자 핵심 역량
7. 활동
8. 성장 포부 

 
여기서 가장 중요한 항목은 프로젝트 소개입니다. 프로젝트에 대한 소개와 아키텍처, 자신이 담당한 역할을 시작으로 문제 해결 사례를 자세히 기재하였습니다. 단순히 이 기술을 적용했다가 아니라 원인, 해결, 평가, 개설해야할 점 이렇게 크게 4가지 항목으로 자세히 썼다는 거죠.
 

(예시)

원인 : DB 조회시 풀테이블 스캔으로 인한 3,000ms 시간 소요 발생)
해결 : Elasticserch 도입
평가 : 조회시 70% 성능 향상
더 개선해야할 점  : 가용성 지키지 못하기 때문에 ~~한 방식으로 확장 및 유지보수 측면에서도 ~~해야함. 

 
나머지 항목은 각자 알아서 잘 쓰시면 될거에요~ 개발자 핵심 역량은 '꾸준함'을 어필하면서 깃허브와 블로그 링크를 추가적으로 기재하였고, 활동은 싸피와 동아리 뭐 그런거 기재했었네요. 이건 개인마다 다릅니다
 

마치며

취업이 많이 힘들거에요. 저도 채용시장이 얼어붙었던 때부터 준비를 해서 많은 걱정을 했습니다. 봄이 올때까지 기다리기보다는 얼어붙었으면 일단 깨야겠다는 생각을 많이 했던 것 같아요. 그리고 사용할 도구들을 계속 갈고 또 갈아서 날카롭게 만들면서 시간을 보냈어요.

때론 다 포기하고 싶기도하고, 자신은 부족한 사람이라 자책하기도 하고, 남들은 취업하는데 왜 나만 이럴까 초라해보일 때도 있을거에요. 근데 정말 돌이켜생각해보면 그 떨어진 경험들이 있어야 성장하더라구요. 포기하지마세요. 목표를 정했으면 그 목표 꼭 이루세요. 1년? 2년? 스스로에게 투자할 수 있는 시간입니다.  제가 말씀드린 위의 7가지. 꾸준히 하시면 좋은 결과 있을거에요. 꼭 도움이 되셨으면 좋겠습니다. 
 

도움이 되셨다면 광고 한 번씩 클릭해주세요 :) 
감사합니다. 

 

저의 작업 공간입니다:)


 

반응형

댓글