티스토리 뷰
아직도 정신이 없지만 6월의 나는 어땠는지 돌아보며, 머리도 식힐 겸 백엔드 데브코스 회고 글을 써내려 가보려고 한다.
이삿짐을 옮기다가 허리를 삐끗해서 며칠은 누워 지냈고, 이사 이후 계약에 문제가 생겨서 사실 6월은 데브코스에 집중하지 못했던 달이었다. 그래서 회고 글 부제가 VVS (Very Very Soso) 이다. 데일리 스크럼 때 팀원들과 컨디션 체크를 필수적으로 하는데 나는 VVS가 가장 많았던 것 같다 ㅋㅋㅋ 지금은 문제가 마무리 되었지만, 후폭풍으로 밀린 강의와 과제가 날 기다렸다.
나는 정말 열심히 공부해 왔는가?
데브코스를 진행하면서, 많은 감정의 혼재를 겪고 있다. 예전에 봤던 1등 하는 학생의 인터뷰에서 "독서실에서 제가 제일 공부 잘하는데, 가장 늦게 집에 가요"라는 구절을 본 적 있다. 이 속에서도 실력이 비슷한 사람만 있는 것이 아니라, 마치 벽이 보이는 것처럼 압도적인 사람이 몇몇 있는데, 그 사람들은 게더타운에 늦은 시각까지 접속하면서 엄청난 공부 시간을 보여준다.
개발 공부를 시작하며 나름 열심히 해왔다고 생각했지만, 아니 오만이었다. 세상에는 이렇게 치열하게 사는 사람들이 많았고, 심지어 나보다 훨씬 뛰어난 사람들이었다. 우물 안에 갇혀 사는 개구리였던 나는 이들을 보며 너무 혼란스러웠고, 무력해졌다. 처음에는 이 사람들을 보며 의욕이 생길 거라 생각했지만, 오히려 주눅 들었다. 과연 내가 이들처럼 코드를 작성할 수 있을까? 이들보다 더 열심히 공부할 수 있을까?라는 생각이 엄습했다.
첫 번째, 계산기 과제
이런 감정을 가진 채, 계산기 과제를 시작했었다. 부담감이 있는 상태이다 보니 코드 한 줄을 짜내려 가기 어려웠고, 며칠간 설계에만 몰두했다. 조금이라도 마음에 들지 않으면 변경하고, 갈아엎고, 생각만 했다. 그러다 보니, 보이는 결과물이 없어서 짜증도 밀려왔었다. 팀원들이나 멘토님들이 생각하는 습관은 좋으나, 그래도 일단 코드를 짜는 것이 중요하다고 말해주셨었는데, 알면서도 참 작성하기가 어려웠다.
코드를 작성할 때 이렇게 많이 고민해 본 경험이 전무했고, 낯설었지만, 동시에 재밌기도 했다. 추상화, 트레이드오프 등 많은 요인을 고려하며 객체지향적 설계란 무엇인가를 최대한 적용해보려고 했었다. 그 결과 아래와 같은 코드가 나왔다.
https://github.com/prgrms-be-devcourse/java-calculator/pull/192
[4기 - 신재윤] 1~2주차 과제: 계산기 구현 미션 제출합니다. by Shin-Jae-Yoon · Pull Request #192 · prgrms-be
📌 과제 설명 콘솔로 구현 OOP 계산기 구현 더하기 빼기 곱하기 나누기 우선순위 (사칙연산) 테스트 코드 구현 계산 이력을 맵으로 데이터 저장 기능 애플리케이션이 동작하는 동안 DB 외에 데이
github.com
걱정과 우려와는 달리, 멘토님들께 꽤나 좋은 평가를 받았다. (순한 맛으로 말씀해주신 건가!?) 사실 굉장히 얼떨떨했다. 최대한 고민하면서 작성했다고는 하지만 맞는 방식인지 틀린 방식인지를 몰랐는데, 이런 피드백을 받고 나니 그래도 고민한 나날이 헛되지는 않았구나라고 생각했다.
두 번째, 1차 바우처 과제
하지만, 계산기 과제를 끝내고 나니 밀려오는 건 3 연속 바우처 과제였다. ( 진짜 눈물이 쏟아져요 ㅋㅋ 백둥이 중 나만 힘든가 )
본격적으로 Spring을 사용하게 되어서, 레이어를 나눠서 설계하도록 노력했고, 계산기 과제보다는 설계를 조금 더 러프하게 가져가고 코드를 작성하도록 노력했다. 레이어를 나누고 DTO를 사용하는 것이 어색했는데, 작성하다가 한 번 감을 잡으니 막힘 없이 코드는 작성되었다. 글로벌로 aop를 활용한 로깅과 익셉션 처리 부분, DTO 변환에 대한 책임을 어느 계층에서 가져야 할까를 특히 많이 생각했다.
https://github.com/prgrms-be-devcourse/springboot-basic/pull/734
[4기 - 신재윤] SpringBoot Part1 Weekly Mission PR 제출합니다. by Shin-Jae-Yoon · Pull Request #734 · prgrms-be-devcou
📌 과제 설명 Spring Boot CLI 이용 Gradle 프로젝트 구성 바우처 관리 Command-line Application 제작 스프링부트 애플리케이션으로 생성 (Web 없이) 프로그램이 시작하면 아래와 같이 지원가능한 명령어 알
github.com
이번에도 올바른지에 대한 확신은 없지만, 멘토님이 전반적으로 깔끔하게 잘 작성해 주신 것 같다고 해주셔서 기분이 "매우" 좋았다.
세 번째, 2차 바우처 과제 (진행 중)
2차 바우처는 간단히 repository만 갈아 끼우면 된다고 생각했지만, 설계에서 난항인 상태이다. JPA가 아닌 JDBC를 이용하기에, 익숙하던 애노테이션을 사용하지 않고 어떻게 코드를 짜야할까도 걱정이고, Customer 도메인과 Voucher 도메인이 있는 상황에서 바우처에 고객을 할당해야 하는 상황인데, 두 도메인의 상위 애그리거트를 정의할 수 있을까? 둘 다 애그리거트 루트라서 고객 id에 대한 처리를 어느 쪽에서 가진다고 해도 어색한 감이 있다.
일단, 과제 제출이 얼마 안 남았기에 Customer - Wallet - Voucher 구조로 생각하여 분리할까 한다. 사실 고객과 바우처의 관계가 다대다가 아닌 일대다라고 생각하기 때문에, 일대다의 중간에 매핑 테이블을 또 두는 것이 좀 어색한 것 같기도 하고.. 일단 작성하고 코드리뷰받으며 리팩토링 하려고 한다.
아니 !!? 고객마다 사용하는 고유한 바우처라고 생각한다면 일대다의 관계가 맞기에 wallet을 두는 큰 의미가 없는 것 같다. 마치 게시판 - 댓글의 관계를 생각하고 바우처의 필드로 고객을 받는다면 해결될 것 같아서, 이렇게 결정 !
그래도 지구는 돈다
상황이 힘들건 기분이 안 좋건 어떻든 간에 공부는 지속되었다. 어떻게든 꾸역꾸역 밀어내니까 진행되었다. 진행하면서 느낀 것은, 데브코스 과정에 대한 고마움이 컸다. 이 과정을 통해, 내가 느끼지 못했을 감정들을 느끼게 해 줬고, 불과 한 달 전의 나와 지금의 나를 비교했을 때는 이미 사고하는 방식 자체가 바뀌었을 정도이다.
공부를 방해하던 상황적인 요소가 모두 해결되었고 과정 자체에만 집중이 가능한 상황이 만들어졌다. 치열하게 사는 데브코스의 사람들을 보며 느꼈던 무력감이 이제는 의욕으로 바뀌어가고 있다. 부족함을 깨달았으면 부족함을 채우기 위해 내가 더 치열하게 살면 된다.
스펜서 님이 슬랙에 올려주신 OKR (Object Key Results) 게시글을 보며, 80%의 달성률을 기록하도록 본격적으로 목표 설정을 해보려고 한다. 한 달 이면, 과정에 적응도 끝났고 이제 변명할 거리도 남아있지 않다. 이 카드가 내가 원하는 기업의 사원증으로 바뀌도록 인생에서 후회 없는 6개월이 되도록 노력하려고 한다. 이상 생각이 많았던 6월이었다.
'Retrospect > 데브코스' 카테고리의 다른 글
객체지향 의식의 흐름 기법 (1) | 2023.06.06 |
---|---|
프로그래머스 백엔드 데브코스 4기 최종합격 후기 (6) | 2023.06.02 |
- flex 수직정렬
- Dynamic Loading
- 자바 동적로딩
- JVM
- wsl2 오류
- CPU execution time
- extension 다운 안됨
- Java 컴파일러 동작 원리
- JVM 실행원리
- string pool
- flex align
- 프로그래머스
- JVM Runtime Data Areas
- Runtime Constant Pool
- Java 실행원리
- 코딩부트캠프
- vscode 오류
- JIT Compiler
- 컴퓨터 성능 지표
- Hotspot Compiler
- 가변객체
- JVM ClassLoader
- JVM Execute Engine
- 클라우드 기반 백엔드 데브코스
- JVM Memory Areas
- flex vertical align
- 프로그래머스 데브코스
- 백엔드 데브코스
- Java Compile time
- flex box
- Total
- Today
- Yesterday