본문 바로가기
기록

소프트웨어 마에스트로 13기 후기

by 메릴린 2022. 12. 15.
728x90

이 글을 쓰고 있는 오늘 15일 소프트웨어 마에스트로 13기 수료식이 열린다. 공식적으로 소마 활동이 끝나는데 나는 그 시간에 딱 기말 시험이 겹쳐 수료식에 참석하지 못한다. 2-3월 동안의 지원서-코테-면접부터 4-5월 예비과정, 6-11월 본과정까지 거의 2022년 1년을 소마와 함께 보냈다고 해도 과언이 아닌데 수료식에 참석하지 못해서 너무 아쉽다. (결국 수료식 참여하고 중간에 시험 보러 갔다 ㅎㅎ)

 

작년에 소마의 존재를 처음 알고 대학생일 때가 아니면 할 기회가 없을 것 같아 올해 지원 마감 3일 전에 급하게 지원했는데 많은 후기에서 보았듯 학기를 다니면서 병행하기엔 아쉬움이 많이 남는 프로그램인 것 같다. 팀을 꾸리고 프로젝트를 기획하고 완성하는 것만 봤을 땐 자신이 충분히 시간 분배를 잘한다면 소마와 학기를 병행할 수 있지만 휴학을 했더라면 그 외의 멘토링이나 연수생들 간의 네트워크, 그리고 소마에서 주최되는 여러 컨퍼런스나 기타 활동 등에도 활발히 참여하며 좀 더 많은 것을 배워갈 수 있었을 텐데 그러지 못해 많이 아쉽다.

 

애초에 나는 소프트웨어 마에스트로를 통해 인적 네트워크를 쌓고 기술적 성장을 목표로 했기 때문에 어느 정도 목표 달성은 했다고 볼 수 있다.(인적 네트워크..는 실패한 것 같다. 그래도 팀원들이 있다!) 사실 소마는 나 같은 사람보다는 창업을 목표로 하는 사람에 가장 알맞다. 단기간에 기획하고 결과물을 내고 유저를 유입해 성과를 발표할수록 좋은 평가를 받을 수 있는 걸로 알고 있다. 물론 아예 기술적으로 고도화를 시키는 방향으로 프로젝트를 진행할 수도 있지만 이 또한 창업팀만큼 소마 프로젝트에 많은 시간을 투자해야 하기 때문에 학기와 병행하기는 힘들다고 생각한다. 이제 그다음이 당장 취업을 위해 스펙을 쌓고 정보를 얻는 것이 중요한 사람들이 소마가 필요하지 않을까 생각한다. 현업에 종사하시는 많은 분들이 멘토로서 연수생분들을 도와주시며 많은 정보도 얻을 수 있고 프로젝트를 통해 기술 경험도 쌓을 수 있기 때문이다. 나.. 같은 경우는 당장 취업을 목표로 하는 것도 아니었고 학교 사람들과 작은 프로젝트만 하다 보니 좀 더 큰 프로젝트에 대한 갈망이 생기기도 했고 내년이면 졸업을 하기 때문에 마지막으로 대학생활의 꽃이라 할 수 있는 대외활동이 하고 싶었다.

 

홈페이지에서도 알 수 있듯 소마는 지원이 굉장히 빵빵하다. 그렇기 때문에 여러 도전들을 많이 해볼 수 있다. 이 때문에 소마를 하면 규모가 큰 프로젝트를 해볼 수 있지 않을까 하는 기대가 컸다. 실제로도 본과정에서 학생들끼리 했다면 가격 때문에 엄두도 못 냈을 API를 사용해 데이터도 수집하고 기능도 구현해 볼 수 있어서 좋았다. 그 외에도 인프런을 통한 온라인 학습, 도서 구매를 통한 자기 주도 학습 등 주어진 지원을 알차게 활용해 스프링부트 강의도 듣고 예전부터 갖고 싶었던 IT 도서들도 많이 구매했다. 막상 사고는 할 게 너무 많아 파고들지 못했는데 이제 급하게 끝내야 할 것들이 잘 마무리돼서 앞으로도 두고두고 갖고 공부할 생각이다. 이렇듯 소프트웨어 마에스트로라는 활동이 주는 이점이 너무 많았기 때문에 여건이 된다면 활동을 추천하고 싶다.

 

