수료생이 전하는 내일배움캠프의 생활기 | 백엔드 Spring 과정 김민선

수료생이 직접 이야기하는 생생한 내일배움캠프 생활을 들어보세요.
May 20, 2024
수료생이 전하는 내일배움캠프의 생활기 | 백엔드 Spring 과정 김민선
✍🏼
내일배움캠프 안에서는 어떤 일들이 일어나고 있을까요? 4개월동안 오롯이 집중해야 하는 내일배움캠프를 선택하기까지, 많은 고민이 될 수밖에 없을 거예요. 이러한 분들을 위해 내일배움캠프를 직접 경험한 수료생들이 들려주는 '진짜' 내배캠 이야기로 여러분을 초대합니다. 수료생들의 생생한 경험담을 통해 내일배움캠프에서 어떤 성장과 발전을 마주할 수 있을지 그려보세요.
 
안녕하세요, 저는 백엔드 Spring 3기를 수료한 김민선입니다. 오늘은 제가 경험한 내일배움캠프 생활을 모두 전달해드릴게요!
 

⏳내일배움캠프에서의 하루

Q. 오전 9시부터 오후 9시까지 어떤 일정으로 진행되나요?

아침 9시부터 밤 9시까지 진행되며 점심시간은 1시부터 한 시간, 저녁시간은 6시부터 한 시간입니다. 학습 시간 도중에는 팀원들과 화면 공유나 카메라를 켜서 자리에 있는지 확인하십니다. 학습량이 상당히 많은 편이니 참여하기 전부터 체력을 늘려놓는 편이 좋습니다.
아침에 입실 체크를 하고 밤에 나갈 때는 퇴실 체크를 하는데, 체크를 까먹으면 결석으로 기록되니 주의하셔야 합니다. 아침에는 한 시간 동안 코딩테스트 연습을 하거나 기술 면접을 준비하고 이후 시간에는 강의를 듣거나 팀 프로젝트 주간이면 과제를 하는 시스템입니다.
레벨 별로 반을 나눠서 실시간 강의를 진행하는데, 베이직, 스탠다드, 챌린지로 나뉩니다. 저는 Spring만 생각하고 스탠다드에 들어갔더니, 알고리즘 스터디 조원도 여기에 맞추어 짜주어서 살짝 아쉬움이 있었습니다. 이 점 고려하셔서 수강할 실시간 강의 레벨을 선택하시기 바랍니다. 다른 반의 강의도 녹화본으로 제공되는 데다가 본인이 잘 한다면 스탠다드에 들어가도 자신의 수준에 따라 나중에 바꿀 수도 있으니 처음에는 알고리즘 스터디 기준으로 반을 선정하는 것을 추천드립니다.
매일 배운 것을 TIL로 써서 제출해야 합니다. 처음에는 배운 내용 한 두 개 정도를 글로 잘 정리하는 것이 아니라 매일매일 한 것을 모두 적었습니다. 나중에 보니 그 날 배운 내용 중에 새롭고 정리하고 싶은 것만 작성하는 것이 더 나은 것 같습니다.
 

Q. Zep에서의 학습은 어떻게 이루어지나요?

Zep에는 일단 팀별로 앉을 수 있는 팀별 공간들이 마련되어 있습니다. 중앙에는 매니저님 방과 튜터님들 방이 있습니다. 팀별로 앉아서 학습을 진행하다가 질문사항이 생기면 매니저님이나 튜터님께 가서 질문을 하는 형식입니다. 알고리즘 스터디 방도 따로 있어서 스터디 시간마다 이동해서 팀별로 앉습니다. 팀이 한 번 편성되면 그 팀으로 강의 주차가 진행된 후 팀 프로젝트를 하게 되는데요. 강의 주차때는 주로 아이스 브레이킹을 하고 팀 프로젝트때는 팀 내에서 화면공유를 하거나 마이크를 켜고 서로 상의하고 협업하며 일하게 됩니다.
저는 제 자리에서 나가지 않았지만 외향적인 성격을 가진 수강생들은 초기부터 여기저기 인사하러 다니고 친목을 도모하는 모습을 볼 수 있었습니다. 저는 잘 하시는 분이랑 팀을 최종 프로젝트 전에 딱 한 번만 시켜줘서 처음에는 잘 하는 분들의 존재조차 몰랐는데 나중에 보니 알고보니 제가 수강한 기수에는 실력자들이 꽤 있었습니다. 처음부터 잘 하시는 분들과 교류했다면 튜터님은 물론이고 그 분들이 알려주시는 것에서 좀 더 도움을 받을 수 있지 않았을까 싶습니다.
 

