9월 29일부터 들어왔던 김영한님의 스프링 핵심원리 기본편 강의를 10월 13일에 완강했다.
회사를 다니며 공부하는 것이 생각보다 쉬운 일이 아니라는 핑계 속에서...
완강을 하는데에 많은 시일이 걸렸다.
그래도 우선은 열심히 달려온 내 자신에게 칭찬을 해주고 싶다. 잘했어!
사실 그동안 TDD가 중요하다는 말만 알고 있었지 실제로 테스트를 해보면서 개발을 하진 못했었다.
이 강의에서는 거의 80%의 코드를 테스트 코드로 작성해가며 스프링의 기능들을 탐구해나간다.
따라서 테스트 코드를 작성하는 것에 상당히 익숙해질 수 있었다.
앞으로 회사에서 개발을 해나갈 때 테스트 코드 작성을 도입할 예정이다.
TDD와 마찬가지로... 아니 그보다 훨씬 귀에 새겨지도록 들은 객체지향!
뭔지 알고 있다고는 해도 누군가에게 객체지향이 정확히 뭔지, 그래서 실제 코드를 작성할 때 어떻게 해야 객체지향적인 설계를 할 수 있는지 설명하긴 힘든 상태였다.
이 강의는 스프링의 핵심원리라는 타이틀을 달고 있지만, 사실 강의의 50%는 객체지향 설계에 대한 이해에 쏟고 있다는 느낌을 받았다.
그도 그럴 것이, 스프링의 탄생 배경 자체가 객체지향에 있기 때문에 이에 대한 이해가 중요했다.
실제로 예제 코드를 작성하고 결과값을 출력해가며 공부하니 대충이 아닌, 완전한 이해가 가능했다.
이 강의는 스프링의 3대 요소 중 첫 번째인 IOC, 제어의 역전에 대해서 깊이있는 이해를 할 수 있도록 돕는다.
DI 컨테이너와 ApplicationContext, BeanFactory 인터페이스, Bean...
사실 이에 대해 완전히 깊이있는 이해를 하지 않고도 개발은 가능했었다.
스프링으로 하는 웹개발의 패턴이 어느 정도 정해져있기 때문이었다.
그러나, 구조적인 측면에서의 파악없이 스프링으로 개발을 하는 것은 스프링이 선사하는 편리한 기능들을 절반도 채 활용 못하는 것과 다름 없다는 걸 깨달았다.
마찬가지로 김영한님의 강의인 위 강의를 완강하는 것이 다음 공부 목표이다.
이 강의는 직접 서비스를 구현해보면서 스프링 부트와 JPA에 대한 감을 잡도록 도와주는 강의라고 한다.
이해가 안 되는 것들은 그때 그때 찾아가며 정리를 해보도록 할 예정이다.
노션에 정리를 해가며 강의를 듣고 있는데, 이것들 중에서 좀 더 심화학습이 필요한 개념들을 꼽아서 공부 후 블로그에 정리하는 방식을 취할 예정이다.