altair의 프로젝트 일기
소프트웨어 마에스트로 15기 합격 후기 본문
개요
한동안 글을 쓰지 못했는데 감사하게도 소프트웨어 마에스트로 15기에 합격했기 때문이다. 다른 후기들에서 들은 대로 굉장히 바쁜 예비과정을 보내는 중이다. 조금 늦었지만 이제라도 합격 후기를 적으려 한다. 과거 선배들의 후기에서 정보를 얻었듯이, 내가 경험한 내용을 후배들에게 전하는 것이 도리일테다.
자소서
당락에 중요한 서류는 자소서가 제일 대표적이니 자소서에 관해서만 말해보겠다. 나는 대학 3학년을 마치고 1년간 휴학을 했었다. 컴퓨터공학을 복수전공한 이후로 CS는 열심히 익혔지만 프레임워크나 여러 기술들은 써보지도 못했기 때문에 학교 밖의 지식들을 더 공부하려 했다.
그 활동 중에 하나가 Rust를 익히고 이를 사용해 만든 멀티스레드 이미지 압축 라이브러리다.
SW분야의 경험과 느낀 점, 그리고 이를 바탕으로 한 전문성을 자소서 1번 문항에서 물었다. 여기에 이 라이브러리에 대한 경험을 담았다. 그 당시에 깃허브 스타가 7개, 3000회 다운로드를 기록했었다. 누군지도 모르는 외국인들에게 PR도 받아봤고 이를 바탕으로 버전도 1.5.0까지 올렸었다. 지금와서 생각해보면 굉장히 특별한 경험이지만, 자소서를 쓸 때는 없는 경험 쥐어 짜내는 기분이었다. 다행히 면접은 물론 지금까지 사람들에게 큰 어필 포인트가 되고 있다.
2번 문항은 하고 싶은 프로젝트에 관해 구체적으로 묻는 문항이다. 내가 만약 창업을 한다면 하고 싶은 아이템에 대해 생각해보고 타겟 사용자가 누구인지, 어떻게 문제를 해결할 것인지 구체적으로 적는다면 큰 문제 없을 것이다.
서류는 쉽게 통과했다는 후기를 많이 보았고 합격자들도 대부분 그렇게 응답했다. 특별한 경험이 있다면 적고, 아니면 열정이라도 보여주면 되지 않을까.
1차 코딩테스트
솔직히 코딩테스트 공부를 서류 합격 이후에 처음 시작했다. 알고리즘 문제를 학교 시험이나 과제에서 푼 적은 있었지만 이렇게 타이트하게 시간을 두고 푼 적은 없었다. 하지만 자료구조와 알고리즘을 필두로 탄탄한 CS 기초가 큰 도움을 줬다고 생각한다. 백준 골드까지는 어떻게든 달성했다.
1차 코테는 생각보다 쉬웠다. 4번 빼고는 쉽게 풀었고 4번에서 남은 시간을 다 쓰다가 제대로 못 풀고 끝났다. 굳이 따지자면 4.5솔이 될 것 같다. 기본적인 알고리즘 구현을 시험하는 듯 했다.
2차 코딩테스트
2차부터 본격적으로 어려워졌다. SQL을 쓸 때 항상 Copilot과 구글을 사용했던 후폭풍인지 SQL문제를 풀지 못했고, 동적 프로그래밍 문제도 풀지 못했다. 동적 프로그래밍 문제를 그래프 탐색으로 풀어보려다 포기했던 것 같다. 하지만 1번 그리디 문제가 쉽게 풀렸고 3번 분할 정복 문제도 쉽게 풀려서 운 좋게 2솔을 달성했다. 나중에 들어보니 그 정도가 합격선이었던 것 같다.
생각보다 3번 문제였던 이진트리 정렬을 어려워하는 지원자가 많았던 것 같다. 사실 나는 분할 정복이라는 분류도 모른 채, 루트를 기준으로 두 서브 트리를 재귀적으로 내려가 더 작은 리프노드가 있는 서브트리를 앞으로 오게 회전하는 방식으로 구현했다.
심층면접
코딩테스트도 처음이었지만 면접 또한 당연하게도 처음이었다. 솔직히 반신반의한 마음으로 지원했기에 코테에 더 집중했지 면접은 준비가 하나도 되지 않은 상태였다. 2차 코테를 합격한 뒤 면접 전까지 남은 며칠 동안 포트폴리오만 겨우 만들었다. 나중에 들어보니 학교마다 면접 스터디도 있었고 오픈 카톡방도 있었단다. 난 그것도 모르고 면접장에 들어섰다.
포트폴리오
면접을 시작하면 모두 자신의 포트폴리오를 3분간 발표하게 된다. 발표 연습을 해보면 알겠지만 3분은 굉장히 짧은 시간이고 실전에 가면 당연하게도 연습보다 더 많은 시간을 사용하게 된다. 쓸데없는 자기 어필을 지우고 많은 대답을 할 수 있는 기술 스택 4개와 개발 블로그 소개, 앞서 소개했던 오픈소스 Rust 프로젝트, 과제로 했던 협업 프로젝트만 간단하게 써서 제출했다.
면접장에서 더 화려한 경험을 적어오셨던 다른 분들을 봤지만 긴장하고 말을 더듬다보면 너무 많은 내용에 시간을 넘기는 경우가 잦았다. 심지어 그 화려한 경험에 대해 기술적인 질문이 들어오자 제대로 답하지 못하는 분도 계셨다. 차라리 3분보다 적게 발표시간을 잡고, 어렵지 않게 대답할 수 있는 항목만 적는게 낫지 않을까.
이하는 내 포트폴리오다.
면접장
중학생 때 학교 토론대회도 우승하고, 고등학교 시절엔 학교 대표로 도에서 열리는 토론대회에 나가 1등을 했었던 경험이 면접에서 도움이 될 줄은 꿈에도 몰랐다. 마치 토론대회에서 토론하듯이 임했다. 압박과 긴장 속에서 내 템포를 잃지 않고 하고 싶은 말을 하려고 했다.
만약 말을 잘 못해 면접 스터디를 하고자 하는 분이 있다면 면접 스터디가 아니라 차라리 독서 토론 모임을 가는 것을 추천한다. 많은 사람 앞에서 긴장한 상태로 생각하고 정리해 말을 하는 경험은 단순한 질답 정리보다 더 도움될 것이다. 나도 답변을 따로 정리하지 않았다. 말하지 못하는 답변이 무슨 의미가 있는가?
포트폴리오 발표가 끝나고 너무 긴장한 나머지 자리에 앉아 한숨 쉬며 멋쩍게 웃었는데 바로 앞의 면접관님이 웃으시면서 끄덕여주셨다. 덕분에 긴장이 많이 풀렸다.
예상했던 것 만큼의 깊은 기술 질문이 많이 들어오진 않았다. 내게 들어온 개인 질문과 답은 대충 다음과 같다.
- 집이 춘천인데 어떻게 참여할 것인가?
- 먼 것이 사실이다. 하지만 대학 4년 동안도 집에서 통학했으며 똑같이 성실히 참여할 것이다.
- 질문주신 면접관님이 굉장히 만족하셨다. 성실함이 많이 어필된 듯 했다.
- 먼 것이 사실이다. 하지만 대학 4년 동안도 집에서 통학했으며 똑같이 성실히 참여할 것이다.
- OCI(Oracle Cloud Infrastructure)를 사용했는데 AWS를 쓰지 않은 이유는? 더 나은 점이 있는가?
- OCI는 프리티어 용량이 ARM VCPU 4개, 24GB 램, 200GB 스토리지이며 AWS보다 훨씬 많은 용량이다.
- OCI 프리티어 계정은 용량이 넘어가면 인스턴스가 종료될지언정 과금이 발생하지 않는다.
- 또한 비정상적인 트래픽을 자동으로 감지해 막아주어 DDOS 공격에 더 안전하다고 판단했다.
- OCI를 주로 쓴 것 같은데, AWS 뿐만 아니라 요새 떠오르는 Azure 같은 곳을 사용할 때 어려움은 없겠는가?
- 어차피 모두 가상 인스턴스를 띄워 서버를 올리는 것이라고 생각한다. 그 본질이 바뀌지 않는 한 크게 어려울 것 같진 않다.
- 또한 서비스를 Dockerizing 하여 사용한다면 더욱 쉽게 이동할 수 있을 것이다.
- Linux를 잘 다루신다고 하셨는데, 소마 프로젝트에 어떤 배포판을 사용할 것인가?
- 레드햇이나 CentOS도 좋지만 저라면 Ubuntu를 쓸 것 같다. 더 가볍게 사용하고 싶다면 Debian이나 아예 Alpine을 쓸 수도 있을 것 같다.
- 여러 배포판을 경험해 본 건지 아니면 한 두 개만 써본 것인지 여쭤보신듯했다. Debian, Alpine의 사용을 이야기하고 있는데 답변이 충분하다는 시그널을 받았다.
- 레드햇이나 CentOS도 좋지만 저라면 Ubuntu를 쓸 것 같다. 더 가볍게 사용하고 싶다면 Debian이나 아예 Alpine을 쓸 수도 있을 것 같다.
- 레드햇이나 CentOS를 안 쓰고자 하는 이유가 있나?
- IBM에서 레드햇을 더 밀어주기 위해 CentOS를 더 이상 업데이트하지 않고 레드햇의 베타버전 격인 CentOS Stream으로 전환한 것으로 알고 있다. 이에 많은 오픈소스 개발자들이 CentOS를 떠났고, 개인적으로 CentOS의 미래가 없다고 생각한다. 그럴 바에는 Ubuntu처럼 대중적인 배포판을 사용할 것이다.
- 레드햇은 비용이 들지만 관리 지원을 해주고 CentOS는 도움을 받을 수 있는 시니어가 많다. 그래도 사용하지 않을 것인가?
- 회사처럼 경제적인 지원이 있다면 레드햇을, 익숙한 시니어들이 많다면 CentOS를 선택할 수도 있다. 하지만 소마처럼 나와 비슷한 신입끼리 프로젝트를 한다면 둘 다 쓰지 않을 것이다.
- Linux에서 어떤 프로세스가 메모리를 비정상적으로 차지한다면 어떻게 처리할 것인가?
- htop나 netstat을 사용해 어떤 프로세스가 문제인지 확인할 것 같다.
- Linux에 전문성이 있다면 시스템 로그를 살펴보는 것도 좋은 방법이다. 이런 답변을 원했다.
- 그 점은 내가 부족하다. 그러나 다른 사람보다 Linux를 더 많이 사용해왔다고 자부하고 그런 지식을 더 빠르고 쉽게 익힐 수 있다.
- 다들 그 정도는 하지 않겠는가? 하고 다시 여쭤보셨다. 난 그냥 멋쩍게 웃었다. 답변이 부족했던 것은 사실이니까.
- 그 점은 내가 부족하다. 그러나 다른 사람보다 Linux를 더 많이 사용해왔다고 자부하고 그런 지식을 더 빠르고 쉽게 익힐 수 있다.
- 왜 소마에 지원했는가?
- (다른 지원자들은 모두 창업이라고 답한 상황) 개인적인 프로젝트만 해왔는데, 경제적인 어려움이 제일 힘들었다. 소마의 프로젝트 지원금을 바라고 지원했다.
- 돈이 문제라면 소마가 아니라 취업이 맞지 않는가? 회사에 가면 돈 걱정 없이 AWS를 쓸 수 있다.
- 물론 돈이 제일 문제였지만 뛰어난 사람들과 우리가 원하는 프로젝트를 하고 싶은 욕심도 있다. 회사에서는 원하는 프로젝트를 처음부터 끝까지 하지 못하므로 소마에 지원했다.
- 좀 당황했고 답변하기 어려웠지만 천천히 그리고 더듬더듬 정리해 답했다.
- 물론 돈이 제일 문제였지만 뛰어난 사람들과 우리가 원하는 프로젝트를 하고 싶은 욕심도 있다. 회사에서는 원하는 프로젝트를 처음부터 끝까지 하지 못하므로 소마에 지원했다.
- 프로그래밍을 하다가 좌절을 경험한 적 있는가?
- 호기롭게 DBMS를 만들려고 시도한 적이 있다. B+Tree까지는 구현했지만 당시 데이터베이스를 더 공부하지 않은 상태라 데이터 저장과 쿼리 파서 구현에 실패한 적이 있다.
"내가 적합한 지원자다"라는 주제를 가지고 찬성 입장에 있는 토론자처럼 답변했다. 질문이 들어오는 동안 잘 생각하고 질문의 의도를 파악하여 내 템포를 잃지 않도록 노력했다. 다른 지원자 중에서는 자신이 참여했던 협업 프로젝트지만 질문의 의도를 제대로 파악하지 못해 서너 번 같은 답변을 하는 경우도 있었다.
공통질문은 떠오르는 한 제일 먼저 손을 들고 답변했다. 하지만 클래스가 무엇인가, OOP의 SOLID 원칙을 아는가, 소마에 왜 지원했는가 등의 표면적이거나 기본 개념을 테스트해본다는 성격이 강했다. 중간 쯤 가니 생각보다 다른 지원자들이 손을 잘 들지 않아 계속 나만 답변하게 되어 면접관들이 나를 제외한 다른 분들에게 답변을 요구하기도 했다.
더 떠들고 증명하고 싶었지만 후반에는 생각보다 나에게 질문이 잘 들어오지 않아 불안했다. 아예 탈락이거나 반대로 일단 난 합격이니 다른 분들에게 더 물어보려하는 것 둘 중에 하나라고 생각했다.
결과
잊고 살다가 느지막히 자고 일어났더니 합격 메일이 와 있었다.
느낀 점
소마는 기본적으로 SW인재양성 프로그램이다. 반드시 창업이 목표라고 응답할 필요는 없다고 생각한다. 또한 화려한 이력보다 11월까지 놓지 않고 끈기있게 참여할 수 있는지를 더 보는 것 같다. 나이에 맞는 수준의 전문성만 증명할 수 있다면 나머지 분량은 성실성 증명에 투자하는게 더 좋은 전략일 수 있다.
예비과정 중에 팀 빌딩과 멘토 매칭을 하는 시기라 너무 바빠서 후기를 제대로 쓰지 못했다. 소마는 실패에 대한 부담 없이 서비스의 전 생애주기를 온전히 경험해보는게 정말 큰 장점이라고 생각한다. 생각보다 다양한 사람들이 있고, 멘토분들도 재밌고 훌륭한 분들이 많아 시야가 훨씬 넓어지니 다들 꼭 지원해봤으면 좋겠다.
'IT > 기타' 카테고리의 다른 글
중고 Thinkpad X200 리뷰 (0) | 2024.11.08 |
---|---|
Git branch 전략에 대하여 (0) | 2024.09.14 |
MySQL을 사용한 중복 파일 관리 프로그램 (0) | 2023.10.08 |
강의 자료를 동기화하면서 겪었던 시행착오들 (0) | 2023.04.07 |
비정형 기계와 유전 알고리즘 (0) | 2022.02.01 |