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

주아아빠님의 프로필 이미지
주아아빠

작성한 질문수

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

스프링, 스프링부트,배치, JPA, MVC, 디자인 패턴 등등 어떻게 공부 해야 할지 조언 부탁드립니다

해결된 질문

작성

·

892

·

수정됨

6

안녕하세요 토비님

강의 잘 들었습니다~

 

 

오늘 새벽에 토비님 유투브를 일부 보다 보니

오라클 레퍼런스 사이트가 잘되어 있으니

보시면 웬만한 책보다 잘되있고 유용하다고 말씀하시더라구요

 

 

토비님이 선배 개발자 로서

학생분들, 후배 개발자 동료 분들이

스프링, 스프링부트,배치, JPA, MVC, 디자인 패턴 등등

어떻게 공부 해야 할지 추천 조언 부탁 드립니다

 

 

좋은 유튜브나, 강의사이트, 블로그, 서적 등이

공부하고 참고 할 수 있는 부분들이요

부끄럽지 않은 개발자가 되고 싶고

지금 보다 더 성장하고 싶습니다

( 요즘 올리시는 유튜브에 타임어택 잘 보고 있습니다 )

 

 

-.토비님을 존경하고 사랑하는 후배 개발자가..

 

 

#spring-boot

#spring

#스프링

#스프링부트

#JPA

#MVC

#추천

#공부

#방법

#조언

 

답변 1

21

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

"스프링, 스프링부트,배치, JPA, MVC, 디자인 패턴"을 어떻게 잘 공부하느냐하는 비법이나 효과적인 책, 강의, 자료 등을 딱 골라서 추천드릴 수는 없습니다. 어떤 절대적인 만능 공부법은 없고, 이 분야를 잘 하는 분 100명에게 물어보시면 다 100가지 다른 이야기를 들으실 수 있습니다. 오랜 시간 본인이 경험해온 바가 다르기 때문이고 사실 그걸 잘 기억해서 설명하기도 어렵습니다. 효과적인 공부방법이 무엇인지를 계속 정리하고 연구하면서 공부하고 개발하는 분은 없거든요.

여기서는 그냥 제가 공부하는 방법을 알려드리지요.

일단 잘은 모르지만 이건 꼭 해야해라고 남들이 이야기하는 주제가 나오면 일단 "공식" 문서를 먼저 찾아서 그 기술이 무엇인지를 찾아가면서 읽어봅니다. 대체로 기술을 만들 개발자들은 이 기술이 뭐다라는 설명을 하려고 꽤 노력을 합니다. 하지만 그거 읽는다고 느낌이 바로 딱 오지는 않겠죠. 하지만 일단 문서와 간단한 튜토리얼, 예제 등을 보면서 자신만의 기술에 대한 이야기를 만드는 것이 필요합니다. 스프링은 말이야.. 이런이런 것이야라고 누군가에게 얘기해줄 수 있게 일단 머리속에 정리된 내용을 만드는 것이죠. 특징은 뭐고, 장점은 뭐고, 어떤 경우에 쓰면 좋다. 이런 식으로 핵심을 담은 자신만의 설명을 만드세요.

물론 처음에 이렇게 혼자 공부해서 정리한 설명은 많이 틀립니다. 핵심을 놓치기도 하고 블로그 등을 뒤지다가 엉뚱한 소개를 만나서 그거라고 오해할 수도 있죠. 하지만 상관없습니다. 자신만의 기술을 설명하는 이야기를 만들어두었다면, 그 다음엔 그 분야에서 유명한 서적, 강의, 유튜브 영상, 블로그 등을 닥치는대로 보면서 자기가 기존에 정리해두었던 것을 계속 업데이트하는 겁니다. 어느 순간, 아 이게 핵심이었구나. 이게 중요한 것이구나라는 발견을 하는 순간이 오게 되는데, 그게 누가 이거다라고 설명해주는 것을 들어서가 아니라, 많은 자료를 보고, 또 많은 예제를 만들면서 스스로 느끼게 되는게 중요합니다.

