프로그래머 성장 과정 대한 정리

 Date: 2022-01-31

어느날, Java를 프로그래밍 주 언어로 사용하지만 Java에 대한 지식이 부족하다는 생각이 들었습니다. 개발에 필요한 지식만 익히지 말고 이번에는 제대로 기본기를 잡아보자! 하는 결심이 들어서 본격적으로 Java 공부를 다시 시작하게 되었습니다. Java 기본기 공부를 하기 위해 『Java의 정석』 책과 인프런의 『만들어 가면서 배우는 JAVA 플레이그라운드』 강의를 먼저 학습하기로 했습니다. 막상 강의를 들으려는데, 초반 내용은 개발환경을 세팅하는 부분이라 ‘그냥 넘어갈까?’하는 마음이 들었습니다. 그런데 프로그래밍 학습에 대한 어려움과 극복 방법, 연습에 대한 정리 내용이 있어서 듣다가 정말 중요하고 좋은 내용을 전해주셔서 글로 정리하게 되었습니다.

프로그래밍 학습이 어려운 이유

  • 개발을 하기 시작한 초반에는 숙련도가 낮아도 자심감이 어느정도 있지만, 숙련도가 높아짐에도 어느 시점에서 자신감이 많이 떨어지는 시기가 생긴다.
  • 개발을 하기 시작한 초반에는 학습할 내용도 많고, 학습 자원도 매우 많지만 초급에서 중급 단계로 넘어가면서 학습할 자원들 찾기 어렵다고 느낀다.
  • 숙련도가 높아지기 위해 학습해야 할 주제의 범위가 점점 많아진다.

극복하는 방법

  1. Hand-Holding Honeymoon
    • 다양한 초보 강의를 검토한 후 하나를 선택해서 학습
    • 반복해서 연습하기
  2. Cliff of Confusion
    • 같이 학습할 동료를 구하기
    • 다른 사람의 코드 읽기
    • 지속적으로 작은 코드를 시작하고 빌드하면서 디버깅에 대한 두려움을 제거하기 → 성취감 Up, 자신감 Up
  3. Desert of Despair
    • 하나의 목표를 설정한 후 목표에 집중
    • 수박 겉핦기 식의 다양한 지식 습득이 아니라 한 분야에 대한 깊이 있는 지식 습득
    • 구체적인 목표 의식을 가지고 의식적인 연습을 함으로써 시간 낭비를 최소화
  4. Upswing of Awesome
    • Best practices를 찾아 연습하고, 지식의 빈틈을 보완
    • 설계, 아키텍처, 배포와 같이 좋은 개발자가 되기 위한 연습
    • 이 단계를 극복하기 위한 핵심은 피드백을 받는 것 → 코칭을 해줄 멘토나 동료를 찾는 것이 중요!

프로그래밍 학습에서 취업까지 현실적인 조언

  1. 주변 정리 및 우선순위 조정이 필요하다. 방해받지 않고 프로그래밍에 집중할 수 있어야 한다.
  2. 프로그래머로 취업하기 위한 학습 기간이 필요하다(최소 1년). 그렇지 않으면 회사 일과 학습을 병행하는 것이 매우 힘들다.
  3. 개발이 처음이라면 온라인 교육 컨텐츠 보다는 단기 속성 학원을 추천한다. 하지만 학원에서 배운다고 프로그래밍적 사고를 제대로 갖추기는 어렵다. 무엇을 어떻게 학습할 것인지에 대한 감을 잡는 것이 필요하다.
  4. 같이 학습할 사람을 만드는 것이 가장 중요하다. 매일 일정한 시간, 장소로 출퇴근 하면서 꾸준하게 공부한다.
  5. 학습하면서 다음 단계로 무엇을 해야할지 모를 때, 포기하고 싶을 때에는 주변 강사님, 선배 개발자에게 조언을 구할 필요가 있다. 또, 가끔씩 회사에 지원해보면서 현재 나의 상태와 부족한 점을 파악하면서 재조정 해본다.

프로그래밍 학습 방식

  1. 기초 지식부터 쌓은 후 무엇인가를 만들어 가는 방식
  2. 무엇인가를 만들어 가면서 관련된 지식을 학습해 가는 방식

- 자신이 어떤 방식으로 학습할 때 더 효과적으로 학습하는 성향인지 찾아야 한다.
- 어떤 방식으로 학습할 때 스트레스를 덜 받고 즐거움을 느끼는지 찾아야 한다.

프로그래밍 연습

  • 무엇인가 한 가지를 끝낸 후, 바로 다음 단계로 넘어가기 보다는 어색하거나, 이해되지 않거나, 궁금한 내용을 정리하는 시간을 갖자
  • 반복해서 연습하자
  • 과정 속에서 배운 부분이 있으면 그날 그날 내용을 정리하는 습관을 갖자
  • 호기심을 가지고 다양한 시도를 해보자

Reference

자바의 정석 강의 만들어 가면서 배우는 JAVA 플레이그라운드 Why Learning to Code is So Damn Hard