코드스쿼드 마스터즈 백엔드[JAVA] 코스 마무리 회고 [2022.06.10]
지금 보고 계시는 글은 코드스쿼드 마스터즈 과정에 참여하며 느끼고 학습한 내용을 정리한 글입니다.
저번 주에 시작한 것만 같은 코드스쿼드 과정이 벌써 마무리되었습니다. 마지막까지 유익한 프로젝트와 수업이 진행되어서 떠나기가 더 아쉬웠던 것 같습니다. 개인적인 이유로 수료를 3주 앞두고 떠나게 되었지만 얻은 것이 너무 많아 후회는 없는 것 같습니다.
공부를 거듭하면서 더욱 선명하게 느껴지는 것은, 좋은 개발자가 되는 길은 참 멀다는 사실입니다. 더 많은 지식을 쌓을수록 스스로 얼마나 부족한지 깨닫게 되고 그 때문에 때로는 슬럼프에 빠지기도 했습니다. 선배 개발자분들은 이 과정을 모두 거치고 깨지고 단련된 후의 모습이라는 것이 새삼 대단해 보이는 생각도 듭니다. 갓 전입온 이등병이 병장을 보는 느낌이랄까요...
그래도 과정을 마치고 나니 현업에서 필요한 아주 최소한의 지식은 얻을 수 있었습니다. 과정은 끝났지만 앞으로의 시간도 현업에 필요한 지식을 익히는데 사용할 예정입니다.
# 코드스쿼드
코드스쿼드에 입소해서 첫 미션을 수행할 때만 해도, 클래스가 정확히 무엇인지 설명할 수 없는(충격적) 실력을 갖추고 있었습니다. 파일 하나에 모든 코드를 쑤셔넣으려 하는데 알 수 없는 오류로 실행되지 않는 인텔리제이를 야속하게 여기기도 했었습니다. 추후 피어리뷰 시간에 멤버들의 코드를 보니 얼마나 부끄럽던지요..ㅎㅎ
위와 같은 학습의 과정이 1월부터 지금까지 계속 이어졌다고 보면 됩니다. 알 수 없는 난관에 부딪히거나 너무나 방대한 생태계와 막막한 학습량과 같은 좌절을 맛보다가도, 멤버들과 함께 으쌰으쌰 하며 '좋은 코드, 좋은 개발자'라는 목표에 꾸준히 도전했습니다.
수업에 대해서?
비밀은 아니지만, 사실 코드스쿼드에서 떠먹여 주는 것은 없다고 봐도 무방합니다. 풀타임 자기주도학습, 극한의 야생형 개발, 일부러라도 더 삽질하라고 부추겨주시며 입을 무겁게 닫으시는 마스터님들.... 의 콜라보로 정말 열심히 하지 않으면 살아남지 못합니다. 그래서 일주일에 두 번 있는 마스터세션에서 집중하는게 참 중요합니다. 매 수업마다 주제를 정해서 한 두시간동안 개괄적인 개념수업과 잡담, 프로젝트의 방향성에 대해 잡아주십니다. 물론 짧은 수업만으로 모든 것을 배울 순 없으니 수업이 끝나도 개인학습을 또 이어가야 합니다 ...ㅎㅎ
지금까지 떠먹여주는 스파르타 교육만 받아오다 아메리칸 스타일(?) 의 방치형 양육을 받으니 참 신선하기도 하고, 막막하기도 하고 그랬습니다.... ㅎㅎㅎ 하지만 현업에서의 학습 방법과 유사할 것 같다고 생각합니다. 어느 사수라도 주니어인 제게 지식을 떠먹여 주지는 않을 테니까요. 어쩌면 시니어가 없는 회사에 가거나 본인이 최고 시니어가 된다면... 이 생존법이 어느 때보다 힘을 발할 것 같다는 생각이 듭니다.
학습문화
늘 드는 생각인데, 개발자들은 참 선한 것 같습니다. 아무 이익이 없음에도 시간을 써가며 남의 에러를 잡아주고, 과외를 해가며 지식을 전달하는 동기들의 모습이 참 감사했습니다. 직장생활로 바쁜 수료한 선배님들도 저녁시간에 시간을 내서 후배들의 질문을 받으러 오시고, 직접 답을 주는 것이 아닌 스스로 생각할 수 있는 질문을 던져주시는 것도 좋았습니다.
디스코드 채널에 들어가면 언제나 함께 모여 코딩하거나, 토론할 수 있는 사람이 있다는 것도 참 좋았습니다. 개발에 열의를 가진 사람들과 24/7 커뮤니케이션 할 수 있다는 것이 새삼 감사했습니다.
# 아쉬운 점
저는 처음 입소할 때만 해도 수료하면 취업이 완성되어 있을 것이라고 생각했습니다. 지금 생각하면 참 귀엽네요. 물론 아니라는 걸 깨닫고 부족한 부분들을 채우는 중입니다.
- 문서화
문서화는 개발자의 애증같은 존재라고 들었습니다. 좋든 싫든 끌어안고 가야 합니다. 프로젝트를 진행할 때 마다 명세를 작성하고 리드미를 꾸미고 설계도를 만들고 발표자료를 작성하고 깃헙 이슈나 풀리퀘, 일일회고와 개발블로그 등 어플리케이션 코드 작성 외에도 많은 일들이 있다는 것을 왜 알지 못했을까요.
일정이 바빠지고 코드리뷰 풀리퀘스트 날짜가 다가올수록 어플리케이션 구현에만 집중하는 현상이 생기는 경우가 많았습니다. 사실은 문서도 구현의 일부인데도 말이죠... 머리로는 이해하지만 제 몸은 잘 따라주지 않았습니다. 아직도 헤매는 부분입니다. 포트폴리오를 위해 문서화를 해야한다는 강박보다는 잊지 않기 위해 기록하는 개발자가 되려 조금 더 의식적으로 노력해야할 부분입니다.
- 타임트래킹
자율적으로 주어지는 시간이 늘어날수록 마음이 더 풀어지는 것 같습니다. 시간이 무한하다는 착각속에 흘려 보낸 시간이 참 많습니다. 뽀모도르 타이머도 구입해봤지만 참 쉽지 않네요 -_-
- 운동
주짓수 마스터 호눅스의 조언에도 운동을 하지 않았습니다. 아직 젊다는 핑계를 댔습죠...예.. 아직 느낌만큼은 건강하지만 80세 개발자 인생인데 운동을 조금 해야 하겠습니다. 배나온 대머리 시니어 개발자가 되고싶지는 않습니다..... 제발.....!
- 개인공부
코드스쿼드에서는 끊임없이 미션이 주어집니다. 정신없이 수행하다보면 스스로 무언가 대단하고 많은 일을 하고 있다는 착각이 들기도 합니다. 물론 과정의 볼륨이 꽤나 컸기 때문에 절대적인 학습량이 적었던 것은 아니지만, 따로 시간을 내어 자기개발을 하거나 사이드 프로젝트도 진행해보고 싶었는데 체력을 핑계로 많이 시도하지는 못했습니다. 회사에 가게 된다면 지금과 상황이 하나도 다르지 않을텐데 지금부터라도 시간을 쪼개서 사용하는 요령을 익혀놔야겠습니다.
# 잘했던 점
잘했다 보다는 노력한 점이라고 하는게 더 어울릴 것 같습니다.
- 개발서적과 강의를 꾸준히 봤다 !
인프런에서 본 강의입니다. 강의가 조금 비싸서 그렇지 내용이 정말 좋아서 두, 세번은 본 강의가 대부분입니다. 위 강의에 추가로 유튜브 자바의 정석 강의도 추천합니다 ㅎㅎ 개념 잡기 아주 좋았습니다. 과정과 병행해서 보려니 정신없기도 했지만 시간을 내서 학습한 것이 참 다행이라는 생각이 듭니다.
도서목록 :
- 오브젝트
- Real MySQL8.0
- 자바의정석
- 토비의 스프링
- 이펙티브 자바
피똥싸며 읽었는데 써놓고 보니 참 적어 보이네요..ㅎㅎ 아직 전체를 읽은 것은 아니지만 좋은 개발자분들의 이야기를 담은 텍스트를 읽다보면 은연중에 좋은 개발 문화가 마음에 새겨지는 느낌이 들기도 합니다. 특히 코드스쿼드에서 오브젝트의 저자 조영호님의 특강을 들을 기회도 있었는데, 참 좋은 시간이었습니다. 개발이라는 분야에 철학과 신념을 갖고 일한다는 느낌이 와닿았았습니다.
특히 Real MySQL을 읽으며 생각없이 막 쓰던 MySQL을 깊게 배우다보니 백엔드 멤버 사이에서 비공인 DBA라고 불리기도 했던 경험이 있습니다.ㅋㅋㅋ 처참한 실력인데 지금 생각해도 참 부끄럽네요.
명작은 그 전개와 결말을 알고서도 다시 찾게 만든다고 하죠. 이 책들이 그런 것 같습니다. 앞으로도 계속 읽고 또 읽어서 그 정수를 체화시켜야겠다는 다짐이 있습니다.
- 멤버들과 좋은 관계를 쌓았다.
백엔드 멤버는 총 40명입니다. 모두가 각자의 개성이 있고, 잘하는 실력도 그 성격이 천차만별이었습니다. 모든 것을 잘하는 멤버는 없고, 잘하는 분야를 모두가 한가지는 갖고 있습니다. 앞으로 함께 경력을 쌓으며 전문분야에 대해 이야기 할 친구들이 생기는 것은 참 좋은 일입니다. 인간적으로도 너무 좋은 사람들을 많이 만나서 참 좋습니다.
# 앞으로의 계획
중간회고에서 기록했듯이 CS, git, 문제풀이, java, Spring, DB 접근기술 등을 학습해왔습니다. 이 외에도 AWS 인프라, CI/CD, OAuth+JWT, docker 같은 기술들을 조금씩 맛보며 백엔드 생태계의 감을 서서히 잡아가고 있습니다. 필요한 기술들이 최소한 어떠한 것인지는 맛보았으니 앞으로 취업 전까지 더 집중하기로 정한 분야는 java, spring, rdb, CS입니다.
- 공부
인프런이 키웠던 5개월이라 해도 과언이 아닙니다. '우아한형제들'의 김영한님이 계시지 않았다면 취준생인 제가 JAVA 백엔드 생태계를 파악하는 건 정말 어려웠을 것 같다는 생각이 듭니다.
자바와 스프링은 어차피 평생 공부해야할 분야이므로.. 취업 전까지 완벽히 준비하는 것은 불가능하다고 생각합니다. 수 없이 본 자바의정석으로 언어 기초를 다시 잡고 장난감 프로젝트를 여러개 해보면서 깨끗한 코드에 도전해야겠습니다.
개인적인 생각이지만, 프레임워크(Spring)는 깊게 공부할수록 투입한 시간에 비례하는 아웃풋이 나오지는 않는 것 같습니다. 어플리케이션을 만드는데 사용하는 기술은 정해져있고 깊은 내용의 작동원리를 아는 것이 물론 중요는 하겠지만 당장 급한 것은 아니라고 생각합니다. 예를 들어, 스프링의 기본 오브젝트맵퍼가 무엇인지와 인풋과 아웃풋이 어떻게 되는지를 아는 것은 중요합니다. 당장 써야하는 내용이니까요. 하지만 이를 확장한 multi-depth 커스텀 맵퍼를 만들어서 활용할 일은 전혀 없습니다. 실무 중 10년에 한 번 정말 필요할 때 찾아보며 적용하면 되는 것인데 레퍼런스를 처음부터 읽으며 고통받거나 토비의 스프링의 어려운 내용을 꾸역꾸역 읽을 필요 없이 '가성비 넘치는 공부'를 하면 된다고 생각합니다.
그래서 ! 스프링은 인프런 김영한님 로드맵 강의들을 다시 계속 보며 익히고, 필요한 내용들은 토비의 스프링에서 가볍게 알아가는 방향으로 공부할 예정입니다. 토비의 스프링 독서 스터디도 참여하고 있으니 수월하지 않을까 희망해봅니다.
개인적으로 DB는 깊게 공부해도 가성비가 떨어지지는 않는 것 같습니다. 보고있는 Real MySQL을 다 보고, 프로젝트도 한두개 해보고, 더 어려운 책으로 넘어갈까 합니다.. 호눅스가 소개해준 책은 트랜잭션 기술만 두꺼운 한 권이더군요..
(가성비는 없지만 맵퍼가 궁금할 분들을 위해...https://defacto-standard.tistory.com/796)
- 취업에 대해...
말하는 감자도 채용하는 회사가 있다면 다행이겠지만, 세상은 차가운 곳이니까요. 코딩도 하는 감자가 되기 위해서 더 노력해야 합니다. 선배 개발자분들의 이야기로는 과거보다 신입에게 요구하는 수준의 레벨이 급격하게 늘어나고 있다고 하십니다. 공부해야할 양은 방대하지만 차근차근 해나가다 보면 저도 모르는새 회사에 다니고 있지 않을까요. ㅎㅎ
다들 말하는 네카라쿠배도 물론 좋겠지만, 제가 작성하는 코드의 비즈니스 밸류가 가장 큰 회사에 가고 싶다는 생각을 요즘 많이 하게 됩니다.
어느 회사의 복지가 좋다고 하더라. 워라밸이나 경영진이 깨어있는 회사다, 연봉이 높구나 하는 것 보다는 세상에 기여할 수 있는 서비스를 만드는 곳, 성장할 수 있는 곳에 속하고 싶다는 생각을 많이 하게 됩니다. 취업 준비를 위해 공부를 할수록, 동료들과 취업에 대한 이야기를 할수록 어느 순간부터 연봉과 복지, 네임밸류만 따지는 제 모습을 발견하게 됩니다. 물론 조건을 따지는 것이 나쁜 것은 아니지만 그래도 스스로의 기준을 세우고 목표를 찾으려 합니다. 아직 갈 길이 많이 남아있으니! 천천히 하면 되겠지 생각합니다 ㅎㅎ
- 프로젝트
코드스쿼드에서 많은 프로젝트를 진행했습니다. 하지만 대부분 학습의 성격이 강해 포트폴리오로 사용할 만한 것은 마땅치 않습니다. 그래서 실무의 감을 익히고자 IT동아리 참여를 도전해볼까 합니다. 제가 많이 보며 동기부여 받는 코드스쿼드 선배님! Jane의 글(https://velog.io/@janeljs/2021%EB%85%84-%ED%9A%8C%EA%B3%A0) 에도 나와있듯, 저는 특히 강제성이 조금이라도 있는 일정이 생기면 더 책임감이 생기는 것 같습니다. 지금 진행중인 공부가 마무리되는 대로 다음 도전을 이어나갈 예정입니다.
이 외에도 코딩테스트, 면접, 자기소개서, 회사 탐색, 포트폴리오 정리 등 준비해야할 것이 참 많습니다. 그래도 조급하진 않습니다. 차근차근 하면 됩니다.
정말 진심으로 끝나지 않을 것 같았던 코드스쿼드 과정이 다 끝났고 이제 남은 부분은 제 노력뿐입니다. 80살까지 이런 상태가 지속될테니 하루라도 빨리 얼른 익숙해져서 학습과 적용을 삶의 일부로 적용하는 개발자가 되어야겠습니다.