해당 글은 코드스쿼드 2022 마스터즈 코스 "Java 웹 백엔드" 과정을 수강하면서 학습한 내용 등에 대한 회고 글입니다. :)
수강 회고
오늘 오전에는 소모임원들과 스크럼을 진행하면서 간단한 담소를 나누었다. 매주 주어지는 미션 수행 그리고 특히 저번주 많은 체력 소모를 주었던 페어 프로그래밍에 이어서 이번주 새로운 학습 거리 영역인 스프링 부트 미션까지 진행하다보니 다들 피곤한 기색이 역력해 보였다.
사실 나 역시도 요즈음 하루하루 굉장히 피곤함을 많이 느끼고 있는 중이다. 스크럼 이후 오전 시간 동안 호눅스의 강의가 이어졌는데 피곤함이 누적되다보니 오늘따라 유난히 집중하기 힘들었다. 그리하여 마스터 클래스 이후의 모각코 시간에 약간의 휴식이 필요하다고 생각하여 재충전을 위해 낮잠을 잔 후 오랜만에 내가 좋아하는 커피(스타벅스 돌체 콜드브루)를 테이크 아웃하여 바깥에서 음악을 들으며 산책하는 시간을 가졌다.
이러한 재충전의 시간을 가지며 "내가 왜 이런 고생을 하며 프로그래밍하는 것일까?"라는 근원적인 생각과 함께 자아 성찰(?)을 해보았다. 이러한 생각을 하는 이유는 일종의 "번아웃"을 방지하기 위함이었다. 개발자가 되기로 결심했었던 작년으로 되돌아가 내가 프로그래밍을 하고 싶었던 이유를 생각해보면 프로그래밍을 하는 것이 즐거웠었 때문이었다.
물론 개발자가 되기로 결심한데에는 IT 산업이 폭발적으로 성장 중에 있으며 전도 유망하기 때문인 생각도 기여했지만 보다 근본적으로는 프로그래밍을 통해 나의 생각이 실제화 되는 "재미"가 있었고 밤을 지새우며 고뇌하더라도 문제를 해결하는 것으로부터 느끼는 "희열감"이 있었기 때문이었다.
요즘에는 하루하루 정신없이 그리고 피로한 상태에서 프로그래밍을 하다보니 그리고 개인적인 여가 시간이 부족하다보니 내가 왜 프로그래밍을 하는지에 대한 근본적인 이유를 모른채로 프로그래밍을 하고있었다는 느낌이 들었다. 내가 마스터즈 코스 과정에서 고생을 하며 프로그래밍을 하는 것은 누군가에게 잘 보이기 위함이 아닌 근본적으로는 프로그래밍 하는 것을 즐거워하는 "나를 위해서"이다.
앞으로 프로그래밍 학습을 하면서 아울러 프로그래밍을 업으로 삼으면서 몰두하다보면 "번아웃"에 직면하는 순간들이 많이 오게 될 것이라고 생각된다. 그럴 때마다 나 자신을 계속 채찍질 하기 보다는 여유를 가지고 그동안 고생했던 나 자신에게 휴식을 주는 시간을 가지면 어떨까 생각해보았다.
결론적으로 이러한 시간들이 없다면 과연 내가 좋아하는 프로그래밍을 앞으로 꾸준히 할 수 있을지에 대해 의문이 들었고 앞으로 프로그래밍을 함에 있어서 적절한 휴식을 취해야 할 필요성을 느낀 하루였다. 재충전 시간 이후에는 그룹 리뷰 시간을 통해 미션 구현에 대한 스트레스 보다는 여유를 가지고 미션을 하면서 느꼈던 점들에 대해 자유롭게 나누는 시간을 가지며 나름(?) 여유 있는 하루를 보냈다.
학습 회고
- 스프링 부트 관련 미션 과제 풀이
- Java 웹 백엔드 클래스 내 소모임원과 zoom 회의실에서 학습
어제 스프링 부트 미션 1단계 Pull Request 이후 코드스쿼드 리뷰어 Dion님으로부터 많은 생각거리들과 개선점들을 피드백받을 수 있었다. 비록 주어진 생각거리들과 개선 작업들을 모두 처리하진 못했지만 일부 학습하는 과정에서 스프링 부트 프로그래밍을 하면서 놓치고 있었던 부분들이 정말 많았던 것을 느낄 수 있었다. 다음은 오늘 학습했었던 주요 내용이다.
생성자를 통한 의존성 주입
의존성 주입에는 필드 주입, setter 주입, 생성자 주입 3가지 방법이 있다. 이때 의존관계가 실행 중에 동적으로 변하는 경우는 거의 없으므로 생성자 주입이 권장되며 실제로 스프링 프레임워크에서 역시 생성자 주입을 적극 지원하고 있기 때문에 생성자가 1개만 있을 경우에는 @Autowired를 생략해도 주입이 가능하도록 편의성을 제공하고 있다.
이때 생성자 주입을 사용하면 필드 객체에 final 키워드를 사용할 수 있는데 이는 컴파일 시점에 누락된 의존성을 확인 가능 하도록 해준다. 왜냐하면 final은 멤버 변수에 적용시 초기화를 반드시 해주어야 하는 특성을 가지고 있기 때문이다.
Entity Class의 특징
Entity Class는 실제 데이터 베이스 테이블과 1:1 Mapping 되는 Class이다. 이때 Entity Class의 속성으로는 DB 테이블 내에 존재하는 컬럼만을 가질 수 있다. 또한 Entity Class를 작성 시에는 Setter를 무분별하게 사용하면 이러한 속성 값들을 쉽게 변경할 수 있으므로 Setter 사용을 가급적 지양해야 한다. 이때 특정 값을 설정해야 한다면 생성자를 이용하는 방법이 있다. 이러한 특성을 가지는 Entity Class는 데이터 베이스 계층에서 데이터를 저장 또는 관리하는데 사용되는데, 웹 애플리케이션 계층간 데이터 교환을 위한 객체인 DTO와 구분된다.
※ Entity vs DTO vs VO에 대해서는 따로 학습해볼 예정입니다.
좋았던 점
- 오늘 하루는 다소 부담감을 내려놓고 적당히 휴식을 취하며 하루를 보냈습니다 💪
아쉬웠던 점
- 그동안 프로그래밍 자체를 맹목적으로 하고 있었습니다. 오늘 회고를 통해 다시 한 번 프로그래밍을 하는 이유에 대해서 리마인드 하는 시간을 가졌습니다.
참고자료
- https://mangkyu.tistory.com/125
- https://freedeveloper.tistory.com/245
- 인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술"
'2022 Masters Course > Web Backend Course' 카테고리의 다른 글
2022 마스터즈 코스(백엔드) 41일차 회고(2022. 3. 7.) - "초심 리마인드" (4) | 2022.03.08 |
---|---|
2022 마스터즈 코스(백엔드) 40일차 회고(2022. 3. 4.) - "협업에는 친화력도 중요하다." (0) | 2022.03.04 |
2022 마스터즈 코스(백엔드) 38일차 회고(2022. 3. 2.) - "테스트 코드 작성, 이제는 해야한다." (4) | 2022.03.02 |
2022 마스터즈 코스(백엔드) 37일차 회고(2022. 3. 1.) - "나만의 페이스 유지하기" (0) | 2022.03.01 |
2022 마스터즈 코스(백엔드) 36일차 회고(2022. 2. 28.) - "지난 2월 되돌아보기" (0) | 2022.02.28 |