📚내일배움캠프의 커리큘럼

Q. 내일배움캠프는 4개월간 어떤 커리큘럼으로 진행되나요?

캠프가 시작하기 전 한 달 동안은 사전캠프를 진행하며 캠프 일정의 절반 정도 강도를 미리 체험하며 워밍업을 하는 기간을 가집니다.
그 후에는 주차별로 Java 문법, Spring 입문 주차, Spring 숙련 주차, Spring 심화 주차가 진행되고 각 주차가 끝날때마다 개인 프로젝트 과제나 팀 프로젝트 과제가 있어서 인풋과 아웃풋이 적절하게 있는 커리큘럼이 진행됩니다. 이때 제출한 과제에 대해서는 튜터님들이 코드리뷰를 해 주시니 성심껏 해서 내는 것이 본인의 성장에 도움이 될 것입니다. 또한 과제가 있다고 사전에 공지하지 않고 금요일에 나오는 경우도 있으니 강의를 지급받았을 때에는 부지런하게 미리 수강을 마쳐놓는 것이 커리큘럼을 따라가는데 유리합니다.
심화 주차까지 마친 후에는 튜터님들이 AWS이용, 자동 CI/CD 파이프라인 구축 등 그때 그때 수강생들이 요청하는 심화 강의를 제작해서 공유해 주십니다.
마지막 한 달 동안은 최종프로젝트가 진행되는데 시작하고 (예고 없이) 2주 안에 MVP기능 발표회를 하니 스코프 설정과 일정 관리에 주의 하시기 바랍니다.
 

Q. 사전캠프에 참여하셨나요?

사전 캠프는 본 캠프의 맛보기로 강의를 들으며 간단한 웹페이지를 구현하는 느낌입니다. 저는 2년간 개발에는 손을 놓고 살다가 사전 캠프를 했는데 굉장히 즐거웠습니다. 재미있게 동기부여를 받으면서 시작할 수 있어서 추천드립니다. 또 이때 강의를 듣는 집중력을 기르고 규칙적인 생활에 조금 익숙해질 수 있는데 사전캠프 기간 없이 본 캠프를 바로 시작하면 상당히 힘들었을 것 같습니다.
 

Q. 미니 프로젝트(기본기 프로젝트)과정에서는 무엇을 배울 수 있었나요?

미니 프로젝트 주제는 팀과 팀원들을 소개하는 웹페이지를 만드는 것이었습니다. 난이도는 하 정도라고 생각합니다. 사전캠프 영상에 필요한 재료는 다 들어있어서 나온 것들을 잘 따라하면 별로 어렵지 않아서 모두가 웹페이지 정도는 뚝딱 만들 수 있게 됩니다. 프로젝트를 기획할 때 싸이월드를 따라하자고 정하고 팀명도 그에 맞게 정하는 등 기획 단계도 정말 즐거웠고, 잘 하시는 분들과 만나게 되어서 그 분들이 코드를 짜고 리팩토링 하는것을 보며 동기 부여도 받았습니다. 저는 싸이월드의 방명록 기능을 구현했는데, 사전캠프 강의에서는 파이어베이스 스토어를 쓰라고 했지만 동적 삭제를 하기 위해 리얼타임 db를 대신 사용하고 댓글마다 랜덤으로 카카오 프로필이 뜰 수 있도록 만드는 등 혼자 너무 재미있어서 계속 했던 것 같습니다.
자바스크립트는 잘 안 다뤄 봐서 새로웠는데요. 자바스크립트의 for each 문법도 새롭고 재밌었습니다. 개발이 이렇게 재밌는 거였지,하고 일깨워주는 경험이 되었고, 초심자도 개발의 재미를 느끼며 동기부여 받고 캠프를 시작할 수 있는 좋은 기회라고 생각합니다.
 

