[우아한 테크코스] 2주차 회고록 - TDD에 관하여

수민·2024년 11월 2일
post-thumbnail

개요


벌써 2주가 지나 3주차가 진행되고 있다...
이번주에는 기말고사, 졸업 프로젝트, 해커톤으로 인해서 3주차를 너무 늦게 시작하게 되면서, 더불어 회고도 늦어졌다.
꽤나 늦은 회고를 한 번 시작해보자!!

깨달은 점


2주차는 진행을 하면서 하루하루 드는 생각들을 notion에 정리를 해두었다.
노션에는 개발하며 고민했던 점들 위주로 적어두었고 이외에도 깨달은 점들이 많아 깨달은 점 위주로 정리를 해보겠다!

1. 기능 구현 사항 정리

이전 1주차에도 생각했던 부분인데 기능 구현 사항을 정리해두는 것의 중요성을 깨닫게 되었다.
이전에는 구현 방법이 대강 생각나면 바로 코드를 작성했는데, 이렇게 되면 시간이 지나고 나서 어떤 코드였는지 기억이 잘 안나기도 하고 빠진 기능이 있는지 찾기가 어려웠다. 그런데 정리가 되어 있으니 다음으로 구현해야 할 기능이나 빠진 예외처리가 있는지 찾기 쉬워졌다.
그러나 오히려 처음부터 완벽하게 기능을 생각해내려고 하여 시간을 많이 허비하기도 했는데, 이에 대한 피드백이 2주차에 담겨있어 내 고민을 해결해주었다.

관련 피드백

이 피드백에 따라 2주차의 README.md에서 수정해야 할 사항이 꽤 있었다.
1주차와 다르게 2주차에서는 README.md에 클래스 이름, 메서드 이름을 포함하여 작성했다. 1주차와 다르게 이렇게 작성한 이유는 1주차의 많은 우테코 참가자들이 이렇게 작성한 것을 보고 '아 지금까지 내가 잘못 작성한 것이었나..?'라는 생각이 들었기 때문이다.
제대로 된 생각을 거치지 않고 무작정 많은 사람들이 한다고 따라하는 것이 잘못된 생각이었다는 걸 몸소 깨닫게 되었다.
또한, 1주차에서 README.md를 한 번 작성한 이후, 두세번의 기능 목록 업데이트가 있었다. '우테코 진행자 분들께서 나의 커밋 기록을 보고 한 번에 꼼꼼히 기능을 작성하지 않았다고 생각하면 어떡하지..?'라는 고민이 많았었는데 이번 피드백을 보고 그런 고민들이 싹 사라졌다.

지금까지 가지고 있었던 시작부터 모든 기능을 완벽하게 정리해야 한다는 부담감을 버리자!

2. 테스트 코드 작성


이번에는 테스트 코드 작성까지가 기능 구현 목록 중 하나였기 때문에 처음으로 테스트 코드를 작성해보게 되었다. jest, 테스트 코드 작성 모든 게 처음이었기 때문에 두려웠고 가장 마지막으로 미루게 되었다.
작성을 하다보니 개발 전에 테스트 코드를 작성해뒀다면 더 좋았을텐데..라는 생각이 들었다.
테스트 코드를 작성하며 깨달은 장점들이 있는데 다음과 같다.

TDD의 중요성

학교 수업 시간에 들었던 TDD가 생각났다.
미리 해당 개념에 대해 공부를 하고 작성을 시작했으면 좋았을텐데 뒤늦게 테스트 코드를 작성하면서 기존의 작성돼있던 테스트 코드를 보면서 "이건 무슨 함수지...?? 이건 뭐고 저건 뭐지?"하며 꽤나 해매게 되었다.
그리고 제출 이후, 다른 사람들의 코드를 보면서 내가 빼먹은 테스트 케이스들이 꽤 많다는 것을 깨달았다...
예를 들어

  • 입력값이 소수점 값을 가지는 경우
  • 입력값이 너무 큰 경우

    에 대한 예외 처리를 빼먹었다.
    뒤늦게 테스트 코드를 작성하다보니 이미 내가 구현한 기능들을 기반으로 테스트 케이스를 작성하는 것 같다는 느낌이 들었다. 왜 TDD로 구현하는지 또다시 깨닫게 되는 순간이었다.

구현한 기능의 문제점 발견

테스트 케이스에 따라 실수를 깨닫고 코드를 수정하게 되는 부분이 있었다. 프로그램 전체 실행 때는 정상적인 입력값만 넣어서 몰랐는데, 에러가 나는 순간 예외 처리가 되지 않았다.
구현한 기능의 문제점을 빠르게 발견할 수 있다는 장점을 깨닫게 되었다.

기능 점검의 용이성

이전에는 한 기능을 구현할 때마다 제대로 기능이 구현되었는지 확인하기 위해 프로그램 자체를 실행하고 원하는 값인지 확인했다. 또한 에러가 날 때는 console.log를 통해 어디서 에러가 났는지 하나하나 확인했다. 그러나 테스트 코드를 작성해두니 어느 기능에서 에러가 나는지 한 번에 확인할 수 있었다. 제대로 된 테스트 코드 하나로 이렇게 편해질 수 있다니!

이러한 과정을 겪게 되니 테스트 코드 작성이 얼마나 중요한지 알게 되었고, TDD에 대한 개념만 알고 있는 것이 아니라 조금이라도 직접 체험해볼 수 있어 좋았다.
(학교 수업 시간에 TDD 작성하기 과제를 수행할 때는 이런 귀찮은 과정을 왜 하나.. 했었는데 이제서야 교수님의 의도를 알게 되다니... 역시 사람은 직접 겪어봐야 깨닫나보다.)

3. 하드 코딩된 값


지금까지는 예외처리 문구를 직접 값을 입력했는데, 이런 경우 에러 메세지를 수정하고 싶을 때 해당 부분을 찾아가 직접 수정을 해야한다는 불편함이 있었다. 이번 피드백에도 "값을 하드코딩하지 않는다"가 있는 만큼 다음 주차에는 상수 처리를 해봐야겠다.

종합 회고


매주 많은 것을 깨닫는 것 같다. 특히 프리코스 커뮤니티를 통해 다른 사람들은 같은 문제를 어떻게 해결했는지 보고 깨닫는 점이 많다.
내가 빼먹은 테스트 케이스, 생각하지 못했던 구현법 등을 보면서 많은 것을 배우게 되었다. 또한 회고록을 보면서 '나랑 비슷한 생각을 하는 사람들이 많구나' 신기했던 것도 있고 열심히 하는 사람들을 보면서 동기부여가 되기도 했다.
프리코스 때도 이정돈데 합격하고 제대로 된 교육 과정에 들어가면 배우는 점이 얼마나 많을까 기대되고 욕심이 난다.
2주차때 바쁜 일이 많아 아쉬웠는데 3주차에는 후회없는 코드를 작성하고싶다!!!

0개의 댓글