My/Careerlog

[인프런] 프로그래밍, 어떻게 공부할 것인가? - 김창준

리버김 2023. 12. 19.
지난 인프런 세일 때 김창준님의 강의를 구매했었다. 학교도 종강을 했고 이번 연말 휴가 때 듣기 좋을 것 같았다.(계절학기 시작이 얼마 안남은 건 함정 ^^;) 내가 효율적으로 공부하고 있지 못했던 부분이 있었다면 많이 배우는 기회가 되었으면 좋겠다. 총 3시간 38분 분량이지만 3개월의 수강 기한이 있다. 

 

 

 

프로그래밍, 어떻게 공부할 것인가 강의 - 인프런

프로그래밍, 그냥 시간만 쏟아 부으면 공부가 될까? 좀 더 과학적이고 효과적인 방법은 없을까?, 🔔 강의 오픈 기념 Q&A 세션을 진행합니다!2023년 11월 15일 (수) 19:00~21:00, 인프랩 오피스프로그래

www.inflearn.com

 

전문성에 대한 미신들 1

  • 실험: 고정 사고관을 가진 사람들에게는 IQ/시험 점수의 변화가 없었지만 성장 사고관을 가진 사람들은 IQ/시험 점수가 늘어났다.
  • 능력 계발은 후천적인 요소가 굉장히 중요하다.
  • 경력 기간과 실력에는 유의미한 상관관계가 없다.
  • 공부에도 왕도가 있다.

 

전문성에 대한 미신들 2

  • 자신감 있으면 잘 알고 있을 것이다 - X
  • 전문가는 자신이 어떻게 하는지 설명할 수 있다 - X: 암묵지가 많은 영향을 미친다
  • 전문가는 자신의 설명 대로 행동한다 - X
  • 전문가는 잘 가르친다 - X: 오히려 관리법을 배우는 것이 학생들의 성과/성적을 높여 준다.
  • 이해가 잘 되면 기억에 오래 남는다 - X:

 

전문성에 대한 과학적 근거들

  • 높은 수준의 실력은 그냥 한다고 해서 획득되는 것이 아니라, 개선하려는 의도적인 노력이 필요하다. (걷는 것을 수십 년동안 하고 있지만 실력이 향상되지는 않는다.)
  • 전문성을 예측한 최고의 요인: 혼자 연습한 시간(1만 시간의 법칙 = 10년, 만약 매일 프로그래밍을 3시간씩 연습하면 9-10년 안에는 전문가가 될 수 있다. 매일 2시간씩 연습하면 13-14년 안에 전문가가 될 수 있다.)
  • 주의점: 업무 != 연습
  • 모든 활동을 세 가지로 분류할 수 있다: work, play, deliberate practice
  • 일반적 연습 != 의도적 수련: 의도적 수련이란 약한 부분을 키우기 위해 타겟팅하여 계획을 가지고 연습하는 것이다.
  • 의도적 수련의 네 가지 조건:
    • 잘 정의된 작업
    • 적절한 난이도
    • 정보가 풍부하고 때맞는 피드백
    • 반복과 실수 교정의 기회
  • 숙제: 나의 약점을 찾아 의도적 수련하기
    • CS
    • 알고리즘
    • 백엔드/인프라 지식
    • ...

 

의도적 수련의 조건 : 새로운 프로그래밍 언어 배우기를 중심으로 1

  • '완료했다'의 기준.
  • 첫 번째 요건: 잘 정의된 작업이 있어야 한다.
    • 디자인 패턴 열심히 써 봐야지! X -> 일주일 동안 짰던 코드를 검토하며 이번 주의 패턴을 최소 세 군데 이상 적용하겠다. O
    • 프로그래밍 언어 학습의 달인의 다름 점: 만들고자 하는 목표 프로그램이 있다.
  • 두 번째 요건: 적절한 난이도
    • Cognitive Load Theory: 새 언어로 새 문제를 풀지 마라
    • 너무 쉽다면 스스로 난이도를 증가시킬 줄 알아야

 

의도적 수련의 조건 : 새로운 프로그래밍 언어 배우기를 중심으로 2

  • 피드백은 구체적이고 빈도가 일정 정도 이상 높아야 한다.
  • 결과보다는 과정에 대한 피드백을 받는 것이 더 나은 결과를 만들었다.
  • 프로그래밍 언어 학습을 잘 하는 사람은 '여러 경로'로 피드백을 받았다: 컴파일러, 단위 테스트, 코드 리뷰, 동료, 커뮤니티
  • 로버트 플로이드: 어려운 문제를 푼 이후에 다시 푼다. 해법이 희망하는 것만큼 명료하고 직접적일 때까지 반복한다. 그 다음 비슷한 문제들을 공략할 일반적인 룰을 찾는다.
  • 실수로부터 배워라: 완벽한 도자기 하나를 만들고자 애쓰기 보다는 많은 도자기를 만들어라.
  • 같은 걸 다르게 해 보라, 조금씩 더 개선해 보라, 실수를 많이 하라

 

교육 심리학의 최근 연구를 프로그래밍 학습에 적용하기

  • 효과적인 학습법: 연습 시험 치기, 분산 연습(한 번에 많이 X, 반복적으로 여러 번 연습 O. Anki 활용), 방금 읽은 부분이 왜 그런지 자주 자문해보기, 섞어서 공부하기, 새 정보가 이미 아는 것과 어떻게 관련있는지 설명해보기

 

학습에 효과적인 프로그래밍 순서

  • 지식을 순차적으로 학습하지 말고, 모든 스텝을 전체적인 관점에서 한 번에 얕게라도 다룬 후 반복 학습을 통해 깊이 있게 알아가는 것이 좋다.
  • 공부를 하기 전에 미리 공부 전략을 짜서 의도적 수련을 하자.

댓글