Search
Duplicate
📚

TDD, Clean Code with Java

커리큘럼

수강 대상

교육 방식

10기 기준으로 8주간 4개의 미션 즉 2주마다 1개의 미션을 하게되는데, 미션별로도 스텝이 나눠져있고 기능 요구사항, 프로그래밍 요구사항, 커밋 요구사항 을 지켜가며 구현을 해서 리뷰어분들에게 코드리뷰를 받고 일정 수준이 되면 통과하여 다음 미션을 수행한다.
만일 통과(merge)가 되지 않는다면 PR에 리뷰어분들이 남겨준 피드백들을 적용하여 다시 push를하며 통과 될 때까지 같은 사이클을 반복한다.

듣게된 계기

현재 재직중인 회사가 회사규모가 좀 있어서 코드리뷰문화가 있는회사이거나 대기업처럼 교육시스템이 있어서 학점이수를 하는 상황이 아니다보니 내 코드에 대한 검증과 더 나은 코드를 짜기위한 피드백이 부족한 상황이다.
내가 제일 걱정하는 부분이 지금 1년차 2년차는 어떻게든 버틴다고 하지만 3년차, 5년차가되었을 때 그에 맞는 실력을 이렇게 시간흐르는대로 보내서 쌓을 수 있을까?
여기저기 주니어개발자를 키우는 교육은 많고, 지식을 알려주는 방법은 많지만 어떤 코드가 '' 낫고 어떤식으로 개선해나가는게 좋을지 알려주는 주니어에서 시니어가 되기위한 지식들을 알려주는 교육이 필요했고, nextStep 에서 마침 해당 과정을 진행하고 있고 추천도 많이 받고 있어서 참가하게 되었다.

피드백 정리

자동차 경주 - 단위테스트

1단계는 따로 PR없이 학습 테스트 실습이기에 따로 적지 않는다.

로또 - TDD

사다리타기 - FP, OOP

볼링 점수판 - OOP

후기

수료는 다행히 8주과정에서 6주차정도에 완료했다.
하지만, 끝내는 시점에서 모든 스터디가 동시에 종료되며 너무 정신적으로 피로했던지라, 모든 후기작성과 피드백 포스팅을 하지 못했다.
그래도 뒤늦게나마 후기를 올린다면, 확실히 과정을 수료하기전과 수료한 후의 코드 스타일은 확연히 다르다고 할 수 있다.
이번 과정을 통해 얻은 이점은
첫 째로, 여러 미션을 진행하며 StreamAPI와 OptionalAPI에 익숙해졌다. 그동안은 책을통해서나 강의를 통해서 의미적으로만 알고 실제로 쓰는일은 빈번하진 않았는데, 과정을 통해 약간이나마 강제적으로 사용을 권장받다보니 이제는 실무에서도 자주 쓸 수 있게되었다.
둘 째로, 의식의 흐름으로 장문의 코드를 작성하는 일이 줄어들었다.
공부를 하거나 혼자 의식하고 소규모의 프로젝트를 할 때는 옛날에도 여러 클린코드의 규칙들을 지키려고 노력은 했었지만, 실무를 겪으면서 조금만 바빠지거나 정신없어져도 당장의 비즈니스 로직을 하나의 메서드에 우겨넣거나 귀찮다고 컨트롤러단에 서비스 로직을 넣거나 하는 경우가 많았는데, 확연히 줄어들었다.
셋 째로, 테스트의 즐거움을 깨달았다.
사실 실무에서 테스트는 귀찮고 굳이 설정하는것도 까다롭고, 퇴근시간만 늦추는 주범이였다.
그리고 테스트케이스부터 작성하는게아닌 일단 기능을 다 구현하고 테스트를 하다보니 의미를 더 찾기가 힘들었다.
하지만 과정내에서는 테스트케이스를 우선 작성하고 빨간불을 녹색불로 바꿔가는 과정에서 테스트가 가능한 코드를 짜기위해선 자연스럽게 코드의 규모는 작아지고, 내가 개입할 부분에 대한 유연성이 확대되는 과정이였다. 그리고 어색했던 JUnit과도 어느정도 사이가 좋아졌다고 한다면 할 수 있을까?
그밖에도 리뷰어분들의 정성스런 리뷰를 통해 내가 하던 안티패턴, 동일하게 하던 실수들을 되돌아볼 수 있었다. 물론, 실무를 겪으며 파라미터를 무조건 2개이하로 하거나 코드라인을 다 15줄 이하로 하거나 하는 등 철저하게 모든 클린코드의 규칙을 지키는것은 쉽지않다.
미션을 진행하며 파라미터를 하나만 더 추가하면 쉬워질껄 굳이 억지로 이렇게 해야하나? 생각을 하기도 했다. 하지만, 공부이니만큼 이런 엄격한 제약하에 이렇게 저렇게 머리를 싸매 짜는 코드는 마치 헬스장에서 벤치프레스를 힙들게 10회를 들고 있는힘을 짜내 1개를 더 하는것과 같았다.
현재는 3월에 시작하는 ATDD과정을 신청하였고, 이번에도 무사히 수료할 수 있기를 바란다.