코드숨 2기 그 3달간의 여정!

SeungMin_Sa·2020년 12월 26일
1

회고

목록 보기
1/1

🙄 어쩌다가 신청하게 됐어?

이직을 계획하고 있었다.
1월 말에 퇴사하겠다고 말했고, 다시 처음으로 돌아간다는 생각으로 프론트엔드 개발자가 되는 데 필요한 결정이었다.
나에게 있어서 공부하는 즐거움을 주고 즐기며 일할 수 있겠다고 확신을 준 프론트엔드 녀석…. 그 녀석으로 인해서 더는 지체할 수 없었고, 이직을 위해서 회사에 다니는 와중에 퇴근 후 공부하기를 매일 반복하였다. 회사보다 퇴근 후가 나의 하루 시작이라고 생각했을 만큼 즐기며 공부하는 와중에 회사의 과장님 추천으로 코드숨을 알게 되었다.
혼자 프론트엔드를 공부하면서 이렇게 하는 게 맞는 걸까? 라는 의문이 들었고, 그 의문을 해결해주기 위해 누군가의 가이드가 필요하다 생각했고, 회사에 다니면서 할 수 있는 점이 가장 매리트를 많이 느꼈던 부분이었다. 그에 부합하는 것이 코드숨이였지만, 가격적으로 부담이 안 됐다고는 말 못하겠다. 나에게는 굉장히 큰돈이였고, 신중히 결정할 문제었다.
시간을 돈으로 살 수 없다는 말이 있지 않았나? 돈으로 시간을 살 수는 없는 게 분명했지만, 시간을 아낄 수 있다는 점은 명확했기에 충분히 투자할 가치가 있다고 생각했다.
그런 확신을 가지고 열심히 해보자고 다짐하며 신청하게 됐다.

서론이 매우 길었다.
이제 그 3달 동안의 험난하고 꽤나 고통스러웠던 여행🚀을 기록해보며 다시 나를 돌아보고 스스로를 다독이며 동기부여를 얻고 앞으로의 방향성을 제시해보려 한다.

🤦‍♂️ 어리버리.. 그렇게 흘러간 2주

원래 처음은 다 어렵듯이 해본 적 없고, 얕게 알고 있던 지식으로 알아가 보려 하니 역시 처음 2주는 쉽게 진행되지 않았다.
Github에 PR(Pull Request) 제대로 해본 적 없었고, 커밋 메시지에 대해서도 역시 고민해본 적 없었다.

그렇게 2주 동안 간단한 과제(커리큘럼 참고)를 수행하면서 엄청나게 많은 코드리뷰를 받았다. 받으면서 부족한 게 정말 많구나.. 라는 생각과 코드를 작성할 때 리팩토링에 대한 고민을 해본 적 없었던 나에게는 굉장히 신선하면서 하나씩 알아가는 재미를 느꼈다.

📌 2주간의 과제 PR 1주차-1, 1주차-2, 2주차-1, 2주차-2

과제를 수행하고 리뷰를 받고 받을 리뷰에 대해서 수정하고 다시 커밋하고를 반복하며 처음에 짰던 코드보다 훨씬 더 보기 좋아진 코드를 볼 수 있었다.
수정 후 코드 리뷰 받는 사이클을 반복하며 1주일 2주일이 지났을 때 이제 좀 코드숨의 과제 진행 형태를 적응해 갈 때 즘이였다.
가장 고통스러웠던 그 녀석이 찾아왔다..😢

😂 모든 고통의 근원 TDD(테스트 주도 개발)

  • 사실 코드숨 과정을 알기 전, TDD(Test-Driven Development) 의 T자도 몰랐다.
    그래서 테스트 케이스를 짜기 위해 시간을 더 많이 투자했어야 했고, 머리를 쥐어짜며 고통의 연속이 될 수밖에 없었다.
    2주차 때 만들었던 간단한 TO-DO 리스트에 대한 테스트를 작성해보라는 것이었다.

  • 3주차는 TDD 사이클 적용하기 전 테스트에 친해져 보기 위해서 아마 TDD를 제외한 과제였나 싶었다.
    아샬님의 강의 영상도 보았지만, 생각보다 쉽게 친해지지 못했다.😢
    특히 describe-context-it이 구조와 mocking 함수를 만드는 점..등
    하지만 나에게는 누가 있던가. 친절히 답해주시는 기현님..👍

