백엔드 데브코스 회고 - 2차 단위기간

텐저린티·2023년 8월 3일
0

데브코스

목록 보기
39/41

🚥 서론

내 7월 돌려줘요!

어디갔어 내 7월



지난 1차 단위기간에서는 한달간 아쉬운 점을 고민하고 개선하는데 목적을 뒀다.

이번 2차 단위이간엔

  1. 부족한 점 파악
  2. 레벨업 방향 분석

을 중점으로 이야기 해보자.


그리고 프로젝트가 많았던 이번 단위기간을 통해 얻은 원칙이다.

  1. 크고 작은 모든일에 우선순위를 나누자.
  2. 헤매는 문제가 있으면 최대한 단순하게 해결해보자.

🚀 무얼 했나

  1. SpringBoot JPA 강의
  2. SpringSecurity 강의
  3. 바우처 과제
  4. 개인 프로젝트
  5. JPA 위클리 미션
  6. JPA 게시판 미션
  7. 책 읽기
  8. 코테 준비

엌ㅋㅋ 언제 다 했눜ㅋㅋ

📀 SpringBoot JPA 강의

바우처 과제를 하면서 계속 생긴 의문점이 있었다.
FK를 가진 테이블을 조회하고, FK로 연결된 테이블을 함께 조회하는 경우.

이 경우에 JDBCTemplate을 쓰면 십중팔구 절차지향으로 코드가 범벅이 되어버린다.
아무리 생각해봐도 이 방식이 아닌 것 같은 느낌.

한참 삽질한 결과 JdbcTemplate의 문제였다.
멘토님이랑 이야기해보니, 사실상 많이 사용하지 않는 방식이라고 한다.

JPA는 내 고민을 가볍게 해결해줬다.
개떡같이 테이블을 매핑하지만 않으면 찰떡같이 외부 테이블을 주워온다.

왜 이런 효자를 이제야 만났나 생각했는데,
나만 몰랐던 효자였다.

개인 플젝보니까 다들 JPA 쓰는 것 같더라.
왜 난 안 알려줬어...?

강의 진행해주신 홍구님이 최대한 실전 압축 강의를 해주어서 JPA에 대해 빠르게 이해하는 중이지만, 뭔가 거대한 빙산의 일각을 보는 것 같다.
놓치는 부분이 있을 것 같다는 막연한 불안감이 있다.

그래도 JPA 미션 두 개 하면서 필요한 지식을 채워가는 중이다.
미션 아니었으면 모르고 그냥 넘어갈 뻔했다는 생각이 든다.

속성으로 배움을 얻으려면 역시 실습이다.

🔐 SpringSecurity 강의

올 게 왔구나..

올 게 왔다.
큰 거 왔다.

세큐리티.

기다리고 있었다.
덤벼라.

호되게 당해주마.

회고글 쓰고 이틀정도 지났는데, 호되게 당하는 중이다.

무엇보다 강의 내용에 나오는 방식이 거의 다 deprecated 되어서
강의를 따라가면서 디버깅을 할 수 있는 것도 아니고
바뀐 방식에 대한 미션 해답을 제공되지 않아서 구심점을 잃어간다는 생각이 많이 든다.

세큐리티 강의는 리뉴얼이 절실하다고 생각한다.

하다못해 미션 만이라도 리뉴얼 해줘야 한다고 생각한다.

버전이 2 단계 아래에 있는 deprecated 코드를 배우는 이유는 글쎄..
잘 모르겠다.

💳 바우처 과제

저번 단위기간에는 1주차 과제가 통과됐던 걸로 기억한다.
이번 단위기간에는 2주차 통과하고, 3주차 피드백 반영해서 PR 올린 상태다.

꽤 오래 가져왔다. 바우처 과제.
하지만 개인적으로 정말 많이 성장했다고 느끼는게
애초에 몰랐던 내용을 많이 알게 되었고
이것저것 시도해보면서 느낀 점도 많다.

멘토님이 계속 키워드를 주시면서 이것저것 고민하게 해줬는데
7월 내내 정신없이 바쁘긴 했지만 과제 끝나가는 지금은 너어무 고맙다.

아 진짜 너무 고마움.

간략하게 추려보자면,

  1. 연관 매핑 테이블을 Jdbc템플릿으로 구현해본거
    구현하면서 부조리 느끼고, JPA가 왜 효자인지 알게 된 거
  2. REST API란 무엇인지
    고려해야할 것은 무엇인지
  3. ExceptionHandler란 무엇인지
    url 매핑은 어떻게 해야하는지
  4. Pageable은 왜 필요한지