22년 1년 동안 소마가 나에게 굉장히 많은 부분을 차지했기 때문에 각 과정에 대해 간단한 후기를 남겨보려고 한다.

 

2-3월 접수기간

원서 접수

1월부터 응시원서를 접수할 수 있는데 나의 경우 마감 3일 전에 봤기 때문에 2월에 지원서를 썼다. 자기소개와 연수계획 파트가 있었고 쓰기 전에 어떤 식으로 써야 할지 몰라 검색을 해봤다. 응시원서에 쓴 내용에 대해 면접 때 구체적으로 질문한다는 후기가 많았고 대부분 "솔직하게 과장없이 사실대로" 쓰라는 조언들이 많았다. 또 급하게 쓰는 부분이 없잖아 있어서 정말 솔직하게 써서 제출했다. 

 

자기소개 파트의 경우 내 경험과 장래희망에 대해 물었는데 솔직하게 내가 지금까지 했던 프로젝트 경험과 연구 경험을 썼고 장래희망도 그때 당시 내 장래희망을 적었다. (기술적으로 발전해 나만의 기술과 메리트가 확실히 있는 개발자? 이런 내용이었던 것 같다.)

 

연수 계획의 경우 어떤 연수생과 어떤 프로젝트를 하고 싶은지, 소마를 통해 이루고자 하는 목표가 무엇인지 물었는데 창업.. 이 목표가 아니고 기술적 성장이 목표였기 때문에 구체화된 목표를 쓴다기 보단 내가 ~~~ 한 기술적 성장을 할 수 있는 프로젝트와 그에 맞는 연수생들과 함께 하고 싶다고 썼다.

 

소마 홈페이지에 접수한 원서 내용은 접수 후 확인할 수 없기 때문에 혹시 모르니 따로 백업해두기를 추천한다.

 

1차 코딩테스트

이전과 마찬가지로 알고리즘 6문제, 웹 1문제, SQL 1문제가 나왔다. 시험 시간은 2시간이었고 엘리스코딩 플랫폼을 이용했다. 딱히 불편함은 없었다. 알고리즘의 경우 자신이 잘할 수 있는 언어를 선택해서 풀면 되는데 나같은 경우 파이썬과 C언어를 섞어서 풀었다. 1학년 때 잠깐 했던 학회와 학교 알고리즘 수업 외에 따로 PS를 한 적이 없어 테스트 전 프로그래머스에 있던 예제들로 공부했다.

https://school.programmers.co.kr/learn/challenges?tab=algorithm_practice_kit

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

실제로 시험 때 대략 3-4문제를 푼 것으로 기억한다.

 

의 경우 JS 문제가 주로 나온다는 후기가 많았어서 MDN에서 JS 개념들을 쭉 훑고 갔다. 사실 JS의 경우 기존에 했던 프로젝트들이 있었기 때문에 준비에 어려움은 없었다.

https://developer.mozilla.org/ko/docs/Web/JavaScript

 

JavaScript | MDN

JavaScript (JS)는 가벼운, 인터프리터 혹은 just-in-time 컴파일 프로그래밍 언어로, 일급 함수를 지원합니다. 웹 페이지를 위한 스크립트 언어로 잘 알려져 있지만, Node.js, Apache CouchDB, Adobe Acrobat처럼

developer.mozilla.org

 

SQL의 경우에도 프로그래머스 고득점 Kit를 풀고 응시했는데 1차, 2차 모두 문제를 푸는데 문제가 없었다.

https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