Q. 각종 언어 및 프레임워크 학습에서 어려운 점은 없으셨나요?

Java 문법 주차 강의는 Java 문법을 설명하고 예제 코드를 보면서 이해 및 실습을 하는 식으로 진행됩니다. 다들 따라가는데 무리가 없을 정도입니다.
Spring 입문 주차에 들어가면 강의량이 많고 강의를 소화하기가 힘들어집니다. 하루 종일 강의만 듣고 이해한다면 따라갈 수 있을 것 같은데 체력이 안 되어 너무 힘들었습니다. 이해가 안 되더라도 뒤에서 예제 코드를 계속 보다 보면 이해가 되니까 빨리 듣는것을 추천드립니다. 감이 안 잡혀서 꽤 고생했습니다. 예고 되지 않았던 과제 등이 금요일에 발표되어 학습 일정을 빠듯하게 잡는 것을 추천드립니다.
Spring 숙련 주차에 들어가면 이제 밀린 강의를 다 들어야겠다는 결심이 서고 강의를 정말 열심히 듣기 시작합니다. 강의를 일주일 동안 열심히 듣고 나면 팀 프로젝트가 시작되는데, 이때 팀원들과 코드를 짜다 보면 강의는 이해가 안 되었어도 구조적인 파악이 되기 시작합니다. 강의를 50%도 이해하지 못했어도 실제로 코드를 짜기 시작하면 이해가 되니까 걱정을 너무 하지 않으셔도 좋을 것 같습니다. 모르는 부분이 있다면 팀원이나 튜터님에게 질문하면서 적절한 난이도의 과제를 잘 마칠 수 있습니다.
Spring 심화 주차에 들어가면 또 강의량이 더 많아집니다. 굉장히 따라가기 버겁다는 느낌이 드는데요. 강의를 어떻게든 흘려라도 들어서 하나하나 다 기억하지 못해도 나중에 사용해야 할 때 무엇이 있었는지 정도는 기억나도록 하는것을 추천드립니다. 그리고 이때 팀 프로젝트를 하게 되는데 숙련주차때 어려운 부분은 다 마쳤기 때문에 CRUD의 반복이라고 느껴질 수 있습니다. 이때는 단순히 CRUD를 하는 것이 아니라 구조를 어떻게 개선할지 등의 추가적인 노력을 하시는 것을 추천드립니다.
그 후 CI/CD강의가 시작되는데 이것도 마찬가지로 흘려라도 듣는 것을 추천드립니다. 프로세스의 전반적인 것에 대해 감을 잡을 수 있습니다. 마찬가지로 이것도 배포 스크립트를 실제로 작성하면서 이해도를 높일 수 있습니다.
 

Q. 내일배움캠프는 정규 과정 외에도 다양한 세션을 제공하고 있습니다. 가장 만족한 세션은 무엇인가요?

저는 스탠다드 반 수업을 주로 들었는데 강의량이 많고 하나하나 외우기 힘들어해서 전반적인 흐름 파악이나 숲이 되는 개념 파악도 어려웠던 차에 Spring의 전체를 볼 수 있도록 도와주었던 세션들이 Spring 이해도를 올리는 데에 큰 도움을 주었습니다. 챌린지 반 수업까지 다 챙겨듣기에는 나중에는 시간이 모자라져서 강의 노션만 봤는데도 새로운 기술들이 있다는 것을 알게 되었고, 이를 나중에 프로젝트에도 적용해 보는 등 매우 유익했습니다.
세션은 튜터님이 심화 학습에 필요하다고 생각하시거나 수강생들이 요청하는 주제로 매 주 두번씩 레벨별로 진행됩니다. 세션의 목적은 모든 수강생들이 원하는 것을 얻어가고 따라가도록 도움을 받는 것이라고 생각합니다.
베이직 반은 한 달 넘게 자바 문법이나 객체지향 프로그래밍에 대해 다루고 있었고, 스탠다드반은 Spring 강의에서 나온 내용을 포인트를 찝어 개념을 이해시켜 주시려고 노력하셨습니다. 또한 챌린지반은 비동기 함수나 QueryDSL, Redis같이 추가적으로 프로젝트에 적용하면 좋을 개념에 대해 강의하셨습니다.
 
 

