인프런 커뮤니티 질문&답변

박찬석님의 프로필 이미지
박찬석

작성한 질문수

토비의 스프링 부트 - 이해와 원리

공부 방법에 대해서 질문드립니다.

해결된 질문

작성

·

8.8K

·

수정됨

39

안녕하세요. 토비님

저는 이제 곧 4년차가 되가는 개발자 입니다.

토비님의 스프링 부트 강의가 나온다는 이야기를 듣고 바로 구매 후 강의를 듣고 있는데 진짜 너무 좋은 내용에 무한 반복을 하고 있으며, 이전에 토비님이 쓰신 토비의 스프링 3.1을 이전에 완독을 해볼려고 하다가, 도중에 다른 일 때문에 중단을 했었는데 요번에 다시 한번 읽어볼려고 합니다.

평소 토비님처럼 개발자로서, 전문가가 되고 싶다는 생각을 항상 하고 있는데, 토비님께서는 어떻게 스프링이나 다른 기술들을 공부를 하시는지, 궁금합니다. 그리고 토비님께서 생각하시는 스프링 개발자라면 꼭 기본적으로 꼭 알아야 될 필수 기술이 어떤 건지도 궁금합니다.

어떻게 토비님께서 기술 공부를 하시는지, 비법을 알려주신다면 정말 열심히 해보겠습니다!

정말 좋은 강의를 내주셔서 감사합니다.

다음 강의 기다리고 있습니다!!ㅎㅎ

답변 1

84

토비님의 프로필 이미지
토비
지식공유자

어려운 질문을 해주셨네요.

기술 공부에 비법은 없습니다. 각자 자신이 해야하는 일에 절박감을 가지고, 이 기술을 어떻게 써야 내가 원하는 결과를 가져올 수 있는지 열심히 찾는 수 밖에요. 당장 해야하는 일을 해결할 때는 모든 방법을 다 동원해서 코드를 만들어야죠. 다만, 이런 방식을 지속하면 생산성은 안 오르고, 응용력도 떨어지고 결정적으로 재미가 없습니다.

그래서 공부를 하는데요. 이건 사람마다 선호하는 스타일이 다른 것 같습니다. 레퍼런스 문서와 바이블 같은 책을 쭉 정독하면서 기억하고 싶은 내용을 메모해두기도 하고, 최대한 공개된 예제를 찾아서 이걸 분석해가면서 왜 이렇게 만들었는지 궁금한 부분이 있다면 거기서 더 깊이 들어가서 관련된 내용을 찾아서 이해해보려고 노력하는 방법도 있습니다. 코딩 과정을 볼 수 있는 영상 강의를 선호하는 분들도 있겠죠.

저는 스프링을 처음 공부할 때 볼 책도 없었고, 레퍼런스 문서도 50페이지 밖에 안 되었습니다. 그래서 튜토리얼 예제를 가지고 계속 분석해보면서 이해를 하려고 노력했습니다. 그리고 어느 정도 동작하는 코드를 만들게 되었을 때부터, 도대체 스프링은 왜 이런식으로 만들어졌는지 관련된 책을 찾아서 읽고, 거기에 나온 주제들을 또 찾아서 공부했죠.

저는 일단 양이 중요하더라고요. 그래서 책이나 레퍼런스 문서는 물론이고, 블로그 글, 포럼의 질문/답변, 그리고 스프링 오픈소스 프로젝트의 이슈 트래커를 보기도 하고, 요즘 같으면 유튜브 영상도 찾아보고요. 꽤 많은 양의 정보를 접하려고 노력을 합니다. 그 중에서 원리나 핵심을 이해하는데 도움이 되는 것을 발견하면 그걸 잘 정리해두고, 그걸 기준으로 또 다음 주제를 잡아서 살펴보죠. 알고 싶어지면 API 문서도 읽습니다. 자바의 클래스 라이브러리나 스프링의 주요 인터페이스의 Javadoc은 정말 설명이 잘 되어있습니다. 자주 읽으세요.

결국엔 스프링 소스코드를 분석하면서 그 안에 담긴 개발자들의 생각과 설계 방식을 살펴보고, 이걸 어떻게 내가 만드는 코드에 응용을 해볼까 생각을 많이 한 것 같습니다.

그런데 저처럼 하시면 이게 아주 오랜 시간이 걸릴 수 있습니다. 수십만 라인의 스프링 코드를 살펴보는 거, 이거 시간대비 효과가 매우 적습니다. 분석하기도 힘들죠.

일단 스프링을 포함해서 사용하는 기술의 주제의 바이블 또는 원리를 잘 설명했다는 책을 구해서 정독을 해주세요. 저 같은 경우엔 스프링은 로드 존슨이 쓴 J2EE 시리즈와 Pro Spring 1판이 큰 도움이 됐습니다. 그리고, 공식 레퍼런스 문서는 최소한 한번은 정독하세요. 읽다가 잘 모르는 주제는 넘어가도 좋지만 내가 좀 접해봤다 싶은 내용은 문서에서 설명하는 것을 빠짐없이 한번은 읽고, 이건 기억해야겠다 싶은 걸 찾아서 기록해두세요.

