프로그래머가 되기 위해 정말 많은 사람이 도전하지만,
실제로 되지 못한 경우도 많다.
프로그래밍 학습 도전에 실패하는 이유는, '학습해야 할 방대한 사전 지식'이다.
내가 개발할 웹앱이 실제로 굉장히 간단한 형태이더라도
그 안에서 사용되는 기술 요소들을 온전히 이해하고 프로그래밍한다는 것은
굉장히 방대한 양의 사전 지식을 필요로 하기 때문이다.
어린 아이가 처음 한글을 배운 뒤 바로 소설을 쓰지 못한다.
소설을 쓰기 위해서는 글을 읽고 쓰는 기술 말고도,
직간접적 경험, 지식, 세상 돌아가는 이치 등을 파악해야 하기 때문이다.
이처럼 HTML, CSS, JS를 배웠다고 해서 바로 웹앱을 만들 수 있는 것이 아니다.
더 많은 것을 배워야 한다.
우리가 학교에 다닐 때는 교과목을 배우는 단계가 체계적으로 잡혀 있다.
그것만 따라가면 어느 정도까지는 충분히 혼자 공부할 수 있다.
프로그래밍에서는 처음 시작할 때, 대부분 서점에 가서 입문서라고 불리는 책을 1권씩 골라서 보게 된다.
JS 쪽에서는 '자바스크립트 완벽 가이드'라는 대표적인 입문서가 있다.
이 책은 상세하게 JS의 A-Z를 담고 있어, 읽는 걸 추천한다.
하지만, 입문서의 문장 하나를 읽어 내려가는 데 있어서도 모른 단어가 엄청나게 많다는 것이다.
그래서 엄청나게 많은 학습에 비용을 투자해야 입문서 내용의 단어들을 이해할 수 있는 것이다.
훨씬 더 많은 시간과 노력이 들여야 할 것이다.
이는 처음 프로그래밍 입문자들에게 엄청 큰 허들이다.
이를 "그냥 그런가보다" 하고 넘어가면 뒷부분에서 숨이 턱턱 막힐 것이다.
그렇다면 다양한 난관을 극복하며
학습을 효과적으로 할 수 있는 방법은 무엇이 있을까?
대표적인 몇 가지 경우만 알아보자.
1. 일단 만들어보며 우당탕 학습하기
뭔가 배울 것도 많은데 순서도 잘 모르겠고, 일단 어떤 것이든 몸으로 부딪혀 가며 하나하나씩 익혀나가는 전략.
이런 학습이 가능한 이유는 프론트엔드 분야의 특성에 기인한 장점 때문이다.
2. 잘 정리된 순서대로 학습을 진행하기
단계를 나눠서 기초 과목 착 정리하고, 하나씩 하나씩 학습해 나가는 전략.
수학, 영어 등을 배우듯이 단계적으로 학습하는 것은 가장 탄탄하게 학습하는 방법이지만,
시간이 오래 걸리고 재미가 없다. (그 말인 즉슨 쉽게 포기할 수 있다는 것이기에 좋지 않은 방법이다.)
3. 하이브리드! 위 두 가지 모두 시도
위 두 가지를 모두 혼용하는 방법이 효과적일 것이다.
뭔가 간단하게라도 앱을 만들어 보는 방식의 학습 방법을 추천한다.
그리고 아무 것도 모르고 만들 순 없기에, 최소한의 지식만 가지고도 만들 수 있는 수준의 앱을 만든다.
"코드를 짠다는 것은, 프로그래밍을 한다는 것은 이런 느낌이구나." 하고 느끼면서 학습하게 되면
조금 더 재미가 있을 것이다.
그럴 때 다시 정석적인 방법으로 학습해서 내가 살을 찌우는 식으로.
그러다 다시 만들다가 학습하고.. 왔다갔다 하면서 학습하는 방법이 효과적이다.
그렇게 학습하다 보면
"아하, 프로그램 하나를 만드는 거에 있어서는 이런 과정을 거쳐서 이런 형태로 내가 코드를 구성하고 만들어지는구나. 오케이 그러면 다음 단계는 뭐지?" 하며 다음 단계로 넘어가는 힘이 생길 것이다.