View

반응형

시작, NextStep

아직 개발 경험이나 실력이 많이 부족하지만 개발을 할 때 항상 고민하는 부분이 있다.

내가 코드를 이렇게 짜면 다른 사람이 유지 보수하기 쉬울까?

내가 작성하는 코드가 레거시가 될 수 있다는 것을 항상 염두하며 코드를 작성하려고 노력은 하고 있지만 실제로 내가 작성한 코드가 좋은 코드인지, 읽기 쉽고 유지 보수하기 좋은 코드인지에 대한 의문은 항상 가지고 있었다. 그래서 유지 보수하기 좋은 코드란 무엇인지, 객체지향의 특징을 잘 살린 코드 등에 대한 모범 사례를 공부하기 시작했다.

 

하지만 이러한 사례들을 학습한다고 해도 제대로 활용한 것인지에 대한 의문점은 가시질 않았고 명확한 코드 리뷰에 대한 필요성이 느껴졌다. 그러던 중 우연히 NextStep이라는 강의를 알게 되었고, 소개된 커리큘럼을 살펴보니 딱 내게 필요한 강의라고 느껴졌다. 수강 비용이 조금 부담스러웠지만 비용을 지불할 충분한 가치가 있다고 생각하여 망설임 없이 수강 신청을 했다.

 


 

커리큘럼 및 학습 과정

강의는 약 8주동안 주어진 미션을 수행하고 리뷰를 받는 과정을 거치는 방식으로 진행된다. 미션은 크게 4가지로 나누어지고 각 미션마다 구현 요구 사항이 각 Step 별로 나누어져 있다. Step을 거칠 수록 요구사항이 증가하기 때문에 OOP와 확장성 등을 자연스럽게 의식하며 개발하게 된다. 또한, 코드 컨벤션과 객체 생활 체조를 준수하여 개발하는 것이 규칙이기 때문에 자연스럽게 Clean Code를 지향하게 된다.

미션 목록

  • 자동차 경주
  • 로또
  • 사다리 타기
  • 볼링

강의

2주에 1회 박재성님의 라이브 코딩 강의가 이루어진다. 또 수강생들의 고민을 들어주고 직접 상담해주는 시간을 갖는데, 개인적으로 강의에 꼭 참여했던 이유이기도 하다. 항상 힘이 되는 말을 해주시기 때문에 힐링되는 느낌?

미션 루틴

  1. 주어진 미션 요구사항을 TDD로 구현해본다.
  2. 담당 리뷰어에게 PR을 보내 피드백을 받는다.
  3. 피드백받은 내용을 바탕으로 리팩토링을 진행한다.
  4. 2 ~ 3 과정을 반복한다.
  5. 위 과정을 거쳐 만족할만한 코드가 나오면 PR은 Merge 되고 다음 Step 미션을 진행한다.
  6. 모든 Step이 Merge 되면 다음 미션을 진행한다. (동시에 여러 개 미션 진행도 가능)

의식적인 연습을 통한 학습

박재성님은 강의 내내 의식적으로 연습하고 학습하는 것을 강조하셨다. 어떤 일이라도 의식적으로 분석하고 개선하려는 노력이 없으면 실력이 늘지 않는다는 것이다. 예를 들어 젓가락질을 잘 못하는 사람들이 매일 젓가락질을 한다고 잘해지지 않는 것처럼 말이다.

 

생각해보니 나 또한 의식적인 학습을 해온 것 같지 않았다. 따라서 이번 기회를 통해 의식적인 학습을 하려고 노력을 했다. 의식적으로 TDD 사이클로 개발을 진행하고 기능 구현할 때도 클래스의 역할과 책임에 대해 고민을 많이 했었던 것 같다.

 


수강후기,

먼저 공부하면 도움이 될 부분

미션에 대한 설계부터 구현까지 진행하는 미션 위주의 강의이다 보니 기본적인 지식을 가지고 듣는 것을 추천한다. 물론 학습과 미션을 병행하면서 진행할 수 있지만, 그만큼 시간을 더 투자해야 한다.

  • Java
  • TDD에 대한 기본 개념
  • 모던 자바
  • git 사용법

위의 항목들을 미리 학습하고 강의에 참여하면 조금 더 수월하게 진행할 수 있을 것 같다. 이외에도 다양한 디자인 패턴, enum을 활용법을 알고 가면 더 좋은 코드를 만들어갈 수 있다. 필수는 아님!

 

나 같은 경우 미션 진행 중 가장 많이 피드백받았던 부분이 함수형 프로그래밍, Lambda, Stream API 등을 이용해서 프로덕트 코드를 개선해보라는 부분이었다. 대다수의 리뷰어들이 이러한 역량을 중요시 여기는 것 같았다. 나도 이런 부분이 준비가 안된 채로 들었는데, 학습하면서 미션 수행하는 게 쉽지 않았다. 위에서 말한 것처럼 필수는 아니지만 알고 가면 많은 도움이 될 것이다.

