정말 하고 싶었던 SW 마에스트로 16기에 합격했다!! 올해 모집인원이 110명으로 반토막이 나서 결과가 나올 때까지 정말 끝까지 걱정했지만 다행히 합격했다:D
SW 마에스트로를 준비하다
SW 마에스트로의 선발 과정은 상당히 긴 편이다. 코딩 테스트도 2번이나 보고 심지어 면접까지 존재한다.
서류 작성
1. [자기소개] SW분야의 전문성을 키우기 위해 몰입했던 경험과 도전이 무엇인지, 또한 이러한 성장과정을 통해 얻은 배움은 무엇인지를 서술하여 주시기 바랍니다.
2. [연수계획서] SW마에스트로 과정 참여를 통해 어떠한 프로젝트를 수행하고 싶은가요? 해당 프로젝트를 수행하기 위한 계획과 이루고자 하는 목표가 무엇인지 구체적으로 서술하여 주시기 바랍니다.
이번 16기 서류 문항은 2개였고, 매년 문항이 비슷한 것 같다. 서류는 정말 성의 없게 쓰는 게 아닌 이상 떨어질 일은 없는 것 같다. 다만, 면접 때 활용될 수도 있고, 또 엄연히 평가 요소라고 기술되어 있으니 너무 대충 적지는 말자. 글자 수가 최대 1000자 였던 것 같은데, 나는 글자 수를 꽉 채우지는 않았고 800 ~ 900자 정도 썼던 것 같다.
코딩 테스트 준비
소마 코테가 정말 어렵다는 얘기를 많이 들어서 정말 걱정을 많이 했다. 바로 직전 하반기 공채에서도 거의 대부분 코딩 테스트에서 떨어질 정도로 코테 준비를 거의 하지 않아 실력이 매우 부족한 상태였다.(알고리즘 공부는 진짜 미리미리 해두는 것이 좋은 것 같다.)
사실상 2월부터 본격적으로 준비를 시작했고 1차 코딩 테스트가 2월 22일 이었으니 20일 안에 실력을 최대한 빠르게 끌어올려야 했다. 운이 좋게도 때마침 삼성 SDS에서 주관하는 알고리즘 특강에 참여하게 되어 2주 동안 빠르게 알고리즘을 복습할 수 있었다. 백준 말고도 프로그래머스까지 합치면 2차 코딩 테스트(3월 8일)까지 200문제는 푼 것 같다. 약 1달 간, 정말 미친듯이 풀었다.
알고리즘에 중요한 것은 무조건 '복습'이다. 틀린 문제를 다시 풀면 또 못 풀고, 오래 걸린 문제는 다시 풀어도 오래 걸릴 가능성이 높다. 때문에 나는 노션에 위와 같이 문제들을 정리해두고 복습이 필요한 문제들은 따로 표시를 해두었다.
1차 코딩 테스트
문제 유형은 어떠한 알고리즘을 알아야 풀 수 있는 문제들이 아니라 정말 빡구현 위주의 문제들이었다. 살짝 낯설어 초반에는 많이 버벅거렸지만 그래도 열심히 양치기를 한 덕분인지, 1차 코딩 테스트는 4솔로 마무리를 했다. 소마 코딩 테스트를 준비 중이라면, 실버~골드 등급의 구현 문제들을 한문제당 30분 안에 빠르게 풀어내도록 연습하는 것이 중요한 것 같다. 나는 시간에 쫒겨 마지막 문제는 읽지도 못했다..ㅠ
소마 코테에서는 SQL 문제가 1문제 나온다. 1차 코딩 테스트 SQL문제는 무난했다는 평이 많았지만, 나의 경우 SQL을 만만하게 생각했던 탓에 따로 준비를 하지 않아 SQL 문제에서만 거의 30분을 써버린 대참사가 발생했다. 다행히 어찌저찌 시험 종료 5분 전에 겨우 풀어냈지만 시험 난이도가 더 높아진다는 2차에도 SQL 문제에 이 정도로 시간을 많이 써버린다면, 정말 위험할지도 모르겠다는 생각이 들었다.
다행히 오픈 카톡방 분위기를 보았을 때, 4솔이면 안정적인 합격권이라는 반응이 많았고, 때문에 불합 여부를 고민하지 않고 바로 2차 코딩 테스트를 준비했다.
2차 코딩 테스트
보통 역대 후기를 보았을 때, 2차는 일반적으로 2~3솔 정도가 합격 컷인 것 같았고 때문에 SQL 문제를 무조건 맞추는 것이 합격에 있어 크게 작용할 것 같았다. 특히, 2차 코딩 테스트의 문제 난이도는 골드~플레티넘 사이라는 말이 많아서 이를 단기간에 대비하기엔 힘들다는 생각이 들었고, SQL은 상대적으로 단기간에 실력을 끌어올릴 수 있다고 생각했기 때문에 2차 코딩 테스트는 SQL 위주로 공부를 했다.
작년 2차 SQL이 굉장히 어렵다는 말이 많았어서, 프로그래머스 SQL 고득점 Kit와 함께 리트 코드의 문제들도 함께 풀었다. 프로그래머스 고득점 Kit를 풀며 재귀 쿼리, CTE등 여러 개념들에 대해서 학습할 수 있었지만 작년 2차 SQL 문제 기출을 보았을 때 부족하다고 느껴 리트 코드 문제들도 함께 풀었다. 오픈 카톡방을 보니 해커랭크 문제들까지 푸는 사람들도 보였지만, 나는 시간이 너무 부족했기 때문에 하나의 문제라도 최대한 여러가지 방법으로 풀 수 있는 방법을 찾아보는 방식으로 커버하려 했다.
이런 식으로 한문제를 풀더라도 최대한 여러 가지 방식에 대해 모두 익히고자 했으며, 이러한 방법이 적은 문제 양으로도 빠르게 실력을 올리는데 효과적으로 작용한 것 같다. 만약, 본인이 단기간에 SQL 실력을 올리고자 한다면, 이런식으로 학습해보는 것도 추천한다!
리트코드 SQL <- 리트 코드 경우, 해당 사이트의 문제들을 풀었다. 다만 시간이 너무 부족했기 때문에 다 풀지는 못할 것 같아 난이도가 Medium과 Hard인 문제들만 골라 풀었다.
추가적으로 리트코드 홈페이지에 들어가서 Database -> Difficulty -> Hard를 클릭했을 때 나오는 문제들도 풀었다. 난이도가 어려워 살짝 과하다고 생각도 들었지만 이것까지 다 완벽히 습득한다면 SQL에서 발목잡힐 일은 없을 것 같다.
이번 2차 코테에서 SQL문제는 쉽게 나온 편이었다. 하지만, 알고리즘을 정말 잘하진 않는 이상 SQL 문제는 무조건 맞추고 들어가는 것이 이점이 크기 때문에 과하다고 생각이 들더라도 최대한 많이 풀어보는 것이 도움이 된다고 생각한다. 또한 역대 후기를 보면 SQL 문제가 결코 만만하지는 않으니 과하더라도 많이 푸는 것이 심적으로도 크게 도움이 되는 것 같다. 특히 쿼리 작성 역량은 코테가 아니더라도 개발자라면 반드시 할 수 있어야 하는 역량이기에... 열심히 해두면 언젠가는 큰 도움이 될 것이라 생각한다.
1,2번 문제는 호흡이 살짝 긴 구현 문제였고 3번은 우선순위 큐 4번은 그리디 문제였다. 사실 나는 4번은 dp 문제라고 생각했는데 오픈 카톡방 반응을 보니 우선순위 큐 + 그리디를 활용하면 O(nlogn) 시간복잡도로 훨씬 효율적으로 풀 수 있다는 사실을 알게 되었다. 3번은 역시.. 시간이 없어 읽지도 못했다. 이번에 워낙 선발인원 수가 적음 이슈 + 개인적으로 이번 코딩테스트 난이도가 엄청 어려웠다는 느낌도 아니었고 내 기준 안전빵인 완전한 4솔을 하지 못했기 때문에 결과가 나올 때까지 극긴장 상태였다. 하루하루 기도하며 보냈던 것 같다.
그리고 기도가 통했는지 코딩 테스트를 통과하여 마지막 관문인 면접까지 가게 되었다.
심층 면접
사실 동아리 면접 외에 이런식으로 본격적인(?) 공식 면접을 한 적이 한번도 없어서 많이 걱정했다. 심지어 대학마저 정시로 들어온... 면접 경험이 그냥 없다고 봐도 무방했다. 때마침 소마 준비 오카방에서 백엔드 면접 스터디를 구한다는 글을 보고 스터디에 참여하여 스터디 원들과 함께 준비했다. 함께 준비한 스터디 원들 모두 합격했다~!!
심층 면접때는 3분 자기소개를 필수적으로 해야한다. 이를 위해 포트폴리오를 제출해야 하고 포트폴리오 양식은 제공해준다. 해당 양식을 무조건 그대로 사용할 필요는 없지만 일반적으로 기술 스택, 내가 지금까지 한 활동, 프로젝트 소개 및 문제 해결 과정, 자격증 등등의 내용을 적는다. 대부분 프로젝트를 2개 적는 것 같지만 나의 경우 제대로 했다는 느낌이 드는 프로젝트가 1개 밖에 없었기 때문에 1개만 작성하였다. 프로젝트 1개 밖에 적지 않았음에도 나름 실제 운영까지 해보고 성능 개선 등 이것저것 한 것이였어서 1개 만으로도 3분이 빠듯했다. 나름 적을 말이 많은 프로젝트라면 굳이 2개를 꽉 채우지 않아도 되는 것 같다. 실제로 나중에 보니 나처럼 1개만 쓴 사람들도 꽤 있었다.
나에게는 소마 15기 활동을 한 친구 2명이 있어서 포폴을 대략적으로 완성하고 친구들한테 먼저 피드백을 요청했다. 처음에는 이력서 같이 기술적인 내용에만 집중해서 작성하였는데, 기획 쪽도 엄청 중요하다는 말을 듣고 수정했다. 발표 시간도 기획 및 협업 과정 1분 30초 기술 설명 1분 30초 정도로 동등한 비중을 가지도록 수정했다. 이렇게 먼저 친구들의 피드백을 받아 1차 수정을 거친 후에는 스터디 원들과 함께 다시 포폴 첨삭을 하며 최종 완성 하고 모의 면접도 해보며 일주일을 보냈다. 면접 스터디는 할 수 있으면 하는게 좋은 것 같다. 3분 자기소개도 처음에는 시간이 엄청 부족했는데 하다보니 시간 내에 안정적으로 할 수 있을 정도로 발전했고 답변하는 과정에서 서로 피드백을 주고 받으며 많이 개선할 수 있었다.
면접은 개인 별로 먼저 3분 자기소개를 쫙 한 후에 1:1 질문으로 15분 정도씩 진행된다. 사실 나는 기술 질문이 전혀 예상하지 못하게 나와서 엄청 당황했던 기억이 있다. 포폴에 작성한 인덱스, 동시성 처리 등등을 위주로 기술 질문 준비를 했는데 갑자기 아키텍쳐 관련 질문과 git, 객체지향 등에 대한 질문이 나와서 당황했다. 특히 인프라 설계 측면은 스스로도 많이 약하다고 생각해서 꼬리 질문에 대한 답변을 이어가다가 시간 관계상 다음 사람으로 넘어가야 한다는 말을 듣고 속으로 안도의 숨을 엄청 내쉬었다. 그래도 잘 모르겠는 질문이더라도 아는 지식을 기반으로 추측하며 최대한 답변을 이어가고자 노력했다.
분반마다 면접관분들이 다르시기 때문에, 내가 속한 분반의 면접관 분들의 전문 분야가 무엇인지에 따라 질문 스타일이 다른 것 같다. 우리 분반의 경우는 git 관련 질문과 자료구조 그리고 자신의 주력 분야에 대한 기본적인 지식에 대한 질문들이 많았다. 함께 면접까지 간 동기의 분반은 보안 관련 질문들이 위주였다는 말을 들어보면 이건 분반마다 면접관이 달라 스타일이 다른 것 같다. 그래도 걱정했던 압박 면접은 아니었고 편안한 분위기에서 진행되었다. 인성 질문은 사실 스터디때 연습했었던 질문들이 나왔지만, 기술 질문의 당혹스러움의 여파 때문인지 만족스럽지 못하게 답변했다는 생각에 내내 우울했다.
역시 실전과 연습은 다르다는 것을 다시 한번 느꼈다. '말을 두괄식으로 깔끔하게 하자!' 내내 다짐했지만 실전 때는 정돈되게 안나오고 엄청 기초적인 지식이지만, 이를 말로 설명하고자 하니까 횡설수설하며 장황하게 말했던 것 같다. 실제로 한 질문에 답변하다가 면접관님께서 시간 여유가 없다고 답변 중간에 끊겼다ㅋㅋ
면접을 마치고 나왔을 때, 망친 것 같다는 느낌은 아니었지만 또 잘본 것 같다는 느낌도 아니었다. 다른 사람들도 너무 대단하신 분들이 많았고 개인적으로 만족스럽지 못해서 너무 우울했고 불안했다. 그래도 엄청 나쁘게 본 것 같진 않다는 느낌적인 느낌은 있었기에 그 실낱같은 희망을 붙잡으며 결과 발표까지 하루하루 피말리는 생활을 했다ㅋㅋ
그렇게 기다리고 기다리며 3월 28일 2시 30분 쯤 16기 연수생으로 선발되었다는 합격 메일을 받게 되었다. 야호~! 그리고 나와 같은 분반에서 함께 면접 본 사람들 모두 합격했다. 그래도 면접으로 33%가 떨어지는 데 우리 분반 시간대 지원자들은 모두 합격한 것을 보면 면접 분반은 실력과 상관없이 완전 랜덤 배정인 것 같다. 때문에 면접이 끝난 후 상대적으로 잘 못한 것 같다고 느낀다면 '우리 분반에 잘하는 사람이 몰렸다!' 라고 생각해보자...ㅎ
마치며...
2024년은 나에게 있어 실패의 연속이었다. 내 인생에 있어 '불합격'이라는 단어를 가장 많이 본 해였다.
하반기 공채 모두 코딩 테스트에서 불합격, 디프만 면접 탈락, 정말 열심히 했던 우아한 테크코스마저 최종 시험에서 불합격했다. 솔직히 정말 좌절했고 1달 간은 정말 아무것도 안하고 우울하게 보냈던 거 같다. 그렇게 어영부영 시간을 보내고 스스로 돌이켜 봤을 때 문득 내가 너무 조급해 했던 것 아닐까? 라는 생각이 들었다. 개발자로 진로를 변경한지 1년 채 되지 않았고 그 마저도 본격적으로 서버 개발에 집중한지 약 5개월도 안된 상태에서 남과 비교하며 스스로를 비관했던 것이다. 그리고 그 1년 동안 정말 치열하게 살아왔는가? 라는 스스로의 질문에 나는 당당히 '네' 라고 대답할 수 없었다. 차분히 생각하고 나의 부족함을 인정하기로 했다. 당장의 '결과'에 목매는 것이 아니라 여유를 가지고 앞으로의 '성장'에 집중하기로 결심했다. 만약 내가 연쇄적인 실패에 끝까지 계속 좌절해 있었다면, 과연 이번 소프트웨어 마에스트로에 합격할 수 있었을까? 이번을 계기로 깨달은 점은 '당장의 실패에 좌절하여 앞으로의 기회도 날리지 말자' 였다. 물론, 실패 앞에 아무 감정이 없기란 힘들다. 하지만, 실패에 빠져 침몰하기 보다는 그것을 발판 삼아 성장하는 것이 성공에 가까워지는 발걸음이라고 생각한다.
기회는 언제나 존재하고, 또 준비된 사람만이 그 기회를 잡을 수 있다.
앞으로도 여러 실패를 마주하게 되겠지만, 오늘 얻은 교훈을 잊어버리지 말자. 그리고 되돌아 보았을 때, 후회가 남지 않도록 매 순간 최선을 다하고자 한다.