면접 때 코테 풀이에 대해 물어본다는 후기들이 있어서 시험 응시 후 푼 문제들에 대해 문제가 뭐였는지, 내 풀이는 어땠는지 복기해두었다. 

 

2차 코딩테스트

2차 코딩테스트의 경우 알고리즘 3문제, 웹 1문제, SQL 1문제로 총 5문제가 출제된다. 마찬가지로 시험 시간은 총 2시간이다. 이때 웹이 CSS 관련 문제라 풀지 못했고 SQL 문제와 알고리즘 2문제를 풀고 나왔다. 물론 실제로 모두 맞췄는지는 모르지만 합격했고, 면접을 보러 갔다. 

 

주변에 1솔부터 3-4솔까지 다양한 사람들이 있었는데 무조건 많이 맞춘 순으로 뽑히는 건 아닌 것 같았다. 아직도 최종 면접까지 가는 기준이 뭔지 의문인데 주변에 1솔인데 최종 면접에 간 사람도 있었고, 2차에서 떨어진 사람도 있었기 때문이다.

 

아무튼 1차 때와 마찬가지로 복기를 해두었다.

 

심층 면접

최종 면접의 경우 사전에 notion으로 작성한 포트폴리오를 제출해야 한다. 면접 때 3분 동안 미리 제출한 포트폴리오에 대해 발표하는 시간을 가지고 본격적으로 면접 질문이 들어온다.

 

면접은 5대 5(면접관이 5명 이상이었을 수도 있다. 아무튼 다대 다)로 진행되었고 후에 후기를 들어보니 지정된 조? 분과? 의 면접관분들에 따라 질문 유형들이 달랐던 것 같다. 코테 내용을 많이 질문받았다는 분들도 있었고 포폴이나 활동에 대해 많이 질문받았다는 분들도 있었고 굉장히 다양했던 것 같다.

 

우리 조의 경우 딱 한 분만 코테에 대해 질문받았고 (SQL관련이었는데 그 방식이 아닌 다른 더 간단한 방식으로 풀 수 있는데 어렵게 풀어서 질문을 받았던 것으로 기억한다.) 대부분 포폴에 적혀있던 활동이나 지원서에 적힌 내용에 대해 질문을 많이 받았다. 또 현재 웹/앱 기술에 대해서도 질문을 받았었는데 굉장히 당황스러웠던 기억이 있다. 그래도 최대한 솔직하게 답변했는데 결국 최종 합격을 했다. 진짜 소마 합격 비결은 솔직함인가?

 

4-5월 예비과정

예비과정은 본과정에 들어가기 앞서 연수생들끼리 서로 알아가고 멘토링을 통해 어떤 프로젝트를 할지 구체화하는 기간이다. 이때 2주 정도? 동안 엘리스코딩 플랫폼을 통해 간단한 프론트 웹 개발에 대해 공부하고 임의로 편성된 조끼리 자율적으로 미니 프로젝트를 하는 기간을 가졌다. 

 

미니 프로젝트의 경우 프로젝트에 대해 지원이 들어오거나 하는 게 아니라서 각자의 방식으로 다양하게 미니 프로젝트를 완성했다. Git Lab을 통해 미니 프로젝트를 진행하고 발표했는데 MBTI 매칭부터 맛집 지도까지 결과물이 굉장히 다양했고 보는 재미가 있었다.

 

우리 조의 경우 다들 재학 중인 대학생들이었고 알다시피 4-5월은 한창 중간고사 기간이기 때문에 다들 뭐라도 완성만 하자는 분위기여서 기존 sns를 클론 코딩해 백엔드 없이 React로만 구성된 프로젝트를 제출했다.

 

예비과정 때 발 빠른 사람들은 4월부터 팀을 이미 완성해 멘토님들을 구하는 사람들도 많았는데 정말 그 열정이 대단하다고 생각했다. 보통 4월-5월 초에 팀을 완성하고 본과정 전까지 함께 본과정을 진행할 멘토님들을 구하고 프로젝트 기획을 준비한다.

 

