예정했던 GetStudentActionTest, GetStudentsActionTest에 이어 GetSessionResultsActionTest까지 총 3개의 테스트 코드 리팩토링을 마무리했다. 처음에는 워낙 오픈 소스에 대한 이해도 낮고 참고 자료도 부족해 오픈 소스에 기여한다는 목표가 다소 무모하게 느껴졌다. 특히 해외 개발자들이 작성한 방대한 문서를 이해하고, 이슈를 헤쳐 나가야 한다는 부담이 컸다. 그런데 우테코에서의 활발한 소통과 피드백을 거치며 그 두려움이 용기와 도전 정신으로 바뀌었다. 그 결과로, 여러 시도와 고민이 모여 중복 제거, 케이스 통합, 명명 규칙 정립을 통해 기존 테스트 코드를 300줄 이상 줄이는 성과로 이어졌다.
이번 오픈 미션에서 내가 가장 중요하게 생각한 부분은 우테코에서도 피드백을 받았듯이 TEAMMATES 문서에 적혀 있는 요구 사항을 정확하게 준수하는 것과, 코딩 컨벤션 및 커밋 메시지를 통해 다른 개발자들이 내 코드나 메시지를 봤을 때 한눈에 어떤 작업인지 파악할 수 있도록 하는 것이었다. 추가로, 이번에 작업한 부분들을 단순하게 생각하면 PostgreSQL로 마이그레이션 하면서 뒤죽박죽이 된 테스트 코드를 리팩토링 하는 것이었지만, 나름대로 몇몇 기능들은 통합이 가능한지, 더 고려해야 할 예외 사항이 없는지, 불필요한 테스트가 존재하는지 등 기능 목록을 재검토하는데 많은 심혈을 기울였다.
더 신경을 쓴 부분은 바로 테스트 코드의 필요성이 무엇이고, 어떤 식으로 테스트 코드를 작성해야 하는지, 테스트의 종류에는 어떤 것들이 있는지 조사하고, 실험하고, 적용하려고 노력했다. 우테코에서 테스트 코드도 코드라는 말을 했었는데, 처음 테스트 코드를 리팩토링 할 때는 다른 기여자가 설계해 놓은 상위 테스트 메서드들을 이용해서 뒤죽박죽된 테스트를 치환하는데 급급했다. 하지만, 테스트 코드도 결국 코드이기 때문에 반복되는 부분이 많다면 따로 메서드로 설계해서 중복을 제거한다든지, 문제가 발생할 수 있는 테스트 데이터는 가공할 수도 있고, 메서드명도 다시 한번 생각해서 정말 이름만으로도 해당 단위 테스트의 의도가 명확히 드러나는지 등 테스트 코드도 역시 지속적으로 리팩토링 해야 한다는 점을 몸소 깨달았다.
이번 오픈 미션으로 오픈 소스에 기여하면서 느낀 점은, 우테코에서도 강조했듯이 규칙을 문서화 하는 것은 굉장히 중요하다는 것을 깨달았다. 내가 작업한 TEAMMATES도 첫 기여자도 기여할 수 있을 만큼 이해하고 쉽고, 매우 체계적으로 문서를 정리해 놓았다. 수많은 개발자들도 그 규칙을 준수하면서 코드를 작성하다 보니 개개인이 각자의 기능을 개발하고 있지만, 결국 사용자의 불편을 없앤다는 공통 목표 하나를 향해 나아가고 있다는 생각이 들었다. 문서에서도 방향을 제시하지만, 다른 기여자들의 코드나 PR을 보면서도 같은 방향의 인사이트를 얻을 수 있었다. 물론 그 속에서 각자 나름대로 작성한 코드들도 살펴보면서 “이 사람은 여기서 왜 이런 코드를 작성했지?”, “다른 이슈들에서는 이런 문제들을 다루고 있구나.”, “필요하다면 내가 메서드를 추가해서 코드를 개선해도 되겠구나.” 와 같은 고민들을 한 것도 굉장히 값진 경험이라고 생각한다.
다만, 오픈 미션 기간 내에 TEAMMATES의 관리자로부터 코드 리뷰와 피드백을 받지 못했다는 점이 너무 아쉬웠다. 마지막에 GetSessionResultsActionTest 작업을 더 하고, 나머지 코드를 다듬느라 최종 PR이 너무 늦어져서 그런 것 같다. 하필 오픈 미션 기간 동안 정보처리기사 실기 시험도 있었고, 졸업 작품 제출도 11월 23일까지 해야 하는 바람에 너무나 시간이 촉박했다. 그래도 최선을 다해서 결국 TEAMMATES 오픈 소스 PR도 완료하고, 정보처리기사 실기도 가채점 90점, 졸업 작품도 무사히 끝마쳐서 매우 만족스럽다. 이번 우테코에 정말 최선을 다 했고, 내가 할 수 있는 모든 노력을 쏟아 부었다. 한 달 조금 넘는 짧은 시간이었지만, 덕분에 많은 멤버들과 소통하며 눈에 띄게 성장했고, 단순 코드를 작성하는 것을 넘어서서 진짜 개발자가 되기 위해 필요한 안목이 넓어졌다고 생각한다.
<제출한 PR 링크>