Q. 내일배움캠프의 하이라이트라 할 수 있는 최종 프로젝트, 민선 님은 어떤 점이 가장 좋으셨나요?

네이버 지도 API를 사용하게 되었는데 예상과 달리 동작하지 않는 라이브러리가 많아 되는 것을 찾을 때까지 힘들었습니다. 그리고 자바스크립트 코드도 JQuery 때문인지 가끔 전역변수가 적용되지 않을 때가 있어서 매우 애를 먹었습니다. (프론트 구현을 염두에 두고 스코프를 줄이는 것을 추천합니다.) 유저테스트 이후에는 프론트 관련된 피드백이 많이 들어오게 되는데, 어차피 이 때부터 프론트엔드 수정을 해야 하니 그 전에는 백엔드에 집중하는 것을 추천드립니다.
최종 프로젝트는 챌린지 팀을 할 팀을 신청받아 선정해서 진행됩니다. 챌린지팀은 튜터님이 밀착해서 봐 주시고 서버 비용도 10만원이 지원되는 것으로 알고 있습니다. (저희 팀은 챌린지 팀이 아니라서 RDS 비용이 발생할때마다 충격을 받았습니다…)
팀원들과 전 프로젝트를 했던 때처럼 역할분배를 하고 시작합니다. 각자 맡은 부분을 진행하는데, 새로운 기술을 맡은 팀원의 역량 파악 후 역할 분담을 하는 것을 추천드립니다. 남은 도메인의 구현을 모두 맡게 되는 일이 발생할 수 있기 때문입니다. 혹은 스코프를 넓게 잡지 않는 것을 추천드립니다. 저희 팀은 스코프를 과도하게 잡아서 구현해야 할 양이 절대적으로 많아 인프라적인 요소나 새로운 기술에 투자할 시간이 너무 적어 아쉬웠습니다. 새로운 기술이나 인프라에 더 많은 시간을 들여서 이를 강조하는 방향으로 포트폴리오를 구성하는 것을 추천합니다.
저는 최종 프로젝트를 할 때 역할 분배에 대한 아쉬움이 있었습니다. 실습하고 싶은 기술에 먼저 도전하지 않고 MVP기능 개발을 먼저 시작했는데, 저와 공동으로 맡은 팀원이 나중에 역할 분배가 애매하다고 하여 아쉽게도 저는 제외되었습니다. 해보고 싶은 기술이 있다면 MVP기능은 중간 발표 전에 며칠 밤을 새워 구현하는 일이 있더라도 처음부터 적극적으로 나서봐야겠다는 생각을 했습니다.
그리고 제가 QueryDSL을 사용해서 구현한 기능이 있었는데요. 기능을 몰라 Repository에 여러 메서드로 오버로딩해놓은 부분에서 아쉬움이 남았습니다. QueryDSL에 대해 학습을 하고 구현했다면 여러 메서드를 하나로 합칠 수 있었기 때문입니다. 일정이 빠듯하더라도 학습에 어느 정도 더 시간을 투자하자고 생각한 계기였습니다.
 
 

🧑🏼‍🏫내일배움캠프에서 만난 사람들

Q. 내일배움캠프의 튜터님은 어떤 분들인가요?