📌 3주차 PR

  • 그렇게 테스트 케이스를 작성하는 것은 이런 건가? 라는 느낌이 들 때쯤 4주차부터 시작된 TDD 사이클을 적용하라는 과제였다.

아무 생각 없이 개발했던 나에겐 TDD를 왜 해야 할까? 라는 의문이 들 수밖에 없었다.
테스트를 먼저 구현하고(red), 실제 기능을 구현(green) 후, 리팩토링(refactoring)을 하라는 점은 익숙지 않았다.
아니 뭐라고?🤔 테스트를 구현하여 테스트가 깨지게 한 다음, 그에 맞춰서 기능을 구현한다니.. 처음은 설명을 들어도 이해가 가지 않았지만, 그래도 역시 부딛혀보고 깨닫는 게 아니겠는가..! 일단 해보자! 😤

그렇게 진행된 TDD 사이클에 맞춰 그에 맞는 커밋 메시지를 적고 과제를 수행하였다.
그로 인해 확실히 하나의 커밋당 작업을 잘게 나눠서 하다 보니 4주차 커밋이 69개나 되었다.

이때부터는 느껴졌던 건 TDD는 고통의 연속, 과제는 TDD를 위한 것이라 해도 과언이 아니었다는 점..!😁

사실 TDD로 과제를 진행하면서도 이렇게 하는 게 맞는 건가..? 라는 생각이 계속 들었다. 하면서도 솔직히 확신은 없었고, 그냥 하라니까 일단 해봐야지라는 생각이 없다고 한다면 그건 나쁜 거짓말이다.
그렇기에 TDD의 의문점은 여전히 가득하다 못해 흘러넘쳤다.

4주차-1 PR
4주차-2 PR

4주차부터는 무조건 TDD로 기능을 구현해야 했고, 또한 테스트 커버리지 역시 100%를 달성해야 했다.
사실 리액트는 어느 정도 다룰 줄 알았지만, 그 리액트는 단순히 "도구" 였을 뿐 중요하지 않았다. 기능을 구현할 줄 알면 뭐하니.. 그건 중요하지 않는데 TDD라는 큰 산이 나를 막고 있는데! 😢

그렇게 4주차가 지나고 5주차...8주차까지 TDD와 익숙해지기 위해 매일 꾸준히 공부하고 친해지기 위해 많은 고통을 느끼며 노력했던 거 같다.
TDD 사이클을 지키기 위해서 커밋은 각 PR당 100개 정도의 커밋이 존재하게 되었고, 그만큼 받는 코드리뷰가 많을 수 있던 거 같다.

이 과정에서 점점 TDD 사이클에 익숙해졌고, 어느 정도 테스트 케이스를 짤 수 있게 되었다. 또한, 처음에 들었던 왜 TDD를 할까? 라는 생각은 점점 사라져 가고 있었다. 코드를 리팩토링할 때 아..리팩토링하다가 기존의 기능이 안 되면 어떡하지? 라는 생각을 했지만 테스트를 작성하니 수정했을 때 조마조마한 생각 없이 안심하고 코드를 수정하는 있는 힘을 가질 수 있게 되었다. 또한, 수정하면 당연히 테스트가 깨지겠고, 깨지는 부분을 바로바로 확인하며 수정할 수 있으니 기존보다 더 빠르게 오류를 찾아 수정할 수 있었다.

5주차 PR
6주차 PR
7주차 PR
8주차 PR

🙄 NO! 회고! NO! Merge!