이렇게 자기만의 기술에 대한 이해와 그걸 설명하는 언어를 만들어내는 건, 중심을 잡고 기술을 어떻게 활용하는지에 대한 가이드 역할을 해줄 수 있습니다. 물론 수많은 디테일은 검색도 하고 책도 찾아보고 하면서 계속 공부하셔야 합니다. 스프링 가이드 문서를 다 읽어도 100% 기억을 못하겠죠. 이해 안 되는게 더 많을 겁니다. 그래도 보세요. 그리고 어떤 얘기가 어디에 나왔었다라는 걸 기억해두시면 좋습니다.

이건 꼭 기억해야하는데 싶은게 있으면 메모를 하세요. 기술마다 자기만의 기억노트 같은 걸 하나 만들어서, 이건 정말 중요한데 나중에 까먹지 않게 꼭 적어두겠다 싶은 걸 간략하게 노트를 합니다. 길게 쓰면 결국 지쳐서 시작만 하다 맙니다. 그래서 최대한 간단하게 기억하고 싶은 내용을 정리하고, 각종 기술 팁 등에 관한 링크, 레퍼런스를 만들어두세요.

그리고 시간이 지나서 그걸 한번씩 쭉 봅니다. 그러면 내가 이건 정말 좋은 것 같은데라고 메모했던 건데 실무에서 한번도 안 쓴게 보일 거에요. 그러면 그날은 그걸 조지는 날입니다. 링크해둔 자료를 보고, 관련된 건 다 찾아서 살펴보고, SNS 등에다 뜬금없이 누구 이거 써보신 분있나요 하고 질문도 날리고, 그리고 직접 코드도 만들어봅니다. 그리고 아하 이렇게 쓰는 기술이고, 이럴 때 사용하면 좋겠네, 그런데 이런 점은 주의해야겠다 하는 내용을 다시 정리하고 문서로 남깁니다. 그걸 자기의 툴박스에 넣어두고, 기회가 되면 이때다하고 그걸 써보는 거죠. 팀원들에게 한번 쓱 보여주면서 다음엔 이런 작업은 이걸 쓰면 좋지 않겠냐하고 꼬시는 겁니다. 그러다가 실무에 적용해보면 예상하지 못했던 문제도 만나고, 삽질도 하고, 이 기술이 아닌가봐하며 좌절할 수도 있습니다. 아니면 대박이라고 생각할 수도 있죠.

중요한 건 이런 경험이 쌓이면서 기술을 보는 눈이 생기고, 이걸 적용할 때 주의해야할, 더 살펴봐야할 분야가 뭔지도 빠르게 떠올릴 수 있습니다. 가끔 내가 그 기술 팬이다라고 가정을 하고 그 기술도입에 반대하는 사람과 한번 치열하게 논쟁도 해보세요. 그러면 배울게 많습니다. 중요한 건 정말 팬이 되는게 아니라, 팬이라고 생각하고 변호를 해보는 거죠. 그리고 그걸 지지하는 논리를 떠올리려고 애를 쓰다보면 또 생각하지 못했던 것들이 등장할 겁니다. 그러면 다음에 기술에 관해서 공부할 때 그 부분을 자연스럽게 한번 검토해볼 가능성이 생기는 거죠.

특정 기술을 하다보면, 관련된 기반 지식을 더 알아야할 때가 나옵니다. 그러면 역시 계획을 세우고 공부하세요. 그게 뭐냐고요? 그건 스스로 발견하셔야 합니다. 이미 수많은 책과 강의와 자료에서 그걸 미리 경험한 사람들이 이건 필요하다, 아니다라고 이야기하는 부분이 나옵니다. 인용하거나 언급하는 책이 있고, 자세한 설명은 못하지만 이것도 아셔야합니다라고 슬쩍 넘어가는 것도 있죠. 그럼 놓치지 말고 따라가서 한번이라도 봅니다. 한 시간만 투자하면 많은 내용을 검색으로 찾아볼 수 있어요.

