작년 12월 이후부터 준비했던 취준을 끝으로, 드디어 가고 싶었던 회사에 합격했다.
해당 기간동안 했던 고민들과 준비했던 과정들을 한번 돌아보면서 글로 한번 적어보자
해당 경험은 정말 주관적인 의견이 들어가있으니, 필자는 이렇게 준비했고 고민했구나 정도만 알아두셨으면 좋겠다.
코테
사실 그전까지 PS를 열심히 준비해본적이 없어서, 가장 먼저 해야하는 부분이라고 생각했다.
그렇다고 전공 때 배웠던, 기초적인 자료구조나 알고리즘을 처음부터 다시 하는건 너무 시간이 아까웠다. 때문에 취준 기간동안 하루에 한 문제씩 꾸준히 풀었던것 같다. 동시에, 다양한 문제를 풀어보려고 리트코드, 프로그래머스, 백준 이렇게 여러 사이트를 통해서 준비했다.
https://leetcode.com/problemset/
https://school.programmers.co.kr/
솔직히 남들보다 열심히 준비했다곤 못하겠지만, 코딩테스트의 의미에 대해 고민했던 것 같다.
기업에서 코테를 보이는 이유는 한정된 상황에서 그사람의 논리력과 문제 해결력을 정량적으로 평가하기 위함이라고 생각한다. 그렇다고 PS 대회 입상자만 원하는 것도 아니기에, 정말 언더바를 넘기만 하면 된다고 생각했다.
단순히 문제를 pass 하는 것보다, “논리적으로 설명할 수 있는가?” , “이게 최적의 접근인가?”, “case가 달라진다면?” 이라는 질문을 들어가면서 준비했다.
- 문제를 처음 볼 때, 제약사항을 먼저 확인하기
- 가장 먼저 떠오르는 average case의 알고리즘
- 데이터셋 크기에 따른 best or worst 알고리즘
방학기간 동안 꾸준히 푼 이후, 코딩테스트가 잡힌 이후에는 기출을 풀어보면서 해당 회사의 문제 스타일에 익숙해지려고 했다.
포폴
사실 이 부분에서 가장 공을 많이 들였던 것 같다.
내가 준비하는 포지션이 인프라 신입이기에, 여러 활동들을 나열하기보다, 해당 상황에서 고민했던 부분들을 보여주는 것이 중요했다.
면접관의 입장에서 수 많은 지원서들을 볼 때, 분명 비슷한 내용들을 중복해서 보게 될테니, 짧게 관심을 보이도록 했다. (우리가 유튜브 영상들을 썸네일만 보고 클릭하는 것처럼)
예시
다음과 같이, 짧은 이슈 형태로 내용을 작성 후, github issue를 링크해 자연스럽게 고민 과정을 연결시켰다.
https://github.com/SWM-Thlee/linked-paper-search/issues/24
- 문제 상황 인식 (이슈의 중요도, 실시간 대응 여부)
- 문제 원인 분석
- 대응
- 추후 side effect
블로그
블로그도 포폴과 마찬가지로, 공을 많이 들였던 것 같다.
지원자들의 생각하는 과정 자체를 코드나 github로 보여줄 수도 있지만, 산출물을 통해서 보여주는 부분들은 과정이 생략되어있기에 내부적인 맥락을 보여주기엔 적절치 못했다. 그 과정은 블로그를 통해서 녹여내고자 했다.
또한 여타 기술블로그처럼 단순히 배운 내용을 기록하는 용도보다, 깊게 고민했던 과정들과 의사결정들을 글로 녹여내려고 했다.
- 결과보다는 고민해본 경험과 그 과정
- 프로젝트에서 내부적으로 공유했던 내용
- 기술을 작성하더라도, 정말 deep dive
소프트스킬 및 컬쳐 핏
이건 개인적으로 정말 중요하다고 생각했다.
단순히 취업을 준비하는 것뿐만 아니라, 본인이 어떤 사람인지 파악하고 커리어를 대하는 자세를 알아가는 것은 경험이 는다고 준비되는 영역이 아니라고 본다.
의식적으로 고민하고 나는 어떤 사람인지 파악하고, 타인과의 관계에서 무의식적으로 어떻게 행동하는지 알아야한다.
큰 기업에서는, 퍼포먼스가 뛰어난 인재를 뽑는 것과 기존 팀원과 문제를 일으킬 가능성이 있는 사람을 뽑는 것, 이 중에서 후자를 많이 고려할 수 밖에 없다.
또한, 회사의 분위기마다 다르고, 사람마다 주관적이라 정답이 없다. 다만 본인이 어떤 사람인지, 어느 환경에서 가장 퍼포먼스를 낼 수 있는 사람인지 고민했다.
- 조직에서 본인은 support or lead 하는 입장인가?
- 엔지니어의 역할로 서비스 기획까지 관여하고 싶어하나?
- 나의 발작 포인트는 무엇인가? (정말 참기 힘든 부분은?)
- 팀원과의 의사결정이 갈린경우 어떻게 대응할까?
- 빠른 가설 검증과 서비스의 안정성 어느것이 중요한가?
나의 경우에는, 팀 프로젝트나 관련 커뮤니티에 참여하면서 많은 사람들하고 얘기해봤던 것 같다. 가장 크게 도움이 되었던 소프웨어 마에스트로 팀원, 멘토님 , GDGoC 코어 멤버분들 다시 감사드립니다.
회사가 중요시하는 가치와 나의 가치관을 맞춰보면서, 회사에 나를 맞추는게 아니라, 나에게 맞는 회사와 분야를 고민하게 되었다.
CS
CS가 중요하다는 건, 누구나 동의하는 부분일 것이다.
다만, CS가 탄탄한 하다는 것은 뭘까?
TCP와 UDP의 차이를 아는 것? Round Robbin ,FIFO, SJF 스케줄링의 차이?
단순히 이렇게 개념적인 부분들도 알아야하겟지만, 조금 더 깊게 고민하거나, 현재 기술에서 CS에서 활용되는 부분에 집중 했던 것 같다.
예를 들어,
HTTP 3.0 에서 TCP에서 UDP로 변경된 이유? 현재 리눅스 커널에서 채용한 스케줄링 알고리즘은?
이런식으로 개념에서 적용으로 확장하면서 준비했던 것 같다. 물론 모든 영역을 깊게 준비하진 못하겠지만, 개념들을 연결지어 새로운 도구들이나 개념을 학습할 때 도움이 많이 되었다.
지원정보 | 서류 | 코테/인적성 | 1차 면접 | 2차 면접 |
---|---|---|---|---|
AWS (cloud support 채용전환 인턴) | 합 | 합 | 불합 | - |
Toss (system engineer) | 불합 | - | - | - |