프로그래밍 언어 문법을 빠르게 배우려면
23년 이전 글/IT 교양

프로그래밍 언어 문법을 빠르게 배우려면

시간을 절약하고 싶은 사람들을 위한 결론

 

  • 내가 새로 접한 개념, 또는 문법, 메서드 사용 방법등을 flash card 형태로 만들고 맞춘횟수, 틀린횟수를 추적하여 해당 내용이 장기기억에 도달했는지 체크한다
  • 망각 곡선을 다들 들어봤을 것이다. 플래시 카드는 한달에 한번 다시 학습하면 오래 기억하기 좋다.
  • 오랜 간격을 두고 학습할 수록, 반복할 수록 기억은 강화된다.
  • 기억한 것을 꺼내는 것 또한 노하우, 검색하기 전에 기억하기 위해 노력하자.

 

 

서문

CSS의 Flexbox 문법이나, Matplotlib의 boxplot 메서드에서 매개변수 순서, 또는 자바스크립트의 익명 함수 문법을 기억하는데 어려움을 겪은 적이 있다면 유용한 챕터.

 

코드를 기억하기 어려운 예시들

  • txt파일을 읽고 명령창에 모든 라인 프린트하기
  • 날짜를 day-month-year 포맷으로 만들기
  • s 또는 season으로 시작하는 단어와 일치하는 정규식
  •  

검색하면 되는 것 아니냐는 생각이 들 수도 있다.  이러한 방법도 틀린 것은 아니지만 좀 더 효율을 위해서 문법과 규칙을 기억해야 한다는 것을 말하고자 한다.

 

  • 관련 내용을 미리 알고 있는 것은 코드를 효율적으로 읽고 이해하는데 상당한 영향을 미침
  • 개념, 자료구조, 문법을 더 많이 알수록 두뇌는 더 많은 코드를 분리하고 기억하고 처리할 수 있음

 

이외에 검색보다 기억하는 것은 좋은 사례가 더 있는데 그것은 바로

검색을 핑계로 다른 행동을 하는 것을 예방한다(카카오톡, 메일확인, sns확인, 유튜브 등등..)

이글을 적는 필자도 구글과 스택오버플로우의 애용자지만 코딩음악 들으려고 유튭을 키다가 썸네일에 낚이는게 부지기수다. 근데 이게 과연 나만 그런 걸까? 신기하게도 이런 사람들에 대한 연구가 이미 존재한다.

 

Resumption Strategies for Interrupted Programming Tasks(링크)

 

위 연구 결과에 따르면 

  • 코딩 작성 도중 중단이 되면 다시 그 업무로 돌아가는데 15분이 걸리며,
  • 메서드 수정 작업 도중 중단이 되고 1분 이내에 하던 일을 다시 시작하는 경우는 10% 밖에 안된다.
  • 검색하고 코드로 돌아오면 원래 작업하던 내용을 잊어버리기도 해서, 다시 코드를 찾아헤매게 된다

 

코드 기억 방법을 찾는 것은, 망각에 대해 이해하는 것 부터 시작이다

 

출처 : http://www.skyschool.kr/2010/web/system.asp?str_menu=05

 

다음과 같은 주기로 망각이 일어난다. 이는 자연스러운 현상이고, 동시에 초기에는 많은 것을  기억하고 있다는 것 또한 포함하므로, 다시한번 빠르게 업무를 끝내는 것이 여러모로 작업 효율을 극대화 하는 것임을 알 수 있다.

망각 곡선에 대한 내용은 최초 에빙하우스가 개발해낸 개념이며, 15년도에 네덜란드 암스테르담 대학교의 야프 뮈러 교수에 의해 이 공식이 여전히 맞다는 것을  다시 한번 증명한 사례도 있다.

 

Replication and Analysis of Ebbinghaus' Forgetting Curve(링크)

 

위 연구내용을 요약하자면

