회고 방식으로 5F를 채택하였습니다.
5F는 다음 다섯 개의 키워드에 따라 순서대로 회고를 진행하는 방식입니다.
- Fact: 사실, 무슨 일이 있었나?
- Feeling: 느낌, 어떤 느낌이 들었나?
- Finding: 배운 점, 어떤 인사이트를 얻었나?
- Future action: 향후 행동, 앞으로 무엇을 해야 할까?
- Feedback: 피드백, 앞서 정한 향후 행동을 실천해본 뒤, 이에 대해 어떤 피드백을 받았나?
1. 👀 FACT
- pre팀을 2주동안 진행하고, new팀으로 이동하였다.
- 데브코스 내에서 3개의 스터디를 시작하였다.
- 알고리즘 스터디
- 발표 스터디
- NEXTSTEP 스터디
- 데브코스 커리큘럼으로 Java, Database, Spring Boot 를 학습하였다.
- Java 과제로 OOP를 활용하여 계산기를 구현하였다. (첫 코드리뷰 받은 과제)
- NEXTSTEP 스터디에서 숫자 야구 게임, 좌표 계산기를 TDD를 활용하여 구현하였다.
- 6월 28일에 Java Reflection 에 대해서 발표하였다.
- 발표 준비를 시작하면서 강의가 밀리기 시작했다.
- Spring Boot 과제로 바우처 관리 애플리케이션을 개발하고 있다. (2주차까지 완성했다.)
2. ❤️ FEELING
같이 성장하는 동료들이 생겨서 든든하다. 데브코스에 지원한 이유 중 하나가 함께 성장하며, 개발에 대한 토론을 할 수 있는 동료들을 만나는 것이었는데, 그러한 동료들을 만나서 기쁘다. 멘토님들도 너무 좋다.
데브코스를 통해 내가 성장할 수 있는 환경을 만들 수 있었다. 온라인이지만 코어 타임이라는 모두의 약속 덕분에 체계적이고, 자기주도적인 학습을 할 수 있다. 한 달동안 내가 느낀 데브코스는 커리큘럼만 잘 따라도 얻을 게 많은 곳이다. 그만큼 빡세지만, 오히려 좋아🥰
추가로 데브코스는 서로 모르는 것이 있으면 물어보고, 문제가 생기면 함께 해결하며, 좋은 팁이 있으면 공유하는 그런 곳이다.
코드리뷰를 처음 받아봤는데 깨달은 게 많았다. 평소에 개발을 할 때 '왜' 에 대한 고민을 하면서 개발을 한다고 생각했다. 하지만 코드리뷰를 받아보니 착각이라는 것을 알았다. 멘토님께서 왜 이렇게 구현했는지 물어보셨는데, 대답을 할 수 없었다. 그동안 구글링에서 봤던 대로, 강의에서 봤던 대로 따라치고 있던 것이다. 이 기회를 통해 나의 코드에 대해서 정말 '왜' 이렇게 작성했는지 고민할 수 있는 시간을 가져서 좋았다.
열심히 하는 팀원들을 보며 동기부여를 얻기도 했지만, 반대로 속도가 느린 나의 모습에 초초하기도 했다. 계획적인 팀원을 보며 '나는 왜 이렇게 게으르지?' 라는 생각도 하였다. 하지만 그만큼 더 노력하고 열심히 해야하는 것을 느꼈다.
pre팀 기간이 끝나고 피어리뷰를 받았다. 피어리뷰에 적힌 나의 좋았던 점은 커뮤니케이션과 열정에 대한 이야기가 많았다. 개선해야할 점에는 자신감에 대한 이야기가 주를 이뤘다. 피어리뷰에서 내가 정말 개선해야할 점들에 대해서 말해주어서 좋았다. 스스로 느끼고 있었지만, 남에게 직접 들은 적이 없던 이야기었는데 피어리뷰를 통해서 들으니까 개선해야겠다는 마음이 절실하게 들었던 것 같다. 멘토님의 리뷰에는 내가 개인 면담 때 말씀드렸던 고민들에 대한 해결책을 적혀있었는데, 멘토님께서 말씀해주신대로 꼭 실천해서 나의 문제점을 고쳐야겠다.
한 달동안의 느낀 점을 총 정리 해보자면, 지금보다 더 열심히 해야겠다는 의지가 불타올랐다.
+ Java가 진짜진짜 어려운 녀석이라는 것을 느꼈다...
3. 🔍 FINDING
- Java에 대해 새롭게 알게된 것이 많다.
- Record
- Reflection
- 함수형 인터페이스 (Fuctional Interface)
- ✨객체 지향 생활 체조 원칙✨을 따라야 한다.
- 한 메서드에 오직 한 단계의 들여쓰기만 한다.
- else 예약어를 쓰지 않는다.
- 모든 원시 값과 문자열을 포장한다.
- 한 줄에 점을 하나만 찍는다.
- 줄여 쓰지 않는다(축약 금지).
- 모든 엔티티를 작게 유지한다.
- 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다.
- 일급 컬렉션을 쓴다.
- getter/setter/프로퍼티를 쓰지 않는다.
- Enum을 최적화하는 방법을 알았다. HashMap을 통해 Enum을 캐싱하여 조회를 O(1)에 할 수 있다.
- TDD를 직접 해보면서 TDD의 중요성을 알았다. + TDD 너무 재밌다.
- DDD를 공부하면서 '도메인'을 조금이나마 이해할 수 있게 되었다.
- 빈약한 도메인이 되지 않도록, 도메인이 비지니스 로직을 갖고 있도록 하자.
- DDD의 계층구조(Layered Architecture)는 다음과 같다.
- Presentation
- Application
- Domain
- Infrastructure
- Nested Class 대신 Sealed Interface를 사용할 수도 있다.
- 테스트 코드를 작성할 때, 테스트 실행 순서에 영향 받지 않도록 작성해야 한다.
- Spring Profile을 적용하여 개발 환경을 구분할 수 있다.
- Parameterized Tests를 통해 중복적인 테스트 코드를 다이어트 할 수 있다.
- Stack 보다는 Deque가 성능이 좋다.
- 정적 팩토리 메소드 패턴과 of와 from의 차이를 알게 되었다.
- 코드 가독성과 명확한 네이밍 사용의 중요성을 알게 되었다.
- `toDto` 에 대한 책임은 "자주 변하는 것이 자주 변하지 않는 것에 의존해야한다."
4. ✏️ FUTURE ACTION
- 데브코스 밀린 강의를 다 듣기
- 김영한님의 「스프링 DB 2편」 까지 듣기
- 1일 1알고리즘 다시 시작하기
- 트러블슈팅 블로그에 기록하기
- CommandLineRunner에서의 SpringBootTest 포스팅하기
- 「객체지향의 사실과 오해」 읽기
- 아침형 인간 되기
- 운동 꾸준히 하기
5. 🪞 FEEDBACK
2달차 회고 때 앞서 정한 계획들을 제대로 실천했는지 피드백 할 예정이다. 한 달 후에 만나요!
- 데브코스 강의를 코어 타임 전 오전 시간에 들으려고 노력을 했다. 오전에 수강을 하면 코어타임에 여유롭게 공부할 수 있어서 좋았다. 결론적으로 강의를 밀리지 않고 다 들었다! 👍
- 김영한 님의 강의는 아직 듣지 못했다. 원래는 시간이 남는다면 추가적으로 들으려고 했던 강의인데 할 공부도 많다보니 못 들었던 것 같다.
- 1일 1~2알고리즘 풀기를 꾸준히 수행하고 있다. 오랜만에 다시 알고리즘 문제를 푸니까 쉬운 문제도 잘 풀리지 않았다... 역시 알고리즘 문제 풀이는 감을 계속 유지하는 게 중요한 것 같다. 앞으로는 감을 잃지 않기 위해 계속해서 1일 1알고를 이어나갈 예정이다. 👍
- 결과부터 말하자면, 기록 안했다... 이건 정말 반성해야 한다. 의미있는 블로그를 만들어나가기 위해서 트러블슈팅을 포스팅하기로 마음 먹었지만 하나도 실천하지 못한 것, 진짜 반성하자.
- 「객체지향의 사실과 오해」 는 현재 2장까지 읽었다. 매일 한 장씩 읽는 계획이 있었지만, 계획을 지키지 못했다. 하루에 한 장씩이라도 읽는 것을 목표로 다시 차근차근 읽어볼 예정이다.
- 아침형 인간이 되었다! 코어타임(필수 공부시간)이 10시로 바뀐 후부터 아침 시간도 활용하게 되어 너무 좋다. 물론 누군가에겐 이른 시간이 아닐 수도 있겠지만, 매일 오후 1~2시에 일어나던 나에게는 엄청나게 이른 시간이다! 앞으로는 기상 시간을 조금씩 줄여 8시에 일어나는 것이 다음 목표이다. 👍
- 운동은 꾸준히 하고 있다. 필라테스 주 2회 가는 것과 강아지 산책하는 것이 전부이지만... ㅎㅎ 안하는 것보단 낫다고 생각한다. 👍