개발이나 학습 중 더 나은 방식으로 처리할 수 있는지 등에 대해 조언해주시고, 문제 해결을 위해 같이 노력하시는 분들입니다. 상주 튜터님이 두 분 계셔서 질문을 계속 받아주시고, 퇴근 후에 질문을 받아주시는 튜터님이 6시부터 추가로 계십니다. 튜터님 방 구역으로 지정된 곳에 한 분씩 들어가 계시고 안에 사람이 없다면 들어가서 자유롭게 질문을 하는 형식입니다. 그 외에 담당 튜터님이 있는데 한 명씩 돌아가면서 주기적으로 상담을 해 주십니다. 진로 상담은 물론, 코드 리뷰를 부탁하거나 학습 목표 설정에도 도움을 받을 수 있습니다.
초기에는 개인과제 코드 리뷰를 해 주시면서 개발자로써의 인생 전반에 대해서 상담을 해 주십니다. 나중에는 주로 프로젝트의 개선점을 여쭤봤습니다. 최종 프로젝트때는 포트폴리오로 사용하기에 적합한 프로젝트가 되도록 수준을 끌어올리는 데 큰 도움을 받았습니다.
 

Q. 튜터님께 도움을 받았던 경험을 한 가지 말씀해주세요.

기술적으로는 대표적으로 크게 두 에피소드가 있습니다. 첫 번째로는 MySQL 설치에 대해 도움을 받았습니다. 몇 년전에 미리 깔아둔 것이 있는지 모르고 설치를 진행하는데 admin 비밀번호를 까먹은 상황이었습니다. 비밀번호를 치라고 계속 뜨는데 저는 비밀번호를 모르고 프로그램을 모두 삭제하고 Appdata등을 다 지운 후에 다시 처음부터 설치하려고 해도 프로그램이 계속 아직 존재한다고 떴습니다. 튜터님께 가서 여쭤보니 8080포트가 이미 사용중인 것을 확인받고 아마 프로그램이나 캐시가 삭제가 완전히 되지 않은 것 같다는 조언을 들을 수 있었습니다. 환경변수가 꼬이고 제가 VM에다 설치했는지 어디다 설치했는지 기억도 나지 않아서 MySQL로 디렉토리 전체 검색을 한 후 나오는 파일을 싹 다 삭제한 후 설치를 재진행하니 문제가 없어진 에피소드가 있습니다.
두 번째로는 Response에 에러코드와 상태메시지를 공통적으로 리턴값으로 주는 DTO를 만들고 싶었습니다. 그런데 이것을 처음에 상속으로 구현했더니 모든 DTO에서 super()를 정의해야 해서 코드 중복성이 너무 심하고 구조가 효율적이지 않다는 생각이 들어 튜터님께 상담했습니다. 제너릭을 써보는게 어떻겠냐는 말을 듣고 제너릭 DTO를 구성해서 훨씬 효율적으로 구성할 수 있었습니다.
포트폴리오 구성에도 많은 도움을 받았습니다. 면접에 가져가서 돋보이는 프로젝트가 될 수 있도록 도전해볼 것, 새로 사이드 프로젝트를 더 하지 말고 최종 프로젝트를 발전시킬 것을 권유하셔서 그 방향으로 설계했고, 최종프로젝트 팀의 대부분이 지금도 팀 활동을 이어가고 있습니다. 캠프가 끝나고 취업 준비를 시작하다 보니 회사마다 자소서를 작성하는데 한 건당 2~3시간이 걸리고 취업 공고 준비에 면접 준비에 코테 준비도 본격적으로 해야 해서 프로젝트에만 집중할 수 있었던 캠프 때와는 다르게 개발에 투자할 수 있는 시간이 상대적으로 매우 적어집니다. 사실 저는 튜터님 조언을 들었지만 개인적으로 욕심이 있어서 사이드 프로젝트를 캠프가 끝나자마자 추가로 진행했는데요. 일정이 너무 빠듯하고 할 일이 많아서 너무 버거웠습니다. 또 캠프 외부에서 사이드 프로젝트 팀원을 모집하니 개인 일정이 모두 달라 일정 조율도 너무 힘듭니다. 최종프로젝트 팀원 그대로 가시는 것을 추천드립니다. 튜터님의 조언이 매우 옳았다는 것을 매일 깨닫고 있습니다.
 

Q. 내일배움캠프의 매니저님은 어떤 역할을 해주시나요?