당시의 연구결과와 거의 유사하게 나온 망각 곡선을 확인할 수 있다(출처:https://www.researchgate.net/publication/281824405_Replication_and_Analysis_of_Ebbinghaus%27_Forgetting_Curve)

 

한 과목에 대해 70시간을 공부하고, 20분 뒤, 1시간 뒤, 9시간 뒤, 하루, 이틀, 31일 후 반복 학습하여 측정한 결과 에빙하우스의 망각곡선을 재현해 낼 수 있었다는게 핵심 요약.(약간의 편차는 존재)

 

이제 기억하는 법에 대해 알아볼 차례

 

기억을 강화하는 테크닉으로 다음을 기억하자

  1. 학습했던 것을 기억하기 위한 retrieval(인출)
  2. 기존 기억에 새로운 지식을 연결하는 elaboration(정교화)
  3. 기억하고자 하는 능동적인 마음상태

 

인출 강도

구구단 같은 내용은 잊을래야 잊을 수 없고, 3초안에 모두 대답할 수 있을 것이다. 그러나 가끔, 지나가다 들어본 적 있는 노래의 제목이 기억나지 않는 경험을 했다면, 이것은 인출 강도에 대한 문제일 수 있다

누군가 물어봤을 때, 정답이 머릿속에서만 맴돌고, 입밖으로 나오지 않는 다면 이 역시 인출 강도에 대한 문제로, 우리는 학습한 내용에 대해서 내가 기억하고 있는지 점검하고, 꺼내어 보는 연습이 필요하다

다행히 프로그래머는 직접 코드를 써보고 컴퓨터에게 직접 맞는지 확인하는 단계를 큰 비용없이 해볼 수 있으리라 생각한다. 따라서 학습한 내용은 반드시 코드로 직접 해보는 연습이 필요하다 볼 수 있다.

 

정교화

정보에 대해 생각하는 과정을 정교화라고 하는데, 결국 능동적으로, 내가 배우고 싶고 배워야 하는 마음을 가지고 학습에 임할 때 정교화가 효과를 발휘한다고 볼 수 있다

두뇌에서는 다른기억과 추가되는 기억, 그리고 사실들의 네트워크로 내용을 학습하고 기억해 나간다. 이러한 관계가 조직된 방식을 스키마 혹은 스키마타라고 부른다고 한다. (이래서 관계형 데이터 베이스에도 스키마를 설정하는건가..)

이 기억하는 네트워크인 스키마에 따라서 사람들마다 기억하는 내용이 변질되는 경우가 있는데 상당히 흥미롭다.

궁금한 사람은 A study in Experimental and Social Psychology(Cambridge University Press, 1932) 연구를 살펴보면 좋을 것이다.

따라서 이 정교화 방법을 통해 새로운 기억을 저장할 때, 기존의 기억과의 네트워크를 만드는 것이 중요하고, 연관된게 많을수록 기억의 인출이 유리해지며, 스키마에 맞춰서 장기기억으로 전환해 오랫동안 기억하고 잘 꺼내어 쓸 수 있다.

 

결론

IT에 입문하면서도 느꼈지만, 처음에는 정말 까마득했고 배워나가야할게 산더미 같아 언제 이걸 다 공부해야 하나 느끼던 요소들이, 계속해서 공부에 몰두하며 알아가다보니 어느정도 패턴이 보이기도 하고, 이전의 기억들이 점점 도움이 되어서 성장하는 부분이 느껴진다.

특히 먼저 코드로 접했던 부분을 이론으로 알게 되었을 때, 이론으로 접했던 부분을 코드로 직접 겪어 볼 때 머릿속이 환해지는 경험은, 어쩌면 위 방식에 따른, 장기 기억으로 전환되는 과정이 아닐까 하고 생각해본다.

빠르게 문법을 익힌다는 것은, 완전 특별한 왕도는 없지만 위의 검증된 과정을 거친다면 평균 이상의 속도로 내가 기억하고자 하는 것을 기억할 수 있을 것이고, 업무의 효율을 올릴 수 있을 것이다.

반응형