코드숨 회고 - 12주 과정 후기

codesoom

코드숨 12주 과정을 마치며 🚀

코드숨 12주 과정이 종료되었다.

3개월 과정을 회고하며 무엇을 배우고 느꼈는지 기록을 남긴다.

코드숨을 선택한 이유 🏆

프론트엔드 개발자가 되기 위해서 독학을 했다.

처음에는 오프라인이나 온라인 강의를 들으며 개념을 정리했다. 그 후 토이 프로젝트를 만들었는데 작성한 코드의 피드백이 없으니 내 코드의 상태가 어떤 건지, 무엇을 수정해야 하는지 알 수 없었다.

내 상태를 진단해주고 가이드해줄 누군가가 없는 것이 힘들었다. 코드숨을 선택한 가장 큰 이유는 코드 리뷰를 통해 내가 작성한 코드의 피드백을 받을 수 있다는 점이었다.

이 점 하나만으로도 코드숨을 신청할 가치가 충분하다고 생각했다.

코드숨을 통해 배운 것 📚

12주 간의 과정을 통해 내가 작성한 코드의 상태를 알고 피드백을 통해 어떤 생각으로 코드를 접근해야 하는지 깨달았다. 그 외에도 큰 두 가지를 배울 수 있었다.

TDD(테스트 주도 개발)

개발자가 되면서 TDD에 대해 기억나는 이야기는 ‘테스트 코드를 실패하게 짜보라’는 것뿐이었다. ‘실패하는 테스트코드를 짜라고? 시간만 충분하면 100만 가지도 넘게 짤 수 있겠는데. 왜 그런 의미 없는 행동을 하죠?’ 라는 생각만 들었다. 지금 와서 보니 테스트코드의 본질을 알지 못하고 일부 겉모습만 보고 잘못된 판단을 했었다.

코드숨을 통해 알게 된 테스트 코드를 작성하는 방법은 다음과 같다.

테스트 코드를 작성하는 방법

  1. 원하는 기능의 테스트를 미리 작성한다(Red).
  2. 기능을 구현하여 테스트를 통과시킨다(Green).
  3. 코드를 리팩토링한다(Refactoring).

3주 차부터 본격적으로 TDD에 대해서 배우고 코드 작성을 하며 실습을 했는데 정말 고통스러웠던 주였다. 머리로 이해하는 것과 직접 실습을 해보는 것은 천지차이인 것을 깨달았다. 마치 댄스 동영상을 보고 춤을 따라 할 때 눈은 따라가는데 몸이 안 따라가는 것처럼. 하지만 반복적인 연습을 통해 점점 테스트 코드에 익숙해질 수 있었다.

덕분에 테스트 코드를 작성하며 많은 장점(코드의 안정성 확보, 이해도 증가 등)을 깨닫고 더 성장을 할 수 있게 되었다.

리팩토링

테스트 코드를 작성하기 위해 Red - Green - Refactoring 과정을 진행한다. 이 중 과정에서 마지막에는 항상 리팩토링을 한다. 처음에는 리팩토링이 작성한 코드를 다시 수정하는 것인 줄 알았다. 그런데 코드숨을 통해 배운 리팩토링의 정의는 다음과 같다.

리팩토링: 기존 기능을 그대로 유지하면서 내부 구조를 개선하는 것.

코드 리뷰와 테스트 코드 작성을 통해 많은 리팩토링의 기회를 얻었다. 그리고 리팩토링을 통해 좋은 코드를 만드는 방법을 알게 되었다. 직관적이고 간결한 변수 네이밍 짓기, 함수의 기능 쪼개기, 불변성을 지키는 코드 작성 등. 작동만 하는 코드는 어떤 개발자도 할 수 있지만, 효율적이고 간결하며 쉽게 기능을 추가하거나 수정할 수 있는 코드는 아무나 할 수 없다는 것을 다시 한번 깨닫게 되었다.

앞으로 무엇을 할 것인가 🔧

취업

궁극적인 목표인 프론트엔드 개발자가 되기 위해 계속 노력하고 있다.

실력 갈고닦기

코드숨 과정을 마쳤다고 해서 모든 것을 이해한 것은 아니다. TDD, 리팩토링, 함수형 프로그래밍 등. 계속해서 반복하고 그 반복 속에서 더 깊게 이해하려 노력 중이다.

코드숨 강의를 듣고자 하시는 분들에게 📋

마지막으로 앞으로 코드숨 강의를 듣고자 하시는 분들에게 두 가지를 당부 드리고 싶다.

  1. (과제를 진행 할) 충분한 시간을 확보하기
  2. 꾸준히 하기

간단해 보이지만 정말 지키기 어렵다는 것을 깨달았다. 특히 수형님께서 이야기하신 ‘작게라도 꾸준히’한다는 것이 얼마나 중요한지, 왜 계속해서 강조했는지 알게 되었다.

Thank You 🙏

코드숨 리액트 2기 과정동안 많은 걸 알려주신 아샬님, 윤석님, 수형님, 기현님 감사합니다!

👋


Written by@davidyang2149 (About me)
Hello World! This is David Yang Dev Blogs.

GitHub