매니저님들은 수강생들의 어려움이나 얼마나 잘 따라오는지 여부 등을 파악해서 커리큘럼을 만드는데에 도움을 주시고 모든 수강생들의 진행상황을 관리해주십니다. 과제를 내지 않으면 과제를 언제까지는 시작하셔야 한다고 압박 연락(!)을 해주시는데요. 매니저님은 주로 매니저님 방에 계시고 캠프 관련해서 모든 질문을 받아주십니다. 아침에 출석을 하지 않으면 모닝콜을 해주시기도 합니다.
 

Q. 매니저님께 도움을 받았던 경험이 있나요?

매니저님은 수강생들이 잘 해낼 수 있도록 할 수 있는 모든 도움을 주시는 분들입니다. 어떤 부분이 어려운지 먼저 여쭤봐주셔서 도움을 얻을 수 있었습니다. 예를 들어 어려운 부분에 대해 튜터님께 전달해 주시고, 관련된 특강에 대한 정보를 알려주셨습니다.
 
 

Q. 팀프로젝트에서 만난 팀원들은 어땠나요?

팀원들은 서로 학습이나 생활과 관련된 고민을 나눌 수 있는 사람들이었습니다. 팀원들과 강의를 들으면서 이해가 안 되는 부분을 얘기하거나 추가로 학습하면 좋을 것에 대해서도 이야기하며, 팀 프로젝트를 할 때는 db 설계부터 구현까지 화면공유를 하고 진행했습니다.
팀원은 매니저님이 일괄적으로 정해주십니다. 여태까지 팀 구성표를 본 결과 모든 팀이 실력의 평균치를 비슷하게 가지도록 배정합니다. 팀원은 1~2주 단위로 강의와 팀프로젝트를 수행한 후 바뀝니다.
 

Q. 팀원과 교류하며 가장 기억에 남는 일화를 작성해 주세요.

최종 프로젝트를 할 때 MVP 중간발표 전 날, 배포된 프로젝트가 화이트라벨을 띄우며 깨지는 일이 있었습니다. 백만 배포했을때는 멀쩡했는데 프론트를 동시에 배포하니 문제가 생겨서 그 날 팀원들과 밤을 새우며 문제 해결을 하려고 했습니다. 배포가 언제부터 깨졌는지 파악하기 위해 예전 커밋으로 돌아가서 다시 배포를 해 보면서 원인을 추측하기 시작했는데요. 문제가 되는 html 변경사항을 보고도 저는 그 변경사항이 문제가 없을 것이라는 생각에 사로잡혀 문제를 파악하지 못 했습니다. 다른 팀원이 문제에 대해 말해주었지만, 절대 그것이 잘못될 리가 없다고 생각했습니다. 그러나 실제로 그 원인으로 문제가 발생했다는 것을 알게 되었고, ‘돌다리도 두드려보고 건너자’, ‘차근차근 확인하자’라는 생각을 가질 수 있었습니다. 또한 다른 프로젝트나 환경에서 항상 문제가 없었어도 여기에서는 문제가 생길 수 있다고 마음 가짐을 바로 잡는 계기가 되었습니다. 이 사건 이후에는 빌드 테스트가 통과되지 못할 시 코드가 머지(merge)되지 않도록 자동화 시스템을 추가했습니다.
 

💡백엔드 개발자를 고민하는 후배들에게 하고 싶은 말

코드카타 시간에 프로그래머스 문제를 풀지만 백준에서 분류별로 푸는 것도 병행해보세요.
 
 

고민이 끝났나요? 이제 내일배움캠프에서 개발자로의 여정을 시작하세요

국비지원 부트캠프는 인생에 딱 한번 얻을 수 있는 기회입니다. 내일배움캠프는 수강생들이 이 기회를 헛되이 날려보내지 않도록 최선을 다해 교육과정을 준비했습니다. 개발자로 새로운 커리어를 시작하고 싶다면 단단한 의지만 준비해오세요. 내일배움캠프와 함께 보내는 4개월은 인생 최고의 성장 경험이 될 것입니다.
 
 
 
CREDIT
글 | 김민선 내일배움캠프 수료생 편집 | 정효재 팀스파르타 에디터
Share article
Subscribe to our newsletter
RSSPowered by inblog