소프트웨어 마에스트로 12기 후기, 코딩테스트 대비방법, 스펙 전혀 없는 비전공자가 합격하는 법
2021년 나는 소프트웨어 마에스트로 12기에 연수생으로 참가했으며, 이제 13기를 모집하던데 관련된 정보를 공유해 보려고 글을 쓰게 되었다.
나에 대해서
일단 나에 대해 간략히 소개하자면, 나는 컴퓨터공학 비전공자인데.. 어.. 이렇게 말하기도 좀 이상한 게 난 애초에 2021년에 대학교 신입생이었고 프로그래밍은 고등학교 때 독학했다. 학부 전공은 물리학이라는 대환장 조합(...)
아무튼 나는 독학으로 관심 끌리는 것만 배워서 컴퓨터공학 관련해서는 지식에 구멍이 숭숭 뚫린 것처럼 모르는 게 꽤 많았고, 그러면서도 일부 세부분야에는 지식이 좀 있는 기형적인(독학생으로서는 이상하지도 않지만) 지식 구조를 가지고 있었다. 고등학교 때는 수학, 물리, 화학, 생물, 지학 등 다양한 과목을 프로그래밍과 엮어 활동을 여럿 했었고, 딥러닝 관련해서도 뱀 게임 학습, 구름 분류, 고양이 이미지 생성, Complex-Valued Neural Network 탐구 등을 했었다.
되게 뭐 많이 한 것처럼 보일 수도 있는데 별 거 없고 그냥 야매로 배워서 야매로 뭐 대충 만들어서 야매로 보고서 제출한 것이다. 독학하다보니 제대로 뭘 배우는 방법을 잘 몰라 야매로 배웠었고 지금 생각해보면 왜 그랬나 싶다.
모집 과정
작년 이맘때쯤 모집을 시작했던 것 같고, 난 원래 알고리즘 문제풀이에는 관심이 있어 코딩테스트 알고리즘 부문에는 별 부담이 없었다.
1차: 자개소개서
먼저 1차로 자기소개서를 받는데, 자기소개서는 난 열심히 썼지만 듣기로는 왠만한 삽질을 안 하면 안 떨어트린다고 한다.
2,3차: 코딩테스트
2,3차로 코딩테스트를 봤다. 코딩테스트에는 알고리즘, SQL, 웹 문제가 나오고, 2차와 3차 비율이 달라서 잘 기억이 안 나는데 알고리즘이 가장 많이 나오고(5문제였나?) SQL, 웹 문제가 하나씩 나왔던 걸로 기억한다.
알고리즘은 백준에서 골드 정도 문제까지밖에 안 나오니 나동빈님이 쓴 "이것이 코딩테스트다" 정도로도 충분히 대비가 가능할 듯했다. 학부 2학년 때 배우는 알고리즘을 성실히 들었으면 코딩테스트 전에 연습 몇문제만 풀어보는 정도로도 충분하지 않을까 싶고, 그게 아니면 알고리즘을 독학하든 해서 백준 문제를 풀어보자.
SQL은 프로그래머스에서 SQL 예시문제를... 풀지도 않고 해설을 읽으면서 공부했다. 그냥 해설 보고 외우는 게 답인듯.
웹은 HTML, CSS, JS에 대한 전반적인 지식이 필요한데 컴공 정규교육으로 배운 적 없고 + 웹에 관심 크게 없고 + 야매로 컴공 배운 나는 간신히 풀었던 기억이 난다. 어려워서가 아니라 그냥 세부 메서드 같은 걸 몰라서...
알고리즘을 다 풀면 SQL, 웹 정도는 안 풀어도 합격선이었던 걸로 알고는 있으나 확실하진 않다. SQL, 웹 중 본인이 이미 가지고 있는 지식을 고려했을 때 추가학습이 덜 필요한 것 하나 정도는 챙겨가고, 여기다 알고리즘을 다 푸는 걸 목표로 하는 게 바람직하지 않을까 싶다.
최종: 면접
면접 가서는 여러가지를 물어봤다.
- 팀원이 탈주하면 어떻게 할거냐?: 어떻게 답변했는지 정확히 기억은 안 나지만... 나라면 설득을 시도해보고 안되면 남은 팀원이라도 모아서 프로젝트를 반드시 끝마치겠다고 답변했을 것 같다.
- 왜 CNN에서 뒤의 layer로 갈수록 넓은 부분에서 특징을 추출하냐?: Receptive Field가 뒷 layer로 갈수록 넓어지니 당연한 이야기이고 어려운 질문도 아닌데, 내가 면접을 할 당시에는 이걸 몰랐다. 아무래도 내가 독학으로, 야매로 딥러닝을 배운 걸 감안하셨는지 그때 질문을 했던 멘토님도 "아마 잘 모르지 않을까 싶지만~" 이라는 말을 덧붙이면서 질문하셨었고.. 근데 그 때 내가 잘 모르면서도 아예 틀린 답변을 하지는 않았던 걸로 기억한다.
그리고 다른 질문은 딱히 기억나지 않는다. 그냥 같이 면접 본 옆 분중에 킥보드 사업한 분이 있다는 것만 기억난다.
참고로 코딩테스트 문항은 안 물어봤다. 다른 거 묻는 것만 해도 시간 충분하고, 듣기로는 다른 사람도 카피 의심 같은 이슈 있는 거 아니면 안 물어봤다는 듯.
스펙 전혀 없는 비전공자가 합격하는 법
내 개인적인 생각으로, 스펙 전혀 없는 비전공자(제대로 된 CS 공부 경험이 없는 사람)가 합격하는 법에 대해 설명하자면...
- 나동빈님의 "이것이 코딩테스트다" 책을 사거나 강의를 들으며 알고리즘을 공부한다. 그냥 머릿속으로만 공부하면 안되고 반드시 직접 코드를 짜며 문제를 풀어봐야 한다. 공부를 끝마칠 시점에 자신이 골드 문제를 풀이를 안 보고 20분? 정도 내에 풀 수 있다면 성공이다. 골드 정도는 양치기로 해결이 되니 한 문제를 보고 고민하다 너무 오래 걸리면(초보자에게 골드 정도면, 최대 고민 시간은 1시간 정도) 답안을 보는 식으로 계속 여러 문제를 풀면 어느 정도 숙달이 될 것이다.
- SQL 문제를 프로그래머스에서 풀어본다. 굳이 안 풀어도 인터넷에 올라온 답안 열심히 뜯어보면서 외우다시피 공부해도 상관없다.
- 웹(HTML/JS/CSS)는 사실 알고리즘 다 맞추고 SQL 맞추면 웹 문제 틀려도 거의 무조건 합격하지 않을까 싶긴 한데.. 그래도 시간 남으면 공부하는 편이 좋긴 할 것이다. 본인 알고리즘 지식이 부족하다 싶으면 웹보다 알고리즘을 우선하는 게 좋다고 본다.
- 자소서에 쓰거나 면접에 써먹을 토이프로젝트를 하나 한다.
이 정도면 최종 합격하기에는 충분하다고 본다.
즉 요약하자면 1. 코딩테스트 합격할 만한 실력 2. 적절한 토이프로젝트 하나 이렇게 있으면 합격이 가능하리라 본다.
알고리즘,SQL,웹 공부는 정형화되어 있으니 본인 노력에만 달려있고 큰 문제 없지만, 토이프로젝트는 어떻게 해야 할 지 잘 모를 것이다. 적당히 면접이나 자소서에 써먹기 좋은 토이프로젝트를 하나 골라서 하면 되는데, 그 "적당한 토이프로젝트"라는 걸 고르는 게 이쪽 분야 지식이 없는 사람이라면 힘들 것이다. 그런 사람은 주변인 중 CS를 전공한 사람에게 내가 이러이러한 기초지식이 있는데(또는 아무것도 모르는데) 겉보기에 훌륭한 토이프로젝트를 하려면 뭘 하려면 좋을 지 물어보는 게 좋다.
연수 과정
연수 과정에 나는 딥러닝 관련 프로젝트를 했었고, 배운 점은 많았지만 그래도 더 많은 것을 해봤으면 좋았을 텐데 하는 아쉬움이 남는다.
이 글을 읽는 사람에게 가장 소프트웨어 마에스트로 지원할 만한 동기가 되는 걸 위주로 알려주자면, 노트북 200만원, 장학금 600만원, 프로젝트 지원비 720만원, 강의지원 대충 100만원, 등등 지원이 매우 빵빵하다. 1인당 최소 천만원 정도는 챙겨갈 수 있다.
다만 딥러닝 관련해서 어떻게, 어디서, 뭘 배울 지 알려주지도 않고 관련 지원도 미비한 건 상당히 아쉬운 부분이었다. 아무래도 전통 CS 전공자 위주로 프로젝트가 지원되어서...
이 글을 읽는 컴퓨터공학에 관심이 있는 사람이라면 딥러닝에도 관심이 있을만도 한데, 딥러닝을 배우고 싶은데 어떻게 배울 지 감이 잡히지 않는다면 내 블로그의 아래 링크 글을 참고하자.