자바 웹 개발자 로드맵 (자바지기)


약 한 달이 넘게 개발 공부를 등한시 함에 따라 위기감을 다시 느끼고 의식적 학습과 연습을 위해서 다시금 동기부여를 받았다.

그리고 그 동기부여에 불을 붙여주신 자바지기 박재성님의 유튜브 강의(링크는 문서 하단)와 한 블로거가 정리한 요약본을 남겨두려 한다.


커뮤니티로 가자

커뮤니티로 가자. 온라인활동도 좋지만 오프라인 활동을 해야 더 큰 도움이 된다.

내 실력이 보잘 것 없어서, 주눅이 들 수 있겠지만 알을 깨고 나와야 더 큰 세상을 볼 수 있다. 나보다 더 잘난 사람이 많은들 어떠한가. 그들을 보며 배우고 피드백을 받을 수 있는 좋은 기회


프로그래밍을 배우는 것이 어려운 이유

프로그래밍 입문 단계에서 초반에 자신감이 늘었다가, 이후에는 하락한다. 그리고 일정 레벨 이상 도달 할 경우 자신감이 급부상 하는 것을 느낄 수 있을것이다.

  • 자신감과 숙련도.
    • 책을 보고 따라하기까지는 쉽다.

    • 그러나 실제로 개발 할 때는 자신감이 급 하락한다.

    • 위 단계가 생각보다 길어 많은 사람들이 여기서 더 학습하기를 포기하거나 아예 포기하게 된다.

    • 그러나 확신한다. 지루한 연습과 의식적 연습을 통해 일정 시점에 도달하면 프로그래밍에 재미를 느끼고 자신감이 붙게 될 것이다.


각 레벨 별 알아야 할 지식의 범위.

  • 초보에서 중수로 넘어가는 시점에서 알아야 할 지식의 범위가 폭발적으로 늘어난다.
  • 4년간 기초를 쌓았던 전공자와 달리 기초가 없는(공부를 안한 나..) 전공자 혹은 비전공자는 이 때 큰 벽을 느낀다.


각 단계 별 학습 방법.

  • 1단계 : 다양한 초보강의를 검토한 후 하나를 선택해 학습. 이 때는 하나를 선택해 반복하는 것이 여러 강의를 듣는 것 보다 효과가 좋다.

  • 2단계 : 같이 학습할 동료를 찾자. 다른 사람의 코드를 읽자. 작은 코드라도 빌드하면서 디버깅에 대한 두려움을 제거하자.

  • 3단계 : 하나의 목표에 집중. 자바 백엔드 개발자 에 집중하자.

  • 4단계 : Best Practices를 찾아 연습. 이 단계를 극복하기 위한 핵심은 피드백을 받는게 중요하다. 코칭을 해줄 멘토나 동료를 찾는 것이 핵심.


Q&A

  • 시간이 얼마나 걸릴까.
    • 직장을 다니는 중이라면 2년 정도 걸릴 것 같다. 다만 누군가 로드맵을 제시하고 피드백을 줄 수 있는 사람이 있다면 기간을 더 줄일 수 있다.
  • 풀스택 개발자가 되어야하나.
    • 초반에는 풀스택을 지향한다. 개발 전반에 대해 설계 등의 인사이트를 기를 수 있기 때문이다. (이슈의 발생이 어디서 생겼는지, 문제 해결을 위해 어떤 부분이 보완되어야 하는지 등)

    • 하지만 그 와중에 본인만의 무기를 가지고 있어야 할 것이다.(백엔드 웹)

  • 지속적으로 열정을 끌어내는 방법은?
    • 항상 프로그래밍 책만 보는게 아니다. 자바지기도 천재가 아닌데다 스터디 할 때 지치고 중간에 멈춘 경우도 허다하다. 단 이 때에 왜 실패했는지 피드백이 중요!

    • 진정한 성장은 회사의 프로젝트 참여와 무관 하다. 물론 회사만의 업무로 어느정도 까지는 성장 할 수 있겠지만(초심자의 상승) 따로 분명한 개인 학습 시간이 뒷받침 이 되어주어야 한다.

    • 현재가 편하기 때문에 거기에 머무르는 경향이 많다. 불편한 걸 해야 성장 하는데 그러질 못한다. 익숙하지 못한 패턴을 더욱 더 연습해야 한다.



