자바를 공부할 수 있는 방법과 매체는 정말 다양하다. 책, 유튜브, 인터넷 강의, 학습 기관, 스터디 등 학습 매체는 넘쳐나고 누군가는 학원을 다니고 누군가는 책과 영상으로 독학을 하고 또 누군가는 스터디를 하지만 과연 나는 어떻게 자바를 공부했을까?

이제부터 내 개인적인 경험을 기반으로 한 자바 학습 방법을 소개한다.

스터디를 시작한다.

종종 자신의 실패한 스터디 경험을 근거삼아 스터디를 하지 말라는 이야기를 듣는다. 하지만 내가 5년 넘게 경험하고 실천해왔던 방식의 스터디에 결코 실패는 없었다. 장담하건데, 실패한 스터디는 분명히 '남'에게 의존했을 것이다. 스터디에 회의감이 든다면 남의 참석 여부를 신경쓰고, 남이 하는 발표를 통해 학습하기에 급급하진 않았는지 지난 스터디를 되돌아 볼 필요가 있다.

스터디는 개인주의야

스터디는 철저히 개인주의를 추구해야 한다. 절대로 남에 의해서 또는 남을 위해서도 안된다. 본인에게 필요한 책을 골라 매주 또는 격주로 자신이 습득한 내용을 남에게 설명하는 연습을 할 수 있는 최적의 방법이 스터디다. 4~5명을 상대로 내가 이해한 내용을 남들에게 설명하며, 또 남들이 설명하는 것을 내가 이해한것과 비교하는 과정을 통해 여러 효과를 얻을 수 있지만 그 중에 몇가지만 꼽자면...

  1. 발표 실력 향상
  2. 지식 재점검
  3. 자신감 향상

학습은 예습과 복습의 연속이다. 스터디에서 소규모 그룹을 상대로 꾸준히 발표를 하면 그동안에 머리로 이해했던것을 다시 점검하게 되며 미쳐 깔끔하게 정리하지 못했던 부분을 찾아낼 수 있으며 아무리 고민해도 해결되지 않는 주제가 생길 수 있다. 그런 부분을 스터디에서 공유하며 도움을 얻을 수도 있지만 사실 그 보다는 이미 학습한 지식을 복습하고 전달하며 학습 능력 자체를 증진시켜 나가는것이 중요하다. 따라서 스터디는 '이제는 혼자 준비해서 2~300명 앞에서도 발표할 수 있겠다.'라는 자신감이 생길 때까지 꾸준히 하는 걸 추천한다. (그리고 기회가 된다면 세미나에 발표자로 참석해 보길 권장한다.)

어떤 책으로 스터디를 해야 하는지는 본인에게 달려있다. 어느 책을 보건 크게 중요하지 않다. 어떤 지식을 얻었는지가 중요하다. 자바의 기본 문법도 모르고 프로그래밍 언어가 처음이라면 '헤드 퍼스트 자바'나 '자바의 정석' 또는 '자바의 신'과 같은 입문자를 대상으로 한 서적을 골라 학습하는 것을 추천한다.

Head First Java
개정판! 무엇이 달라졌나!!!1. 자바 5.0(타이거)에 맞춰서 달라진 내용을 전면 수정 보완했습니다. 2. 제네닉과 컬렉션 부분을 자세히 다루는 하나의 장을 추가했습니다. 상상을 초월하는 새로운 접근 방법으로 재미 두배! 실력 두배!이 책은 객체지향 프로그래밍과 자바를 완벽하게 배울 수 있는 책입니다. 두뇌 친화적인 학습이론을 바탕으로 만들어진 이 책은 ...
자바의 정석 기초편
교육현장에서 뒤쳐지는 학생들을 위해 쓰고, 학생들에게 직접 검증받고 호평받은 책. 코딩을 처음 배우는 사람도 자바를 쉽게 배울수 있게 도와준다.
자바의 신 세트
성능 전문가로 널리 알려진 저자가 십수 년의 자바 개발 경험을 바탕으로 현장에서 꼭 필요한 기초지식을 정리한 책이다. 현장 중심으로 자바의 기본서를 다시 정의한 책이다. 독자가 생각하며 학습할 수 있도록 구성하였고 연습문제에 심혈을 기울였다. 23명의 베타리더 및 감수자가 먼저 리뷰하고 의견을 반영하였다. 4년 만의 개정판에서는 Java 8 버전 내용과 J...