직장과의 병행

사실 하루 종일 코드를 보고, 퇴근 후 또 코드를 본다는 게 쉽지는 않다. 몸과 마음이 지친 상태에서 미션을 진행하다 보면 쉬고 싶다는 생각이 매일 같이 든다. 그럴 때마다 이겨낼 수 있는 의지가 필요하다. 이 과정은 미션에 대한 마감 기한이 없기 때문에 스스로 열정과 의지를 가지고 참여해야만 얻어 갈 수 있는 강의인 것 같다.

 

개인 사정이나 일정에 따른 야근 때문에 강의에 참여하지 못해도 강의 녹화본이 제공되기 때문에 강의를 놓쳐도 크게 부담이 없었다. 언제든 다시 볼 수 있다. 👍

 

나 같은 경우 퇴근 후 자기 전까지 대부분의 시간을 미션 진행에 할애했다. 굉장히 힘들었지만 코드 리뷰를 받고 개선하는 과정에 흥미를 느꼈기 때문에 열심히 참여할 수 있었던 것 같다. 가끔 야근을 하거나 개인 일정이 있는 날은 완전히 쉬기도 했다. 끝까지 미션에 참여하기 위해서는 지치지 않는 게 중요하다고 생각한다. 적절한 페이스 조절이 필요하는 것을 느꼈다.

 


마치며,

성장에 대한 동기부여

수강 대상이 실무 경력 최소 1~3년 이상의 자바 개발자라고 명시되어있다. 그만큼 직장을 다니면서 참여하시는 분들의 비율이 높다. 그럼에도 불구하고 다들 엄청 열심히 달린 신다. 피곤하지도 않나? 이 강의는 슬랙을 통해 리뷰이들의 리뷰 요청이 공유되는데, 이게 엄청난 자극이 된다. (나 빼고 다 잘하는 것 같음..) 슬랙에 다른 분들의 PR이 올라오는 것을 볼 때마다 경쟁심이 생긴다고 해야 하나? 무튼.. 많은 동기부여를 받을 수 있다!

 

또 과정이 끝난 후에도 별도의 스터디 채널을 만들어 학습을 이어가려는 모습을 보고 좋은 자극을 많이 받았다. 성장에 대한 열정을 가진 개발자들과 네트워킹을 할 수 있다는 것도 굉장한 장점이라고 생각된다. 자기 계발과 더불어 동기부여를 받고 싶다면 이 과정을 듣는 것을 추천한다.

 

단, 너무 잘하시는 분들 보고 자괴감에 빠질 수 있다..나처럼

나는 이 과정을 통해 뭘 느꼈을까

처음 미션 수행을 하면서는 정해진 규칙을 지키며 코딩하는 게 굉장히 낯설고 어려웠다. 특히 TDD 사이클로 개발을 진행하는 것, 거의 30분 동안 코드 한 줄 작성하지 못한 적도 있었다. 그럴 때마다 다른 사람은 어떻게 진행하고 있는지 다른 사람들의 코드를 보며 객체 설계에 대한 힌트를 얻거나 진행 방향에 대한 감을 잡기도 했다. 다양한 코드들을 보면서 느낀 것은 한 가지의 역할을 잘하도록 짜여진 코드는 전체적으로도 이해가 쉽다는 것이었다. 즉, 단순한 코드들이 이해하기 쉬웠다. 따라서 나도 이러한 부분들을 염두하며 코딩하는 습관을 길러야겠다고 생각했다.

 

"좀 더 단순하게 만들 수 있을까?" 란 고민과 함께 클래스 별 책임과 역할을 생각하기 시작했고, OOP의 특성을 잘 살리기 위한 코드를 짜려고 노력했다. 객체 간의 의존 결합도가 높아 단위 테스트가 어려운 코드는 처음부터 다시 만들어보거나 리팩토링을 하면서 코드를 개선해 나갔다. 이렇듯 다른 개발자들의 코드를 보며 시야를 넓히고 의식적으로 개선하려는 과정을 통해 이전과는 다른 사고 과정을 가지게 된 것 같다. 의식적인 학습이 필요한 이유를 몸소 체험할 수 있었다.

 

이 강의를 통해 엄청난 성장을 이루었다고 말할 수는 없지만, 확실히 이전보다 다른 시각을 가지게 된 것은 확실하다. 이전에 신경 쓰지 않았던 부분들이 보이기 시작하고 의식하게 되면서 이제야 제대로 된 시작점에 서게 됐다는 생각이 들었다. 앞으로의 길은 더 험난하겠지만, 지금이라도 올바른 시작점에 올라탄 것을 다행이라 느낀다.

 

 

반응형
Share Link

인기 글

최신 글

전체 방문자

Today
Yesterday