드디어 나도 객체지향을 쪼금 안다고 할 수 있지 않을까...? ㅎ
🔆 프리코스 목표
궁극적인 목표는 좋은 프로그래머로 성장하기 위해 필요한 습관을 형성하는 것이었고, 이를 위해 설계에 충분한 시간 투자하기, 꾸준히 회고 작성하기, TDD 적용하기, 추가 학습하기, GPT 사용 자제하기와 같은 현실적인 목표를 세웠다.
1. 설계에 충분한 시간 투자하기
프리코스를 시작하기 전에는 설계 자체가 어렵게 느껴졌다. 코드 전체를 하나의 큰 단위로 생각하다 보니 어느 부분부터 시작해야 할지 감이 오지 않았고, 로직이 복잡해져 결국 단일 클래스로만 작성하게 되었다. 프리코스를 통해 객체지향 개념을 접하게 되면서, 코드를 단일 클래스로 작성할 경우 가독성이 떨어진다는 점을 깨달았다. 다른 분들의 코드와 피드백을 참고하며 클래스를 세분화하는 연습을 하면서 점차 객체지향 설계를 이해하게 되었고, 이제는 문제를 작은 단위로 쪼개어 우선순위를 설정하고 순차적으로 해결해 나가는 능력이 생겼다고 느끼게 되었다.
2. 꾸준한 회고 시간 갖기
회고는 실수를 돌아보고, 매일 조금씩이라도 성장한 부분을 확인하고 싶어서 세운 목표였다. 글을 쓰는 데 익숙하지 않아서 처음에는 힘들었지만, 회고가 자기 성장에 얼마나 중요한지 체감해 보고 싶기도 했다. 매일은 아니더라도 2~3일마다 회고를 작성하면서 그날의 생각과 아쉬운 점, 잘한 점, 공부할 점들을 기록에 남기게 되었다. 이 과정을 통해 부족한 부분과 나아갈 방향을 명확히 알 수 있게 되었고, 기록이 쌓이면서 내가 어떤 부분을 개선하고자 하는지 점점 더 분명해졌다.
3. TDD로 작성하기
클린 코드 작성을 위해 TDD를 적용하는 목표를 세웠다. 처음에는 아무것도 없는 상태에서 테스트 코드를 작성하는 게 막막했지만, 작은 기능부터 구현해 보면서 역할을 나누는 방법을 점차 이해하게 되었다. TDD 덕분에 객체지향 설계를 체감하며 배울 수 있었고, 테스트 코드 작성을 염두에 두면서 가독성 좋고 유지 보수하기 쉬운 코드 작성법을 익히게 되었다. 이제는 클린 코드를 지향하며 점진적으로 기능을 추가해 가는 과정이 익숙해졌고, 이를 통해 더 체계적인 사고방식을 가지게 되었다.
4. 추가 학습하기
프리코스 진행 전에는 자바 언어에 익숙하지 않았기에, 부족한 부분을 보완하기 위해 추가 학습을 목표로 했다. 매주 미션을 통해 자바의 새로운 기능과 개념을 배웠고, 실습을 통해 직접 적용하며 개념을 체화할 수 있었다. 또한, 다른 분들이 사용한 다양한 디자인 패턴을 공부하고 미션에 적용해 보면서 더 효율적인 코드 구조를 만드는 연습을 했다. 이렇게 직접 여러 가지 방법을 시도하면서 자바 언어에 대한 이해도가 높아졌고, 매주 스스로 성장하고 있다는 것을 느낄 수 있었다.
5. GPT 사용 자제하기
함수명이나 메서드명은 직접 고민하며 작성하려 했고, 로직에 관해서도 GPT에게 묻지 않았다. 1주 차와 2주 차에는 자바의 기본 문법에 대해 GPT에게 질문하곤 했지만, 3주 차와 4주 차에는 직접 설계를 수정하며 로직을 정리하고 구현하는 과정을 반복했다. 덕분에 점차 어려운 문제를 만나더라도 GPT에 의존하기보다는 스스로 객체를 하나씩 나누고, 작은 기능부터 시작하는 방법을 익히게 되었다.
GPT를 사용하지 않는 것이 나의 성장에 훨씬 도움이 된다고 느꼈다. 대신, 필요한 경우 검색을 통해 해당 지식뿐 아니라 주변 지식까지도 얻게 되었고, 여러 검색 결과를 바탕으로 나만의 관점을 형성할 수 있었다. 앞으로도 가능하면 GPT 사용을 줄이며 이러한 방법으로 학습을 이어가고 싶다.
🔆 피드백 주고받기를 통해,,
각 미션의 목표를 달성하기 위해 매주 피드백을 적극적으로 반영하는 계획을 세우고 이행했다. 피드백은 주로 내가 잘 모르는 부분에서 나왔기 때문에, 우선 해당 내용을 검색해 관련 지식과 정보를 얻었습니다. 이후 피드백을 받은 부분을 중심으로 다른 분들의 코드를 참고하며 개선 방안을 찾아보았다. 이렇게 다양한 접근 방식을 살펴보며 피드백을 깊이 이해할 수 있었고, 그 과정에서 부족한 점도 더 명확히 알게 되었다.
피드백을 바탕으로 수정한 부분을 다음 미션에서 적용해 보면서, 매주 실력을 발전시키는 성취감을 느낄 수 있었다. 또한, 이러한 과정을 회고에 기록함으로써 매 미션마다 조금씩 성장해 나가는 나의 모습을 확인할 수 있었고, 이 점이 저를 더 노력하게 하는 원동력이 되었다.
🔆 프리코스를 진행하며 깨닫거나 변화한 점 !?
프리코스를 진행하며 매주 새로운 깨달음을 얻고, 점진적으로 성장하는 경험이 인상 깊었다. 1주 차에는 하나의 클래스에 모든 기능을 담기보다는, 하나의 책임을 갖는 여러 클래스로 나누어야 한다는 것을 배웠고, 2주 차에는 이를 발전시켜 service, input/output, validator 클래스로 나누어 구현했다. 그러나 여전히 한 클래스에 여러 책임이 포함되어 있다는 피드백을 받고, 3주 차에는 구조를 constants, controller, domain, service, validator, view 패키지로 세분화했다. 이 과정에서 enum과 일급 컬렉션 같은 새로운 개념도 배울 수 있었다.
3주 차 피드백을 통해 숙제로 삼은 목표는 의존성 관리였다. 객체 간 의존성을 최소화하여 각 객체가 독립적으로 동작할 수 있도록 설계하는 것이 목표였고, 이를 통해 의존성을 줄이면 코드가 깔끔해지고 로직이 단순해져 버그 발생 가능성도 줄어든다는 것을 체감했다.
가장 큰 변화는 객체지향에 대한 이해가 깊어진 것이다. 절차지향 언어인 JavaScript만 사용하다가 처음으로 Java를 사용하면서 많은 걱정과 어려움이 있었지만, 다른 분들의 뛰어난 코드에 주저하지 않고 어제의 나와 비교하며 매일 조금씩 나아갔다. 덕분에 4주 차의 어려운 미션도 스스로 해결할 수 있게 되었고, 그 과정이 매우 뿌듯하게 느껴졌다.
벌써 아쉽다,,, 미션 하고 싶어 ㅓㅓㅓㅓ ㅜㅜㅜ
'💠프로젝트 및 경험 > 우테코 7기' 카테고리의 다른 글
[우테코 7기] 백엔드 프리코스 3주 차 회고 (0) | 2024.11.05 |
---|---|
[MVC 패턴] 로또 MVC 패턴을 이용하여 구현하기! (0) | 2024.11.04 |
[우테코 7기] 백엔드 프리코스 2주 차 회고 (1) | 2024.10.29 |
[TDD] 자동차 경주 TDD 방식으로 구현하기! (0) | 2024.10.28 |
[TDD] 문자열 덧셈 계산기 TDD 방식으로 구현하기! (1) | 2024.10.21 |