개인적으로는 입문서로 '헤드 퍼스트 자바'를 보았고 그 이후에 '지름길로 빠르게 배울 수 있는 자바 프로그래밍' 그리고 '이팩티브 자바'를 보며 자바에 대한 기본 지식을 습득할 수 있었다.

자바 프로그래밍
자바 프로그래밍
이펙티브 자바 Effective Java 3/E
자바 플랫폼 모범 사례 완벽 가이드 - Java 7, 8, 9 대응자바 6 출시 직후 출간된 『이펙티브 자바 2판』 이후로 자바는 커다란 변화를 겪었다. 그래서 졸트상에 빛나는 이 책도 자바 언어와 라이브러리의 최신 기능을 십분 활용하도록 내용 전반을 철저히 다시 썼다. 모던 자바가 여러 패러다임을 지원하기 시작하면서 자바 개발자들에게는 구체적인 모범 사례...

여기서 말하는 기본이란 말그대로 자바의 기본 문법이나 주요 API와 특징을 말한다. 특히 이 글을 작성하는 시점에서 자바의 기본이라면 자바 8을 넘어 자바 11까지의 주요 기능을 학습할 것을 권장한다. 자바 8이 현재 시점에 가장 널리 쓰이고 있는 LTS(Long-Term Support) 버전이지만 자바 11로 넘어가는 추세기 때문이다. 다음 LTS 버전인 자바 17이 나오기 전까지는 시간이 좀 있으니 자바 12 이후의 기능은 다소 미뤄도 괜찮다. 현업에서 자바 17을 도입하기 까지는 아직 시간이 많이 필요하니 그보다 더 이전에 사용하게 될 자바 11이전 기술부터 확실하게 챙기는데 집중하는것이 좋다.

더 자바, Java 8 - 인프런
자바 8에 추가된 기능들은 자바가 제공하는 API는 물론이고 스프링 같은 제 3의 라이브러리 및 프레임워크에서도 널리 사용되고 있습니다. 이 시대의 자바 개발자라면 반드시 알아야 합니다. 이 강의를 통해 쉽고 빠르게 자신의 기술로 만드세요.

자바 기본 기능을 학습했다면 이제는 인텔리J 또는 이클립스와 같은 IDE(Integerated Development Environment, 통합 개발 환경) 그리고 Git과 같은 SCM(Source Code Management, 소스 코드 관리) 도구를 사용해 협업하는 방법 그리고 빌드툴을 사용해 프로젝트를 빌드하는 방법을 학습해야 한다. 현 시점에 가장 많이 쓰이는 툴 기준 (Jetbrains 2020 자바 리포트)으로 IDE는 인텔리J 또는 이클립스, SCM은 Git 그리고 빌드툴로는 메이븐 또는 그래들을 학습해야 하는데 이것들도 사실 스터디를 통해 학습할 때 효과가 좋다. 남들이 발표시 사용하는 IDE 단축키를 물어보거나, 자신이 주로 사용하는 단축키 및 Git 명령어를 공유하면서 익히면 문서를 보며 공부하는 것보다 재미도 있고 훨씬 쉽게 학습할 수 있다.

그 다음은?

자, 여기까지 스터디를 통해 자바 기본을 숙지했고 조금씩 IDE, Git 그리고 빌드툴을 익혀나가고 있다면 실제로 무언가를 만들면서 한 단계 더 나아갈 차례다. 자세한 내용은 곧 "슬기로운 자바 학습 방법 Ep2. DFS 학습 방법"에서 다루겠다.