본문 바로가기
회고록

[우아한 테크코스] 프리코스 4주 차 회고록

by 되고싶은노력가 2024. 11. 12.

들어가며.

프리코스도 아쉽게도 마지막 주 차가 찾아왔습니다. 지금 돌이켜보면 아쉬운 부분도 많았고 더 열심히 하지 못한 것에 대해 후회가 들기도 하는데요. 하지만 프리코스를 하면서 클린코드에 대해 고민해보고 객체가 가져야할 요소들이 무엇인지 생각해보면서 제 코드가 달라지는 걸 보니 정말 즐거운 경험이었습니다.

 

제가 이전에 작성한 회고록을 보니 이번 4주 차는 5시간 내에 풀어보겠다는 말을 적었는데, 처음 4주 차가 시작되고 문제를 받았을 때는 "이정도면 금방 풀겠는데..?"라는 생각을 가졌었지만 참 어리석은 생각이었다는 것을 알게되었습니다. 하나가 풀리면 다른 하나에서 버그가 계속해서 생기면서 시작을 잘못해서 풀리지 않는 것인지, 하루를 구조를 잡는데 다 썼던 기억도 납니다. 그러면서도 TDD를 적용하겠다는 생각은 있어서 더 어렵더라구요...

 

하지만 정말 작은 것부터 풀어보자는 생각으로 시작하니 하나의 객체가 만들어지고 이 객체에서 살을 더 붙여나가는 식으로 푸니 점점 코딩 속도를 낼 수 있었습니다. 그렇게 제출 기간을 넘기기 4시간 전에 예제 테스트를 다 통과할 수 있었습니다. :)


요구 사항 정리가 제일 힘들다.

이번 4주 차 미션인 편의점은 정말 방대한 요구 사항을 볼 수 있었습니다. 정말 사소한 오류 메시지부터 시작해서 할인 범위를 어디까지 적용시켜야 할지, 재고 정리는 어느 시점에 들어가야하는지 등등 이전 3주 차보다 훨씬 많은 요구 사항에 시작하기도 전에 겁을 먹고 들어갔죠.이전 주차는 간단한 요구사항으로 정리를 굳이 자세하게 적지 않아도 풀 수 있었지만 편의점 문제는 그렇게 해서는 못 푼다는 것을 직감적으로 알 수 있었습니다.

 

그래서 시작 전 README에 충분히 정리를 하고 들어가기로 했습니다. 들어가면서 각 기능이 어느 메서드에서 동작하도록 하는지가 중요했던 것 같습니다. 잘못된 입력에 대해서 다시 입력하도록 하는 것은 지난번 3주 차에 경험을 해봤기에 어려운 부분이 없었으나, 할인이 적용되는 구매 상품과, 미 적용되는 상품, 프로모션 적용 유무에 따른 구매 상품 개수가 달라지는 등의 복잡한 면이 많았습니다.

 

매번 요구 사항을 정리하다보니 다른 분들의 요구 사항도 세밀하게 보는 버릇이 생겼는데요. 각자마다 이해한 부분도 다르고 정도가 다르다는 것을 알 수 있었습니다. 이를 더 객관적으로 바라보고 정리하는 것 또한 개발자로서의 소양이 아닐까 하는 생각을 마지막에서야 들었네요.


어떻게든 돌아가면 된다.

3주 차 때의 마음가짐과 다르게 하루는 코드 작성을 하면서 어떻게하면 깔끔한 코드를 만들지 고민을 내내 했던 것 같습니다. 제 스스로 코딩을 하면서도 이게 맞는지, 이렇게 스파게티 코드가 만들어지는게 맞는지 선뜻 손가락이 움직이지 않았는데요. 그렇게 구조를 고민하면서 하루는 코드를 한 자도 적지 못하는 저를 보니 이렇게는 도저히 안되겠다는 생각이 들었습니다.

이게 맞아..?

 

결국 개발자는 기한 내에 프로젝트를 완성할 수 있어야 그것은 프로그램으로써 인정받는 것인데 편의점이라는 미션의 테스트 케이스를 통과하지 못하고 깔끔하기만 하면 되는건가? 그러한 의구심으로부터 벗어나고자 일단은 indentdepth 를 지키지 않는 방식으로 쭉 작성해 나가기 시작했습니다. depth 를 지키지 않으니 오히려 어떤 방식으로 프로그램이 동작하는 지 보이면서 빠르게 코딩을 해 나갈 수 있었는데요. 이후 리펙토링을 통해 관련있는 기능을 메서드로 묶는 방법으로 완성해나갔습니다.

 

else 와 depth < 3 을 지키기위한 처절한 리펙토링

 

저만 알아볼 수 있을 것 같은 동작 방식도 불안감에 한 몫 했습니다만, 어떻게서든 이어나갔습니다. ;)

 

위 코드를 보면서도 이게 맞나 싶지만 최대한 요구 사항을 지키고자 노력했던거 같고, 지금와서 생각해보면 이렇게라도 완성을 만든 것이 옳았다는 생각이 드네요.


마치며.

처음 1주 차를 시작할 때는 구체적이지 못하고 거창하게 객체지향에 대해 학습하고 TDD를 적용하기 위해 노력하겠다는 목표를 설정하고 프리코스를 시작했는데 막상 코딩을 하니 객체지향은커녕 자바의 라이브러리에 대해 배우는 것만 해도 벅차더라고요. 그래서 1주 차에는 박재성 님의 유튜브를 보면서 따라 했던 기억이 나네요 :)

어떻게 하면 빠르게 성장할 수 있을까? 어떻게 하면 몰입을 유지할 수 있을까? 라는 고민을 하면서 모르는 부분이 있으면 블로그에 정리하다 보니 코딩 실력은 물론, 글 쓰는 실력도 아주 좋아지고 있는 것 같습니다. 중간 회고를 적으면서 검색도 좋지만, 더 자세한 내용을 알고자 개발 책을 읽어 블로그에 작성하는 것을 목표로 재설정했지만, 취준생이라 그런지 돈이 궁해 책을 사지 못한 것이 내심 아쉽기도 했습니다.

새벽 2시에 회고록을 적으면서 디스코드 커뮤니티를 보니 프리코스가 끝났다는 것이 체감되는데요. 확실히 마지막이 되니까 디스코드 글 올라오는 속도도 느려지고 다른 분들도 비슷하게 느끼는 것 같습니다. 이런 기분은 마치 군대를 제대하는 기분이라고 해야하나요. 시원 섭섭한 기분이 드네요.

 

프리코스가 이렇게 끝이 났지만 계속해서 이런 방식으로 공부해나가야겠다는 방향성을 잡을 수 있는 귀중한 경험을 했다는 생각이 듭니다. 최종 시험을 위해서도 이른 안도감은 멀었다 생각이 들고 이전 기수 분들이 풀었던 미션들을 찾아보며 해결해 나갈 예정입니다. 물론, 코드 리뷰도 함께하면서요. :)