나의 경우 4월이 끝날 때까지 시험기간이었기 때문에 팀원을 늦게 구하는 편이었고 이후에 멘토링을 가도 다들 팀원을 구한 상태여서 결국 Webex를 통해 내 PR을 공개적으로 해 여러 연수생들과 만나는 시간을 가졌다. 다행히도 성향이나 목표가 비슷한 연수생을 만났고 그분이 이미 다른 한 명과 팀을 꾸린 상태라 내가 팀원으로 합류하면서 우리 팀이 완성되었다.

 

이렇게 3명의 팀원을 꾸리고 나면 이제 3명의 멘토님을 구해야 한다. 이번 기수부터 기획 멘토님들을 팀 멘토로 삼을 수 없도록 규정이 바뀌었고 (기획 멘토님들 인원이 너무 적은데 모든 연수생들에게 초반에 필요한 멘토님들이기 때문에) 우리 팀은 각자 프론트, 백, AI에 도움이 될 것 같은 멘토님들을 컨택해 팀 멘토님들을 구했다. 이 또한 이번 기수에 인원이 확 늘면서 후반부로 갈수록 팀멘토를 구하는 것이 굉장히 치열했다. 왜냐하면 멘토님들도 최대 3 팀만 팀 멘토로 참여할 수 있기 때문이다. 아무튼 우여곡절 끝에 팀도 구하고 팀 멘토도 구해서 다행이었다.

 

6-11월 본과정

본과정이 진행되는 동안 세 번의 평가가 이뤄진다. 기획 심의, 중간 평가, 최종 평가인데 각 평가를 기준으로 어떻게 프로젝트를 준비하고 평가를 준비했는지 위주로 되돌아보려 한다.

기획 심의

6월이 되고 본격적으로 본과정이 시작되면 6월 중순~말 사이에 기획심의가 있다. 본과정이 시작하자마자 기획심의가 있는 것이기 때문에 다들 예비과정 때 빠르게 팀을 꾸리고 기획을 준비한다. 우리 팀의 경우 주제를 정하는 데에 어려움이 많았는데 다들 기술적 발전에 욕심이 있다 보니 세 명이서 만들어가기엔 현실적으로 불가능한 아이디어들이 많이 나왔고 기획 심의를 통과하기 어렵다는 의견이 많았기 때문이었다. 우리 팀 기획에 대해 자세히 적으면 특정 가능해질 수 있기 때문에 설명은 생략한다.

 

예비과정부터 기획 심의 전까지의 대부분의 멘토링 주제들은 팀빌딩, 주제 잡기, 기획하는 법, 그리고 팀 프로젝트 운영 방식이다. 기획 멘토링 때 많은 멘토님들이 강조하는 것이 "너무 욕심내지 말 것"이다. 애초에 본과정 자체도 6개월로 긴 편이 아닌데 기획심의, 중간 평가, 최종 평가 준비 기간에 최종 전에 미리 배포하고 유저를 모으는 것까지 고려하면 실제 개발 기간은 2-3달뿐이라고 하셨다. 이제 와 돌이켜보면 우리는 기능이 정말 많았고 데이터 수집을 위한 API 탐색부터 어려웠기 때문에 욕심을 많이 냈다고 생각한다...😂

그 외에도 아이디어 구체화를 위해 비즈니스 캔버스 모델, 페르소나 등등의 개념 등을 알려주셨고 시장 조사, 유사 서비스 분석 등의 방법에 대해서도 배웠다. 실제로 이 내용들을 기획심의에 실었고 우리 팀의 경우 기술이 너무 많고 완성이 힘들 것 같다는 반응이 지배적이어서 2차까지 갔다..ㅎㅎ 하지만 13기의 경우 3차가 없었고 2차까지가 끝이었기 때문에 기능을 쳐내라는 피드백이 지배적이었는데 우리 팀의 경우 쳐낸다기보단 각 기능의 규모를 축소해서 진행하였다.

 

