[그 외] 우테코 프리코스 4주차를 마친 소감

2023. 11. 15. 20:55그 외

이번 과제에서의 개인적인 목표는 객체 지향적으로 설계를 해보는 것이었습니다. 객체 지향적으로 설계함은 좁게 보았을 떄는 각 객체들이 독립적으로 자신의 역할을 수행하는 것이고 넓게 보았을 때는 객체들이 조화롭게 협업을 해서 결과물을 만드는 것이었습니다. 
이를 잘 살릴 수 있는 구조를 고민해보았습니다. 하지만 이벤트를 적용하는 부분을 어떻게 설계해야 할 지 도저히 감이 잡히지 않았습니다. 따라서 우선 감을 잡기 위해서 이벤트를 적용하는 부분을 공백으로 남겨두고 설계를 한 다른 파트들부터 구현을 하였습니다. 결과적으로 잘 작동하는 프로그램을 구현할 수 있었습니다. 하지만 커밋메시지라든지 변수 이름이라든지 아쉬운 부분이 많았습니다. 감을 잡았다는 성과를 얻고 다시 처음부터 시작하였습니다.
이번에는 처음부터 전체적으로 설계를 하기로 결심했습니다. 머리에 명확하게 그려지지 않은 상태에서 구현으로 들어간다는 것은 마치 무너지기 쉬운 모래성과도 같다고 생각했기 때문입니다. 이전의 구현했던 경험을 지혜 삼아 전체적인 그림을 그려보았습니다. 역시나 처음에는 쉽지 않았습니다. 이 부분을 구현을 한 것이지 설계를 하지는 않았기 때문입니다. 하지만 앉아서나 서서나 어떻게 설계할지에 대해서 끊임없이 고민하였습니다. 그 끝에 어느정도 윤곽이 잡혔고 구현 기능 목록에 정리를 하였습니다. 
그 후 여기에 필요한 모든 인터페이스, 클래스, 이넘 파일을 생성하고 필요한 메소드를 전부 적어 구조를 잡았습니다. 그 다음 구현을 하였는데 일단 구조가 잡아지니 구현은 쉬워졌습니다. 하지만 그 과정에서도 처음에는 예상하지 못했던 부분들이 하나둘 나왔습니다. 다행히 이번에는 구조를 잘 잡아놓았기에 그 토대위에 새롭게 추가하거나 수정하면 되었습니다. README에 관련 내용을 추가하거나 수정하여 살아있는 문서를 만들었으며 그 후 코드를 수정하였습니다. 
또한 커밋메시지를 누구나 알아볼 수 있게 작성하도록 노력하였습니다. 이러한 과정 속에서 프로젝트가 어느정도 구조가 잡혀지는 느낌이 들어 굉장히 뿌듯했습니다. 
이번 프로젝트가 끝나고 난 후 느낀 소감은 자바 코드 컨벤션, 커밋 메시지 컨벤션 그리고 요구사항들을 다 지키면서 구현하는게 쉽지 않고 시간과 노력이 많이 드는 과정임에도 굉장히 뿌듯하다는 점입니다. 특히, 협업을 하는 과정에서는 이러한 원칙들이 더욱더 중요할 것입니다. 이번 경험을 토대로 어떻게 하면 좋은 코드를 작성할 수 있는지에 대해서 많이 고민해 볼 수 있었고 많이 자판을 쳐보며 배울 수 있었습니다. 이러한 경험은 타인과 협업을 하는 과정뿐만 아닌 스스로를 위해서도 중요하다고 알게 되었습니다. 지금까지의 단기간 성장을 바탕으로 우테코에서도 많은 성장할 수 있었으면 좋겠습니다. 끝으로 좋은 과제를 내주시고 좋은 원칙들을 소개해주시는 등 특별한 성장의 계기를 마련해주셔서 매우 감사하다는 말씀드립니다.