이외에도 기초적인 질문을 많이 받았다.

백엔드 경험은 커녕 웹 지식도 부족했기 때문에
이런 용어가 있는지도 몰랐다.

'왜 이런것도 몰라?' 가 아니라
'이런게 있는데 알아보실?'

이런 느낌의 피드백이 성장에 탄력을 주는 것 같다.


아 그리고,

Mapstruct는 라이브러리를 써보라고 하셔서 근 한달간 써봤는데

독이다. 치명적인 독임.

한 달 동안 스프링 공부보다 mapstruct 공부를 더 많이 한 것 같다.

삼키지 말고 뱉을것.

누군가 mapstruct 좋아요 라며 권할때는

국번없이 112

🍿 개인 프로젝트

자유주제로 도메인을 하나 선정해서 백엔드를 구현하고,
간단한 프론트도 함께 구현해서 발표하는 과제였다.

나는 극장 관리 시스템을 만들어서 제출했다.

회고는 여기 포스팅에 정리해두었다.

JPA랑 세큐리티 알토란처럼 잘 배워놓고 나중에 리팩토링하러 다시 돌아올거다.

💾 JPA 위클리 미션

JPA 를 활용하는 간단한 미션이었다.

깃허브

  1. 단일 엔티티 매핑하고 CRUD 구현
  2. 영속성 컨텍스트 조작
  3. 연관 관계 매핑

강의 듣고, 비슷하게 코드를 작성해보는 미션이었다.

그니까 사용설명서 보고 하나씩 따라 조립하는 느낌. ㅇㅇ

코드를 직접 작성하고, 테스트 코드 작성하면서
JPA가 무엇인지 감을 잡고 어떤 원리로 돌아가는 건지 훔쳐볼 수 있었다.
시간이 부족해서 당당히 뜯어보지는 못하고, 테스트 돌아가는 쿼리 보면서 훔쳐본 느낌이다.

페어프로그래밍으로 과제를 진행했는데, 이게 오메가였다.
경험이 별로 없다보니, 활용이나 개념정리가 잘 안 된 상태였는데
고맙게도 함께 페어프로그래밍 했던 동료분이 잘 알고 계셔서 이것저것 물어보면서 할 수 있었다.

특히 연관관계 매핑에서도 도메인이랑 테이블 개념을 연결시켜서 새로운 연관관계를 제안해주었다.
한참 이야기를 나눈 후에 이해할 수 있었다.
만약에 이런 이야기를 나누지 않았다면, 나는 앞으로도 틀에 갇힌 사고만 했을 것 같다.

정말 좋은 기회였다.

🖥️ JPA 게시판 미션

현재 진행 중인 미션이다.

어제 시작한 따끈한 미션.

겁부터 먹고 시작했는데, 의외로 위클리 미션보다 난이도는 아래로 예상된다.

요구사항이 명확한 것도 있고,
테이블 관계가 단순한 것도 있다.

일단 JPA를 이용한 프로젝트에서 전체 로직을 어떻게 구현할 수 있는지에 중점을 두고 과제를 할 생각이다.

특히 나는 http 쪽이 부족한 것 같아서 이 부분에 대해서 페어프로그래밍 동료와 이야기해보면서 진행할 생각이다.


누가 그랬냐.

난이도 낮다고.

아니, 난이도 높지 않은 거 맞는데

촉박한 시간동안 뭔가 하려고 하니까 매일 동틀때 잠들게 된다.

지금 이거 수정하는게 토요일인데,

내 기억은 저번주 일요일이 마지막임.

📚 책 읽기

저번 읽었던 책은 <CS전공지식노트>였다.
정처기 하위호환으로 나에게는 큰 도움이 안 되었다는게 평이었다.

하지만 이번 단위기간에는 좋은 책을 두 권이나 알게 되었다.

<내 코드가 그렇게 이상한가요?>
<SQL 레벨업>

내 코드가 그렇게 이상한가요?

일단 내코드 책은 클린코드에 대한 이야기다.
좀 더 정확히 말하면, 객체지향을 준수할 수 있는 환경을 만드는 내용이다.
선언형에 관한 내용은 없고, 거의 객체지향에 초점이 맞춰져 있다.

뎁코 시작부터 받은 피드백 중에 클린코드나 객체지향에 대한 피드백을 꽤 많이 받았다.
이 책부터 읽고 시작했으면 피드백 내용이 많이 달라지지 않았을까 싶다.

암튼 요즘 푹 빠져사는 책이다.

SQL 레벨업