또 이때 멘토링으로 프로젝트를 어떻게 진행할지에 대해서도 많이 배우고 팀 별로 이를 결정한다. 애자일 방법, Kanban board, scrum까지 현업에서 실제로 프로젝트 진행이 어떻게 되는지를 배울 수 있는데 나의 경우 어느 멘토링에서 소마는 인원이 3명이고 Jira 같은 본격적인 툴의 사용이 오히려 진행을 더디게 만들고 스트레스를 줄 수 있다는 말이 인상 깊어 우리 팀에 적극 의견을 내 GitLab의 Issue를 이용해 간이 애자일 방식의 개발 방식을 택했다. 매주 Milestone을 생성해 전체 개발 일정을 잡고 각 Milestone마다 Issue를 통해 할 task를 정리하고 이를 처리하는 방식으로 개발을 진행하였다. Daily Scrum을 하는 팀도 있었지만 우리 팀의 경우 이렇게 되면 금방 지칠 것 같아 매주 직접 만나 Scrum을 통해 업무 진행상황을 확인하고 일정을 수정해나갔다.

 

중간 평가

중간 평가는 대략 8월 말에 진행된다. 이때 아예 창업이 목표인 팀은 이미 MVP 배포가 완료된 팀도 있다고 한다. 우리 팀의 경우 데이터 수집을 위한 API 탐색에 어려움이 많았어서 (주제를 엎자는 말도 잠깐 나올 정도) 본격적인 시작을 좀 늦게 했다. 또한 우리 팀원들 다 재학 중인 대학생이었기 때문에 학기 중엔 API 탐색 및 개발 환경 구성에 집중하고 방학 때 본격적인 개발에 들어갔다.

 

속도를 내기 위해  AWS를 이용해 미리 팀원들만 접근 가능한 MongoDB 서버를 구성해 빠르게 데이터를 저장하고 검토하여 이를 이용해 기능을 완성해나갔다. 서버 관리는 내가 도맡아서 했고 Docker에 대해 아주 얕게나마 공부할 수 있는 시간이었다. 나의 경우 백엔드 담당이었는데 프레임워크를 뭐 쓸지 고민하다가 Spring Boot를 쓰기로 결정이 났고 여태 Django나 Express만 썼기 때문에 처음 쓰는 거라 Java부터 Spring Boot 공부를 하면서 개발을 동시에 진행해야 했다. 

 

괜찮을 거라고 생각했는데 MongoDB와 Spring Boot가 그렇게 좋은 짝이 아니라 기능을 구현하는 데 애를 먹었고 Spring Boot + MongoDB 조합이 거의 없었기 때문에 문제가 생겨도 검색이 잘 되지 않는 문제도 있었다. 중간에 데이터베이스를 정말 바꾸고 싶었는데... 아무래도 시간 문제상 SQL 기반의 RDB로 넘어가기에 리스크가 꽤 크다고 판단했다. 또한 Spring Boot 패키지를 어떻게 구조화하는 것이 좋은지, 어떤 기능을 어떻게 분리해 class를 구성해야 할지 등등 고려해야 할 것이 너무 많아 중간평가 직전에는 결국 기능 완성에 초점을 두었다.

 

여러 문제들 끝에 결국 주요 기능 3 가지 중 하나밖에 완성을 못해 역시나 중간평가 때도 기능의 축소와, 이에 따른 프로젝트의 방향성 재정비가 주요 피드백으로 들어왔다.

 

최종 평가

최종 평가는 11월 말에 진행된다. 이때는 프로젝트의 최종 결과물을 내야 한다. 중간 평가 이후 잠시 휴식 기간을 가진 뒤 9월부터 다시 개발을 시작하기로 했다. 우리 팀원들은 다 휴학없이 진행했기 때문에 9월부터는 매주 2번 만나던 것에서 1번 만나는 것으로 운영 방식이 수정되었다.

 