매주 과제를 끝내기 위해서는 PR을 Merge를 해야 한다.
하지만 과제를 다 수행했다고 해서 끝이 아니다. 회고 없이는 절대 merge를 할 수 없다.

그래도 회고 작성에 대한 부분에 대해서는 꽤 긍정적인 생각이었다.
글은 매우 못 쓰지만, 깃허브에 기록을 남기고 블로그 쓰는 것을 좋아했기 때문에 반가운 회고 작성이었다.

회고를 작성함으로써 매주 과제를 수행하고 회고를 작성할 때마다 한 주를 되돌아보는 계기가 된다. 한 주 동안 어떤 점이 아쉬웠고, 어떤 부분은 칭찬해줄 만한 일인지를 다시금 일깨워주고 마무리할 수 있게 해준다. 또한, 매주 새로 알게 된 점과 아쉬운 점에 대해서는 다음 주에 어떻게 할지를 계획도 세우게 해주는 큰 역할을 해준다.

📌 3달 동안의 회고 모음

항상 느끼는 거지만 어떤 것을 했는지 꾸준히 기록을 남기고, 자기 생각을 남기는 게 나중에 돼서도 아 이때는 이랬구나! 하면서 얼마나 발전했는지 또는 아쉬운 부분을 찾아 다시금 동기부여가 될 수 있게 해주는 거 같다.

🚀 마지막을 멋지게 장식할 4주간의 나만의 프로젝트

2달 동안 배웠던 모든 것들을 총동원하여 나만의 개인 프로젝트를 할 수 있는 날이 왔다. 이 순간을 위해 2달 동안 열심히 달려온 것 아닌가!😤
사실 개인 프로젝트에 대해서 주제를 미리 정하고 어떻게 구상할지를 생각이라도 하고 있어야 했지만, 고민조차 안 하고 있었다..😳
그렇게 시작 전 한 주라는 시간 동안 어떤 주제를 할지 생각을 해보았는데, 자신이 원하는 주제로 스터디를 모집하고 참여할 수 있는 그런 스터디 모집 사이트를 만들까 생각을 하게 되었다. 하지만 회사와 병행하고 있는 나로서는 생각을 하면 할수록 기능이 너무 많아질 거 같아서 4주라는 시간동안 제대로 마무리를 지을지에 대해서 확신이 없었다. 그래서 다른 프로젝트를 할까 더 해보았지만, 마땅히 떠오르는 주제가 생각나지 않았다. 그때 수형 님이 slack에서 쓰레드로 해주신 말이 생각이 났다.

  • 목숨 걸고 만들으라는 말씀.. 최선을 다해 도와드리겠다..

그렇게 수형 님의 말씀이 생각나서 될 때로 돼보자 하는 심보, 그리고 2달 동안 쉬지 않고 달려왔지만, 잠을 줄이지 않았어. 잠을 딱 한 시간만 더 줄여보자. 한 달 금방가. 라는 생각으로 스스로 동기부여를 얻고 개인 프로젝트 주제를 결정하였다.

결정 후 이젠 프로젝트를 진행해야지~!😤하는 순간 아 맞다..여긴 코드숨이지..? 그냥 프로젝트를 진행할 수는 없지! 라는 생각을 다시 한 번 일깨워준 규칙? 들을 말씀해주셨다.
첫 번째는 매주 구현하기에 앞서 github 개인 프로젝트 repository의 issue에 계획을 작성해야 한다. 또한, 한 주가 끝날 때마다 회고도 같이 작성해야 한다.

두 번째는 프로젝트를 매주 구현한 결과를 보여줄 수 있도록 하라는 점. 배포(웬만해서는 배포로..)를 하던, 동영상, 스크린 샷 등을 사용해서 말이다.
처음 들었을 땐 오호?🤔 왜 그래야 할까? 흠.. 그렇군..😒 생각이 들었지만, 이 역시 매주 진행하면서 몸으로 느낄 수 있었다.
일단, 보여줄 수 있는 결과물이 있어야지 트레이너분들이 보고 리뷰와 피드백을 빠르게 볼 수 있는 매개체 역할을 할 수 있는 점이 가장 큰 이유이다.
프로젝트가 끝난 후 The Nature of Software DevelopmentClean Agile책을 읽고 스터디를 하고 나서 더 확실히 그 이유를 알게 되었다.

  • 📌 배포된 매주 결과물을 보고 issue를 달아주셨던 윤석 님