그리고 코드를 만들어봐야 합니다. 코드를 작성해보는 양이 매우 중요한데, 이걸 실무 프로젝트만 만들면 해당 프로젝트에서 결정한 스타일과 기술 사용방법에 제한을 받습니다. 스프링 프로젝트 10개 했는데 한번도 안 써본 게 많죠. 그럼 다음에도 못 씁니다. 그래서 개인 프로젝트를 많이 만들고, 이번엔 이 방식으로 코드를 짜 봐야겠다라고 생각하고 만드는 거죠. 그렇게 코드를 만들면서 느끼시는 게 중요합니다. 이런식으로 하니 이렇게 코드가 나오는구나, 저렇게 했을 때와는 다른 특징이 생기네 등등.

또 제가 선호하는 건, 책이나 문서에 나오는 어떤 설명을 보면, 정말 그런가라는 의문을 가지고 학습 테스트를 만듭니다. 이게 시간이 조금 더 걸리지만 한번 만들어보면 이해가 잘 됩니다. 해당 방식을 사용하는 코드를 작성하는 방법에 대한 이해도 되고, 나중에 참조할만한 자신의 참조 툴박스 같은 역할도 해주지요.

어떤 기술을 사용할지는, 일단 요즘 추세나 유행을 따라가시고요. 남들 안하는 거 괜한 호기심으로 선택하면 재미는 있을지 몰라도 실무에 도움이 안 될 수 있습니다. 많이 사용되는 기술이 더 안정적이고, 더 빠르게 발전하고, 더 참고할 자료가 많습니다. 대신 주변에 쓰는 기술에 매몰되지 말고 더 넓게 보고 기술을 찾으셔야죠. 그리고 사용하기로 결정한 기술을 다양한 예제를 만들어서 스스로 검증할 수 있어야 합니다. 너무 최신 기술은 불안하기도 하고 성능에 문제가 생기거나, 호환성이 취약하기도 합니다. 그걸 확인해볼 수 있는 예제를 만드는 훈련도 해보세요.

가장 효과적인 학습 방법은 코드와 함께 하는 것입니다. 그리고 내가 만든 코드를 계속 다듬어보세요. 예제를 책이나 강의에서 봤으면 그걸 따라해본 뒤에 다음에 또 다시 만드는데 그때는 내가 뭔가 아이디어를 더 내고, 확장해보거나 더 최적화를 해보거나 다른 방식을 시도해봅니다. 비슷한 일을 하는 코드를 이렇게 여러번 반복해서 여러가지 스타일로 만들면 도움이 됩니다. 반복해서 코드를 작성하는 거 중요합니다.

그리고 기본이라고 불리는 것들, 자바 언어, 객체지향 설계원칙, 디자인 패턴, 리팩토링, 테스트 작성, TDD 등등은 시간 나는대로 충분히 공부해두세요. 누가 옆에서 설명해달라고 하면 바로 이야기할 수 있을 정도로 핵심을 잘 기억해두시고, 그것을 표현하는 예제까지 만들 수 있으면 좋습니다.

박찬석님의 프로필 이미지
박찬석
질문자

정말 감사합니다.

토비님께서 적어주신 글들을 저한테 도움이 될 수 있도록 곱씹어서, 저의 습관으로 만들 수 있도록 노력하겠습니다.

정말 정성스러운 답글 감사드립니다. 토비님!

개인적으로 토비 님에 대해 느끼는 바는 참 친절하시다는 것입니다.
스프링 책, 스프링 부트 강의를 보고 있으면 보고 있는 사람에게 도움이 되면 좋겠다 라는 게 느껴집니다.
이 질문에도 질문자에게 도움이 되면 좋겠다 라는 마음이 느껴져서 인생후배로 배우는 바가 많습니다.
저도 감사의 마음을 드립니다.

죄송하지만 사랑고백좀 하겠습니다. 사랑합니다 토비님.

토비님의 프로필 이미지
토비
지식공유자

이 질문에 대해 제가 작성했던 답변과 ChatGPT의 답변을 비교해보는 유튜브 영상을 만들었습니다. 라이브로 진행한 것입니다.

https://youtu.be/zhj5TSzBPSE?t=794

좀 더 상세하게 해당 주제에 대한 이야기를 해보려고 했습니다. 참고해보세요.

박찬석님의 프로필 이미지
박찬석
질문자

토비님의 유튜브 영상에 제 글이 나오다니 영광입니디!ㅎㅎㅎㅎ 퇴근 후에 영상 꼭 정독하겠습니다! 감사합니다

박찬석님의 프로필 이미지
박찬석

작성한 질문수

질문하기