마찬가지로 각자 기능을 개발하고 진행 상황을 공유하였고 크몽을 통해 디자이너를 구해 디자인도 완성해 나갔다. 이 시기부터는 내가 프랑스어 자격증 공부와 병행해 프로젝트를 진행해 정말 정신없이 시간이 흘렀다. 9월 시작과 동시에 중간평가 이전에 기능 완성에만 초점을 둬서 아쉬웠던 프로젝트 패키지 구조들을 리팩토링하고 이를 기반으로 나머지 기능들을 완성해 나갔다. 우리 프로젝트의 경우 기존의 것들을 가져오기 힘든 기능들이 많아 이를 구현하기 위한 알고리즘을 생각해야 했어서 진행이 조금 더뎠다. 사실 정말 부족한 게 많은 알고리즘들이지만 나름대로 주어진 시간 안에 팀원들끼리 회의하고 스스로 고민해가며 나름의 알고리즘을 완성시켰다. 알고리즘을 완성하기 위해선 고려해야 할 요소들이 굉장히 많았는데 짧은 시간 안에 이 모든 걸 고려해가며 알고리즘을 완성하는 건 불가능하다고 판단해 알고리즘 안에 고정시켜놓을 요소와 input으로 받을 요소들을 정해놓고 단순화시키는 방식으로 알고리즘을 빠르게 완성했다.

 

10월 말 중간고사, 11월 중순 프랑스어 시험으로 거의 만나지 못해서 프론트와 백이 각자 기능은 완성했는데 연결을 하지 못했고 그 밖에도 여러 이슈들 때문에 빠른 배포가 불가능한 상황이었다. 그래서 팀원들끼리 만나서 각자 목표가 무엇인지 우리가 어떤 것에 집중해야 하는지 등에 대해 얘기를 나눴고 최종적으로 내린 결론은 "최종 발표때 1차 목표가 완성된 프로젝트가 배포된 것을 보여드리자"였다.

 

프랑스어 시험 이후 나는 AWS Route53을 통해 도메인을 구매하고 빠르게 백엔드를 배포해 프론트 담당 팀원이 내가 없어도 연결 테스트가 가능할 수 있게 했다. 연결은 성공했으나 프론트 배포 과정에서 계속 이슈가 발생해 결국 로컬에서 시연을 할 수 밖에 없어 아쉬웠다. 그래도 그날 새벽 4시까지 배포를 위해 노력했기 때문에 후회는 없다. NextJS 기반 프로젝트라 당연히 여타 다른 JS기반 프레임워크처럼 pm2와 nginx를 이용해 무중단 배포를 할 수 있을 것이라 생각했는데 왜인지 static 파일을 불러오는 데 문제가 생겼고 결국 해결하지 못했다..😥

 

그래도 심사위원분들이 완성하지 못할 기능들이라고 생각했는데 완성된 형태로 돌아갔다고, 잘했다고 말씀하셨고 부족한 점은 많지만 완성을 해내서 너무 뿌듯했다. 이때 완성된 기능들에 대한 피드백도 들었는데 방학 때 기회가 되면 이를 보완하고 싶다.

 

후기

소마를 하면서 기술적으로도 많이 성장하고 멘토링을 통해 현업과 개발자로서의 현실 등도 들으면서 내 진로에 대해서도 깊게 고민해볼 수 있는 시간을 가져서 너무 좋았다. 이번 년도 애초에 목표가 졸업 요건 달성이라 이를 소마와 병행하느라 놓친 것이 많은 것 같아 아쉽지만 그래도 팀원들도 좋았고 끝까지 좋은 관계를 유지하며 프로젝트를 마무리한 것만으로도 큰 수확이라고 생각한다.

 

 

728x90
반응형

'기록' 카테고리의 다른 글

2022 톺아보기  (0) 2022.12.09

댓글