그렇게 매주 계획을 세우고 회고를 작성하기를 반복하고, TDD 사이클에 맞춰 기능을 구현한 4주 동안 스스로한테 열심히 했다고 칭찬해 줄 수 있을 만큼 열심히 했던 거 같다.

📌 프로젝트 4주간의 계획

📢 고된 4주간의 프로젝트 기간이 끝나고, 결과물을 되돌아 보았다.

  1. 4주 동안 240개의 커밋, 97개의 PR이 존재했다.
  2. 기능으로는 로그인, 회원가입, 스터디 소개글 작성, 수정, 삭제와 스터디 신청에 따른 사용자 상태 등을 구현했다.

  1. 비록 테스트 커버리지는 100%를 만족하지 못했지만, 테스트 케이스는 총 229개를 작성하게 되었다.
    테스트 커버리지는 100%를 만족시키지 못했던 가장 큰 이유는 첫 번째는 글 작성할 때 외부 라이브러리 에디터를 사용하여 테스트를 작성하는 데 한계가 있었다는 점, 두 번째는 firebase를 통한 api 통신에 대한 테스트를 작성하는데 mock 함수를 만드는 부분에 대한 이해의 부족함.. (추후 고통받으며 테스트 케이스를 작성해 볼 예정.)

다른 사람들은 어떻게 볼지 몰라도 스스로에게 충분히 만족스러운 결과물이라고 생각한다.✨🥇🎉

개인 프로젝트 주소
개인 프로젝트 repository

🌈 코드숨 과정 외에서 벌어지는 일들!?

코드숨에서 소통과 커뮤니티 역할을 하는 건 슬랙을 사용하고 있다.
슬랙을 통해 각자 회고를 공유하고, 필요한 정보들과 모르는 부분을 질문할 수도 있다.
그중에서도 윤석 님이 주최하여 매주 진행하고 있는 스터디가 있다. 이 스터디는 하고 싶은 사람에 한해서 관련 기술 서적을 읽어와 매주 수요일 Google meet을 통해 주어진 범위에 대해서 의논하고, 같이 얘기할 수 있는 스터디이다.
코드숨 과정이 끝난 지금까지도 계속 이어져 오고 있고, 현재까지 진행했던 책으로는 함수형 자바스크립트, The Nature of Software Development, Clean Agile이고 앞으로도 줄 서 있는 책들이 가득하다.

스터디를 통해서 얻은 장점은 이해를 못 해서 넘어갔던 부분을 다시 다 같이 이야기하며 이해할 수 있게 되었고, 스터디를 하니 책을 더 집중해서 읽게 되었다. 또한, 다른 분들의 의견과 생각을 들을 수 있었고 가끔 현업에 관련된 이야기도 들을 수 있어서 재밌었다.
궁극적으로는 더 열심히 해야겠다는 동기부여를 매주 얻고 가서 너무 알찬 스터디라고 생각하고, 스터디를 매주 진행해주셔서 너무 감사하다. 🙏

🎊 3달간의 여정을 마치고 하고 싶은 말이 있다면

🔥 신청하실 생각이 단 1%라도 있으신 분들에게

