Search
Duplicate
🤖

스프링 교육과정 소개 및 회고

왜 나는 이 과정을 듣게 되었는가?

프로그래머스, 인프런, 패스트캠퍼스, 넥스트스텝까지.. 다양한 교육플랫폼 과정에 참가를 했고 대부분 무사히 수료를 한 상황에서 이제 3년차 개발자가 되어가는 시점에서 다양한 진로를 생각해야하는 시점이 되었다.
비슷한 과정을 밟던 동기, 후배, 협력사 개발자분들은 성공적으로 이직, 창업 등등 자신의 길을 개척하고 있었다.
나도 막연히 포스팅만하고, 조용히 집에서 공부만하였지만, 이직이나 면접위주의 공부가 아닌 기본기, 개인 관심사 공부만하다보니 정작 진짜 이직을 알아볼 시점에서 기술면접 질문들을 공유받아보면 아는것보다 모르는게 많았다.
인프런으로 김영한님의 강의를 통해 혼자 조금씩 스프링을 공부하고 있었는데, 나는 제한된 시간내에 최대한의 성과를 얻어야하고 그렇기에 원래는 F-LAB을 알아보고 있었다. 6개월의 550만원이던 시절에 생각을 했는데, 한달사이에 700만원을 훌쩍 넘기도록 가격이 오르는 것을 보고, 깔끔하게 포기한 시점에서 종종 보던 유튜버이였던 아샬님이 생각이 났고, 8월 - 11월까지 진행하는 스프링 과정 3기를 수강하게 되었다.
3달에 220만원이라는 금액은 얼핏보면 엄청 비싼 것 같지만, 잘 생각해보면 시니어급 개발자분들의 코드리뷰를 한달에 70만원정도로 들을 수 있다는것은 합리적인 가격이라고도 할 수 있다.
넥스트스텝에서 정말 많은 것을 얻고 무엇보다 내가 지속적으로 공부할 수 있게 해준 원동력이 되었다면, 이번 스프링 과정에서는 내가 스프링을 제대로 쓸 줄 안다는 자신감과 공부방향을 학습하고, 내 진로를 잡는데 도움이 되면 좋겠다.

이 과정을 통해 무엇을 할 수 있게 되는가?

이번 과정을 통해 얻을 수 있는 것은 다음과 같다고 한다.
모던 Java, 스프링을 더 높은 수준으로 사용하기
올바른 테스트 코드 작성하기
TDD를 통한 견고하고 유연한 코드 개발
좋은 설계를 위한 관심사의 분리 이해
올바른 객체지향 설계 방법
Git & 코드 리뷰를 통한 협업하기
넥스트스텝때도 그렇지만, 코드리뷰의 내용들은 결국에는 클린코드, 클린아키텍처, TDD등 여러 명서들에 나와있는 내용들이 많다. 하지만, 책을 보면 되니 이런 코드리뷰를 들을 필요가 없는 것일까? 하고 생각한다면 내 답은 NO이다. 이 코드리뷰의 핵심은 내가 이미 책을 봤음에도 불구하고 놓치고 있거나 잊고 있거나 잘못된 습관을 적재적소에 짚어준다는 것에 있다.
나도 해당 책들을 읽었지만 코드 리뷰를 하라고하면 같은 퀄리티로 할 수는 없다. 그렇기에 이 리뷰는 가치있다.

교육 특징

내가 이미 겪어본 교육 플랫폼은 프로그래머스 백엔드 CRUD는 이제 그만 3기, 넥스트스텝 TDD, ATDD, Infra, BlackCoffee 과정 등이 있는데 모두 코드숨과 유사하게 시니어급 개발자의 코드 리뷰, 테스트 코드 위주의 개발, 리팩터링, 그리고 내 수준에 따라 다르지만 초보였던 내게는 고통 주도 개발까지 많은 부분이 유사하다.
그런데 코드숨에서는 주간 회고와 애자일 개발이라는 특징이 추가되어 있다.
주간 회고 회고란 지나간 일을 돌이켜 생각해보며 좋은 점은 유지하고 아쉬운 점은 개선하기 위한 방법을 고민하는 활동입니다. 우리는 매주 회고를 통해 무엇을 배웠는지 정리하고, 개선할 점과 실천 방안을 스스로 설정할 수 있게 됩니다.
나는 지금도 블랙커피 블로그 스터디를 통해 반년넘게 주간 회고를 진행하고 있는데, 이에 연관지어서 진행하면 될 것 같기에 다행이라는 생각이 든다. 다만, 지금까지는 개발위주보다는 내 인생자체를 회고한다는 느낌이 강했다면 11월까지는 코드숨 교육에서 말하는 이념과 최대한 맞춰서 작성하도록 해야 할 것 같다.
애자일 개발 고객에게 더 많은 가치를 제공하기 위한 애자일을 경험합니다. 매주, 가능하면 매일 고객에게 가치를 전달하기 위한 개발 방식을 추구합니다. 비지니스의 성공을 위한 개발은 무엇인지 느낄 수 있습니다.
사실, 애자일 개발은 잘 모르겠다. 경험을 못해봐서인지, 해봤지만 내가 잘 모르는것인지조차 알 수 없기에
이번 기회를 잘 잡아 익숙해질 수 있도록 해야 할 것 같다.

커리큘럼

1주차 - 웹 개발 시작하기

Java로 서버개발을 시작하고 REST API에 대해 알아봅니다.
Java 개발 환경 구축
REST API
Jackson
과제1: Todo 앱 만들기

2주차 - Spring Web

Spring Web을 사용해서 백엔드 개발 방법에 대해 알아봅니다.
Spring Web MVC
ControllerAdvice
Marko.js
과제1: Spring Web MVC를 이용해서 Todo앱 만들기

3주차 - 테스트

JUnit5를 이용해서 테스트를 작성하는 방법에 대해 알아봅니다.
JUnit5
AssertJ
MockMvc
Mockito
과제1: 컨트롤러와 서비스 테스트 작성하기 과제2: MockMvc를 이용해 컨트롤러 테스트 작성하기

4주차 - 객체지향 설계

도메인을 정의하는 방법에 대해 알아봅니다.
클린 아키텍처
Spring Data JPA
Repository
과제1: 상품 컨트롤러와 서비스 작성하기

5주차 - 입력 검증

사용자가 요청한 데이터를 검증하는 방법에 대해 알아봅니다.
Validation
DTO
Dozer Mapper
과제1: 사용자 API를 만들기 + Product DTO와 Object mapper 적용하기

6주차 - 로그인

JWT를 이용해 사용자를 인증하는 방법에 대해 알아봅니다.
JWT
과제1: 인증(로그인) 및 인가 처리

7주차 - Spring Security

Spring Security을 알아봅니다.
PasswordEncoder
AuthenticationFilter
과제1: 사용자 패스워드 암호화 및 인가 처리를 Spring Security로 처리

8주차 - 더 나아가기

Spring을 이용한 백엔드 개발에서 실전적인 부분을 더 다뤄봅니다.
Spring REST Docs
Docker
과제1: Spring REST Docs 적용, Docker로 빌드 및 배포

9-12주차 - 4주 프로젝트

그동안 배운 걸 모두 동원하여 포트폴리오 프로젝트를 4주간 제작합니다.
Agile의 핵심 가치 이해
프로젝트를 진행하는 방법
CI/CD
E2E 테스트
과제: 개인/포트폴리오 프로젝트 제작