현재 역량에 깊이를 더하는 방법

  • 이펙티브 자바
    • 더 나은 자바 개발자가 되기 위한 필독서.
  • 토비의 스프링
    • 1장이라도 반드시.
  • 자바 ORM 표준 JPA 프로그래밍.

객체지향, 테스트, 리팩토링을 통한 Clean code

  • 켄트백의 TDD
    • TDD를 못하더라도 단위테스트라도 작성해보자.
  • 리팩토링
    • 처음부터 디자인패턴을 공부하지 말 것(자바지기도 1년차에 무턱대고 디자인패턴을 공부했다가 멘붕)
    • 쓰레기 코드에 단위테스트를 적용 후, 리팩토링을 진행하자.
    • 디자인 패턴을 공부해도 당장 어디에 쓸지 모르는 경우가 많다.


  • Clean Code
    • 유지보수 하기 쉬운 코드를 작성하는 지침들.
    • 내가 5년, 10년 쓸 코드라는 애정을 가져야만 한다.
  • 빌드, 배포 운영
    • 성공으로 이끄는 팀 개발 기술
    • 리눅스 커맨드라인 완벽 학습.
    • 그림으로 배우는 HTTP Network
    • 성공과 실패를 결정하는 1%의 네트워크 원리
    • 그림으로 공부하는 IT 인프라 구조
    • 자신의 스타일에 맞는 책을 찾는 것도 학습의 시작.

어떻게 학습 할 것인가?

  • 프로그래밍 학습은 악기 연주 혹은 운동 연습과 같은 방식으로 접근해야 한다.
    • 항상 짜릿하게 공부할 수 는 없다.
    • 즉, 운동처럼 재미있으려면 수많은 지루한 연습 이 있어야만 한다.
    • 회사에서 즐겁게 개발하기 위해서는 많은 지루한 학습 시간이 바탕 되어야만 한다.


  • 의식적인 연습이 필요하다.
    • 내가 불편하다고 생각하는 그 단계를 연습하는 것
    • 혼자서는 이런 편안함을 깨기가 어렵다. 함께 하는것이 좋다.

어떻게 학습을 지속 할 것인가?

  • 우리는 최소 8시간은 회사에서 일해야 한다.
  • 학습에 집중 할 수 있는 환경 조성(1~2년?)
  • 술자리 참여하지 않기
  • 취미 활동 끊기.
  • 꾸준히 운동하기.
  • 기본이 부족한 우리가 시간을 투자해야 한다.

의식적인 연습은 지루하고 재미없다.

  • 하지만 반드시 필요하다.
  • 스스로 동기부여하고 스스로 인내하는 연습이 필요하다.
  • 주변사람이 아닌 자기 자신에게 집중
  • 삶을 훌륭하게 가꾸어주는 것은 깊은 몰입 > 행복감

더 많은 사람이 자신의 일을 사랑하고 일 속에서 몰입 경험을 함으로써 행복한 삶을 산다.

디자인패턴 VS 리팩토링?

  • 리팩토링을 끊임없이 하다가 디자인 패턴을 공부하게 되면 더 큰 깨달음을 얻지만, 반대로 하면 스트레스만 늘 수도 있다.(자바지기 경험담)
  • 새로운 친구들의 역량을 흡수하고 상향 평준하를 위해 더 노력하자.

회사에서 어떻게 열의를 가질까.

  • 회사에서의 문제를 내가 학습한 내용을 바탕으로 해결 한다면 열의가 생기고 더욱 행복감을 얻을 것.

리팩토링 노하우

  • 글쓰기를 잘하는 것과 비슷하다. 1차적으로는 좋은 글을 많이 보듯이 좋은 코드를 많이 보자
  • 지루하겠지만 똑같은 코드를 반복적으로 개발해보자. 단, 설계를 계속해서 변경해보자.
  • 그러려면 그 밑바탕에 테스트 코드가 있어야 한다.
  • 리팩토링은 결과는 같은데 코드가 다른것이다. 즉, 테스트코드가 받침이 되어야 한다.

참고 및 출처

  • https://www.youtube.com/watch?v=mFYAX5s4I7k&t=22s
  • https://github.com/slipp/jwp-book (학습 로드맵)