해주고 싶은 말은 시작 전 마음 단단히 먹고 시작하는 것이 좋을 것이다. 과정이 꽤 고통스럽다.
트레이너분들이 꾸준히 압박을 넣어주긴 하지만 이 역시 스스로 열심히 할 마음을 먹지 않으면 쉽지 않다 생각한다. 자신이 가진 마음가짐이 어떤지를 확인하고 또 확인한 뒤 확신이 있으면 그때 신청했으면 한다. 그렇지 않으면 돈만 버리게 될 뿐이니..
직장이 있으신 분들이거나 이직을 원하시는 분들은 무조건 추천한다. 이처럼 온라인으로 시간 제약을 받지 않고 할 수 있는 과정이 어딨을까?
일단 신청하여 열심히 한다면 후회는 없고 돈 따위 전혀 아깝다고 생각이 들지 않을 것이다.
TDD를 배우고 싶은 분들에게는? 말해야 알까? 👍👍👍

💧 트레이너분들과 동기분들에게

코드숨 시작 전과 시작 후를 비교해 봤을 때 너무 많이 성장하게 도와준 모든 트레이너분에게 너무 감사드립니다.🙏
좋은 강의를 해주시고 늘 어디선가 지켜봐 주시는 아샬님, 누구보다 열정 가득하고 늘 자세한 코드리뷰와 스터디를 진행해주신 윤석님, 당근과 채찍을 같이 주시는 멋진 수형님, 항상 친절하게 답해주시는 기현님 까지 다시 한 번 감사드립니다! 🙏
3달간 여정을 함께한 동기분들과 1기 여러분들도 감사드립니다.🙏 항상 슬랙에서 많은 이야기와 회고를 보면서 동기부여를 얻었고, 3달 동안 지치는 순간도 있었지만, 함께 달렸기에 끝까지 할 수 있던 거 같습니다. 모두 감사드립니다! 🙏🙏🙏

🎯 앞으로의 계획이 뭐야?

길다면 길고 짧다면 짧은 3달간의 여정이 끝났다. 끝났더라도 진행했던 프로젝트에 아직 기능이 만족스럽지 못하기에 기능을 덧붙여 나갈 것이다.

📌 개인 프로젝트에 대한 앞으로의 계획

하지만 "끝은 언제나 새로운 시작"이라는 말이 있듯이 이젠 코드숨에서 배운 인사이트를 가지고 새로운 시작을 준비해야 한다. 😤
지금 회사를 퇴사하고 프론트엔드 개발자라는 새로운 시작을 위해 더 노력해야 할 것이다. 지금보다 앞으로가 더 힘들게 눈에 훤히 보인다. 하지만 고통이 있을수록 성취감과 얻는 것이 많은 걸 알기에 돌아서 가는 길보단 부딪쳐 나갈 것이다.

처음 프론트엔드 공부를 시작했을 당시의 목표와 목적을 잊지 말고 지치지 말고 꾸준히라는 말을 머릿속에 항상 가지고 앞으로 나아가야 한다. 안 그러면 내가 나한테 지쳐 스트레스로 버티지 못할 것이 분명하기 때문이다. 그래도 오래달리기는 잘하는 편이니😁 괜찮을 것이다. 지금 가지고 있는 절실함과 열정으로 꾸준히 한다면 언젠가는 이 고통이 딱딱한 굳은살이 아닌 순화되어 말끔한 새살을 돋게 해줄 수 있지 않을까? 그렇게 믿어본다.🚀
배워야 할 것들이 너무 많고 끊임없이 변화하는 트렌드 속에서 어떻게 공부해야 하는 것이 좋은 방법인가는 여전히 모르겠다. 방법이 뭐 있을까? 잔머리를 굴려 돌아갈 방법은 찾기보다 그 시간에 꾀부리지 말고 꾸준히 하는 방법뿐..

올해처럼 열심히 살았다고 자신 있게 말할 수 있는 해는 살면서 여태껏 없던 거 같다. 2020년도는 전 세계가 지옥 그 자체였지만, 그 지옥에서 어느 때보다 열심히 달려온 나. 올해가 가기 전에 올해를 되돌아보는 회고를 작성해야겠고 내년의 계획도 같이 작성해봐야겠다.

내년엔 새로운 직장에서 당당하게 프론트엔드 개발자라는 타이틀로 개발하고 있는 내가 되어있으면 좋겠다. 🙏🔥

0개의 댓글