SQL 레벨에서 DB를 효율적으로 사용하는 방법에 대한 내용이다.
아직 초반부 읽는 중이라 많은 내용을 알지는 못하지만,

JPA 하면서 알게된 N + 1 문제와 연결되는 느낌이 있어서 꾸준히 볼 생각이다.

⌨️ 코테 준비

사실 상 보름 정도도 준비 안 한 것 같다.

과제에 치여사느라, 하루하루 미루게 된 것 같다.

최대한 아침 시간에 강의 듣기 전 할 수 있도록 수면시간을 조절해보는게 필요하다.

요즘에 코테 언어를 바꿔볼까 생각 중이다.

맨 처음 자바에서 출발해서, 이제는 파이썬이 모국어다 싶을 정도로 많이 썼는데,

내가 원하는 회사는 C언어를 써야하는 것 같아서 잠깐 찍먹해보려고 한다.

해보다가 영 못쓰겠다 싶으면 ㅌㅌㅌ 해야지.

📺 아쉬운 것들

TIL

TIL 쓰는 건 어느정도 정립된 것 같다.
강의자료에서 신기하거나, 까먹을 것 같은거는 정리하고 아닌 것은 그냥 강의자료를 참조할 생각이다.

요즘엔 피드백이나, RBF, 독서를 많이 한다.
이걸 정리해서 TIL을 작성하는 편이 더 낫다.

책읽기

지금 읽고 있는 책을 다 읽으면 또 두 책을 병행할 생각이다.

하나는 http 같은 네트워크 책을 읽는것.
나머지 하나는 토비 스프링을 읽는것.

과제를 하면서 나에게 부족하다고 느꼈던 두 가지 부분이다.

근데 웹 개발한다면서 저거 두 개가 부족하면 큰일 아닌가 싶긴하다.

부족하면 채워야지 어쩌겠누

수면시간

지난 주 세션에 강사님이 보상의 형태를 바꿔보라고 하셨다.
하루 일과를 끝내고 보는 넷플릭스만큼 독이 되는게 없다고 하셨다.

하지만, 나는 검은 머리 짐승.

하지말라면 더 하고 싶은 검은 머리 고얀 짐승.

유튜브를 손에서 내려놓지를 못했다.
덕분에 수면시간은 박살났고, 그렇다고 일찍 일어나지도 못했고.

전반적으로 7월 한 달이 짧았던 이유는 하루가 짧았기 때문인 것 같다.

오늘부터라도 제때 자도록 해야지.

⏰ 다음 달에 하고 싶은 것들

  1. 네트워크 관련 TIL 작성하기 -> 지식 넓히기
  2. 스프링 관련 TIL 작성하기 -> 특히 테스트 지식 넓히기
  3. 코테 언어 바꿔보기 -> C++ 할 만 한가?

🎙️ 결론

벌써 두 번째 단위기간이다.
시간이 아깝다는 생각을 많이 하는 시점이다.

1차 단위기간에 고민했던 것들이 대부분 해소했다.

문제 파악 -> 분석 -> 해결법/대안 -> 시도

이 행동원리를 앞으로도 유지하는게 좋을 것 같다.


서론에서 언급한 회고 목적에 대해서 상기해보자.

  1. 부족한 점 파악
  2. 레벨업 방향 분석

지식 부족은 죽을때까지 해소할 수 없다고 생각한다.
당장 해소할 수 있고, 학업에 도움이 될 부족한 점을 찾았다.

생활패턴.

아침에 일어나서 해야하는 대부분의 루틴을 소화하는걸 목표로 하는게 좋겠다.
나에게 절실한 건 시간적 여유다.
조급한 마음은 몸도 병들게 할거다.


레벨업 방향은 우선 스프링과 네트워크로 잡았다.

현재 SQL 책을 읽고 있지만, 면접 대비용 이상으로 활용하긴 어려울 것 같다.

나는 스프링 코드에 사용할 수 있는 지식을 원한다.

따라서 관련 책을 찾아보면서 내가 무엇을 모르고 있는지부터 파악하는게 좋을 것 같다.


그래도 이번 한 달 고생 많았다.

데브코스를 하기 전 불안했던 마음은
이제 시간이 모자라 허덕이느라 잘 기억도 안 난다.

앞으로도 불안, 초조 이런 언제 생겼는지도 모를 낯선 감정들은 고이 접고
그 시간에 한 발 더 앞으로 가자.

아니면 잠이라도 한 숨 더 자던가.

profile
개발하고 말테야

0개의 댓글

관련 채용 정보