성장일기

2주 차 미션에서는 1주 차에서 학습한 것에 더해 함수를 분리하고, 각 함수 별로 테스트를 작성하는 것에 익숙해지는 것을 목표로 하고 있어요. 이번에 테스트를 처음 접하시는 분들은 언어별 테스트 도구를 학습하고 작은 단위의 기능부터 테스트를 작성해보길 바랍니다.

 

과제를 제출할 때 이번 주차 목표를 중심으로 학습하면서 느낀 점을 소감문으로 작성해 주세요. 이때 학습한 '과정’을 잘 드러내 주세요.

 


 

이번 우아한 테크 코스 5기 2주 차 미션은 숫자 야구 게임 미션이다. 자세한 내용은 해당 우테코 깃허브를 통해 공개해놓고 있다.

 

이번 5기에서는 이전의 프리코스가 3주 차에서 4주 차로 늘어난 것뿐만 아니라 달라진 점이 하나 더 있다. 바로 프리코스 커뮤니티이다.

프리코스 커뮤니티는 우아한테크코스 지원자들이 함께 학습하고 성장할 수 있는 공간입니다. 프리코스 커뮤니티에는 다른 지원자들과 함께 할 수 있는 여러 활동이 있습니다. 지원자들에게 권장하는 활동은 피어 리뷰, 아고라(토론 및 질의응답), 학습 컨텐츠 공유이며 이 활동이 아니더라도 함께 학습하고 성장할 수 있는 것은 무엇이든 좋습니다. 프리코스 커뮤니티는 지원자 여러분이 스스로 만들어가는 공간입니다. 단, 우리 모두의 스스로 할 기회를 위해 아직 마감되지 않은 미션에 관련된 질문과 답변은 마감 이후로 미뤄주세요.
https://github.com/orgs/woowacourse-precourse/discussions
 

GitHub: Let’s build from here

GitHub is where over 83 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat...

github.com

 

프리코스가 우아한 테크 코스의 교육을 맛 볼수 있다면, 커뮤니티는 깃허브 디스커션에 프리코스에 참여하는 사람들이 모여서 코드 리뷰, 토론, 학습 컨텐츠 공유, 회고록 공유 등의 활동으로 우아한 테크 코스의 생활을 맛볼 수 있다.

 

나 또한 이번 주차에는 프리코스에 참여하여 코드 리뷰, 토론 활동, 피어 리뷰, 회고록 공유등으로 많은 것을 배우고 느낄 수 있었다.

 

 

이번 2주차 역시 TDD로 개발을 도전하였다. 나는 새로운 인사이트를 얻고자 프리코스 전 과정과 최종 테스트까지 TDD로 개발을 진행하기로 도전하였다.

https://heesangstudynote.tistory.com/104

 

[우아한 테크 코스 5기] 프리코스 1주차 - 온보딩 회고

과제 진행 소감에는 미션을 진행하면서 느끼고 배운 점, 많은 시간을 투자한 부분 등도 포함하면 더 좋을 것 같습니다. 🙂 그리고 과제를 제출할 때 'git’과 '과정별 언어’를 학습하면서 느낀

heesangstudynote.tistory.com

 

 

1. 1주차에서 느꼈던 점 2주 차 TDD에 적용

TDD로 작은 기능 단위로 먼저 개발을 하다 보니 isStrike, isBall 메소드의 테스트를 먼저 작성하였고, 이 메소드들은 public으로 열러 있었다. 하지만 진행하면서 이 메소드들은 결국 match라는 메소드 안에서만 쓰인다는 것을 인지하였고, 1주 차에서 다짐했던 회고를 토대로 public으로 열러 있던 isStrike, isBall 메소드들을 private으로 리팩토링하고 해당 테스트 코드를 삭제하였다.

 

해당 테스트 코드를 삭제하였지만, 이전에 작성했던 match 메소드의 테스트 코드를 통해서 isStrike, isBall을 간접 테스트를 하고 있기 때문에 private으로 바꾸고, 기존 테스트를 삭제하는 과감한 리팩토링에도 두려움이 없었다.

 

이러한 과감한 리팩토링에도 테스트를 통한 빠른 피드백이 가능해 두려움 없이 리팩토링을 진행할 수 있다는 점이 TDD의 장점이었다.

 

 

2. 2주차 - TDD에 대한 인사이트

TDD로 미션을 진행하면서 특정 기능에 대한 실패하는 테스트 코드를 작성하고, 이를 성공시키기 위한 프로덕션 코드를 구현하는데 너무 많은 시간과 노동이 걸려서 TDD의 장점을 이용하지 못했던 부분이 있었다. 테스트 코드의 빠른 피드백을 받지 못해서 프로덕션 코드만 장시간 주구장창 만지는 나를 보게 되었다. 결국 기능을 더 작은 단위로 더 쪼개서 기능 목록을 리팩토링하고, 다시 개발을 진행하게 되었다.

 

나는 이러한 점 역시 TDD의 장점이라고 생각한다. TDD를 진행하며 기능을 더 작은 단위로 쪼개지 않았더라면, 어떻게든 기능을 구현하기 위해 프로덕션 코드를 주구장창 개발하여 결국 쓰레기 코드가 완성됐을 것이다. 하지만 TDD로 기능을 더 작은 기능으로 쪼개어(기능 구현 목록 수정) 다시 접근하게 되었고, 이로 인해 클래스 설계도 더 나은 객체지향적인 설계로 자연스럽게 유도되고 있음을 느꼈다.