마지막으로 중요한 건 학습한 기술을 미친 듯이 코딩을 하셔야 합니다. 저는 새로운 기술을 하나 처음 접하고 이거 써봐야겠다 싶으면, 가장 간단한 튜토리얼을 하나 따라해보고, 최소한 10번 이상을 그걸 다시 코딩을 합니다. 그리면서 그 기술을 이용하는 코드가 어떻게 만들어지는지 느낌을 얻으려고 합니다. Hello World 수준이라도 반복을 하세요. 코드를 많이 작성하고, 그리고 코드를 더 빨리 작성하고, 더 효과적으로 작성하는 모든 방법을 계속 찾으세요. 코드 타이핑을 지원하는 타이핑 프로그램으로 해서 자바 코드 작성 300타 이상 나오게 연습하세요. 코딩하는데 자꾸 오타나는 거, 이거 큰 문제입니다. 생산성 떨어지고, 집중도 안됩니다. 그리고 IDE의 각종 단축키와 자동완성, 플러그인, 지원툴 이름이 떠도는 거 한번씩 다 시도해보고, 그 중에서 이건 내가 마스터해서 계속 써야겠다 싶은 걸 찾아서 익히세요. 아침에 일찍 출근해서 오늘은 인텔리J 콤보 단축키를 조지겠다. 이런 마음으로 10분 연습하면.. 이후에 10시간을 절약할 수도 있습니다.

유튭이나 강의에 코딩 영상 많이 나오는데, 잘하는 개발자들이 코딩할 때 어떻게 하는지 유심히 보세요. 배울게 아주 많습니다. 그 중에서 맘에 드는 건 따라서 해봅니다. 라이브 코딩은 말도 해야해서 보통 그 개발자의 평소 개발할 때 코딩보다 매우 느리고, 오타도 많이 냅니다. 그러니 영상에 나오는 코딩은 똑같은 걸 따라서 해본다 그러면 더 빨리 코드가 나오게 해야 합니다. 이렇게 기술을 적용할 때 효과적이게 만드는 기법을 잘 익히세요.

그리고, 한 기술을 오래 쓰다보면 충분히 잘 하는 것 같다 싶을 때가 있는데, 그때 방심하지 마시고, 그 기술의 새로운 버전에 나온 기능을 살펴보고, 관련된 블로그 글 새로 나온 걸 찾아보고 그러다보면, 내가 놓치고 못 쓰고 있거나 잘못 사용하는 것을 발견하게 됩니다. 꾸준히 그 작업을 해야해요. 저는 스프링 20년을 썼지만 지금도 보면 별로 관심을 두지 않았던, 하지만 아주 괜찮은 것들을 발견합니다.

아무튼 수동으로 학습만 하면 절대 안되고, 그걸 가능한 실무에 사용해보고, 여건이 안 되면 개인적으로 코딩을 해야합니다. 저는 40대까지 연간 10만 라인 이상 코딩을 했습니다. 최근 들어서 업무 패턴이 달라지면서 좀 양이 줄기는 했는데, 어쨌든 가능한 많이 작성하려고 합니다. 그리고 기존에 만들었던 코드를 스스로 리뷰하면서 다음엔 이렇게 해봐야겠다라는 전략을 세웁니다. 그리고 자꾸 도전해보는 거죠.

저는 "스프링, 스프링부트,배치, JPA, MVC, 디자인 패턴"에 대해서 이 방식으로 꾸준히 공부하고, 연습하고, 적용하고, 분석하고, 개선하는 작업을 해왔습니다. 그걸 해보세요라고 말씀드릴 것 밖에 없네요.

이렇게 질문하시는 것 좋습니다. 기회가 되면, 너무 부담을 주지 않는 선에서 자꾸 물어보시고, 답을 들으시면 그 중에서 한 두개라도 시도를 해보세요.

주아아빠님의 프로필 이미지
주아아빠
질문자

토비님 눈물 날 거 같습니다

진심 어린 답글 너무 감사드립니다

고맙습니다 수고하세요~

개발하다가 고수들은 어떻게 생각할까 구현 할까 하는 생각이 요즘 많이 듭니다

내가 작성하는 이 코드가 최선일까 다른 좋은 방법이 있진 않을까

토비님 부담이 되지 않는 선에서 종종 질문 드리겠습니다

건강하고 행복하세요~

주아아빠님의 프로필 이미지
주아아빠

작성한 질문수

질문하기