TDD로 개발하지 않았더라면 이러한 클래스와, 메소드 설계는 생각도 못했을 것 같다.

 

결과적으로 해당 도메인에 대하여 객체지향적인 사고가 부족할 경우, TDD로 인해 더 나은 설계 방향으로 나아갈 수 있다고 생각한다.

 

결과적으로 2주 차를 TDD로 개발을 진행해본 결과 느낀 점을 정리해보자면,

  1. 완성한 기능에 대한 테스트 코드가 개발 중에 항상 존재하기 때문에 리팩토링 시에 두려움이 없다.(테스트를 통한 빠른 피드백을 통해 부담 없이, 버그 발생 가능성을 줄여 리팩토링 할 수 있다.)
  2. 해당 도메인에 대하여 객체지향적인 사고가 부족할 경우, TDD로 인해 더 나은 설계 방향으로 나아갈 수 있다. 

 

 

3. 프리코스 커뮤니티(아고라)를 통해 느낀 점

프리코스 디스커션을 보는 중에 1주차에 내가 했던 고민인 "private 메소드 테스트"에 대해서 고민하고 있는 동료를 발견하였다. 따라서 1주 차에서 내가 해당 주제에 대해서 공부했던 다양한 사람들의 의견과 자료, 나의 생각을 정리해서 공유하였다.

 

많은 분들이 내 의견에 공감을 해주고 "인사이트를 얻고 간다"라고 말씀해주셔서 내심 뿌듯했다. 이번 경험을 통해서 나의 생각을 다른 사람이 이해하기 쉽게 글로 표현하는 것이 생각보다 쉽지 않고, 많은 연습이 필요함을 느꼈다.

 

또한 커뮤니티를 통해 비슷한 주제로 고민을 하고 있는 다양한 사람들과 토론을 하는 것이 너무 재미있었다. 온라인을 통한 토론도 이렇게 재미있는데, 현장에 직접 모여서 토론을 하면 얼마나 재미있을까?라는 생각이 든다.

 

이런 게 내가 원하는 학습이었다. 혼자서 독학을 하면서 할 수 없는 경험들을 하였고, 프로그래밍은 틀린 것은 있지만 정답이 없다고 생각하기 때문에 관련 고민들에 대해 다양한 사람의 의견을 들어보고, 나의 의견을 공유해보는 과정에서 함께 성장할 수 있다는 것을 경험했다.

 

 

두 번째 토론 주제로 "테스트만을 위한 생성자 구현에 대해 어떻게 생각하시나요?"라는 글이 올라와서 나의 생각을 공유했다.

 

나는 이러이러한 이유로 "테스트를 위한 생성자까지는 괜찮다고 생각한다."는 의견을 남겼다. 하지만 나의 의견에 공감을 해주는 사람이 있는 반면에 반대의 의견을 제시하는 사람도 있었다.

머리를 한대 딱! 맞는 느낌이었다. 지금까지 내가 생각해왔던 점이 잘못된 부분이 있음을 인지했다. 물론 특정 상황에서는 나의 의견이 좋을 수도 있지만, 다른 특정 상황에서 발생할 수 있는 단점에 대해서는 전혀 생각해보지 못했던 부분을 알게 되었다.

 

혼자 공부하고 있었다면, 해당 의견을 듣지도 못했을 것이다. 해당 토론을 통해서 새로운 인사이트를 얻을 수 있었고, 한층 성장할 수 있었다. 나의 의견을 공유하고, 다른 사람의 의견을 받아들이며 토론하는 과정에서 함께 성장하는 힘은 대단한 것 같다. 사람은 완벽하지 않기에 우테코를 통해 서로의 부족한 점을 이끌고, 이끌리며 함께 성장하는 경험을 꼭 하고 싶다는 생각이 들었다.

 

 

4. 프리코스 커뮤니티(피어 리뷰)를 통해 느낀 점

1주 차에 진행한 미션에 대해 나의 코드를 리뷰받을 수 있었고, 또한 내가 다른 사람의 코드를 리뷰해줄 수 있었다. 

 

나는 프리 코스를 통해 깃허브를 통한 코드 리뷰는 처음 경험해보며 이번 주차에는 세 분에게 리뷰를 받을 수 있었고, 나 또한 세 분에게 리뷰를 해주었다. 다음 주차에는 더 많은 분들의 코드를 보고 배우며, 리뷰를 하려고 한다.

더보기

 

서로 작성한 코드에 대해 질문하고 답변하며 좋았던 부분, 안 좋았던 부분, 궁금했던 부분에 대해서 이야기 나눌 수 있어서 많은 도움이 되었다.

 

더하여 피어 리뷰를 하면서 느낀 점은 내가 생각하는 바를 상대에게 어떻게 이해하기 쉽게 전달하는지와 상대방의 기분을 상하게 하지 않으며 잘못된 부분을 피드백을 해주는 게 어려웠다.

 

따라서 어떻게 하면 좀 더 글을 잘 써서 이해하기 쉽고 의미 있는 피드백을 줄 수 있을지, 상대방의 기분을 상하게 하지 않으며 나의 의사가 잘 전달이 될 수 있을 지에 대해 노력했다.

 

"결과에 후회하지 않도록, 원하는 결과를 얻기 위해서 최선을 다하자!"

공유하기

facebook twitter kakaoTalk kakaostory naver band