자 내가 수강 신청한 인터넷 강의 사이트에서 완강한 인터넷 강의를 살펴보자. 과연 몇 개나 될까? 웬만한 의지를 가진 사람들이 아니고서야 인터넷 강의를 완강한 사람의 비율은 높지 않고, 실제 인터넷 강의 플랫폼을 운영하시는 분들의 이야기를 들어봐도 굉장히 완강 비율은 낮다. 하지만 중요한 건 완강보다는 그 인터넷 강의가 나에게 얼마나 도움이 됐느냐가 훨씬 더 중요할 것이다. 요즘 정말 인터넷 강의 대란일 정도로 웹서핑하다 보면 여러 가지 광고들이 많이 뜨고 좋은 강의 들도 많이 공급되는데 강의는 5년 전이나 똑같은 방식으로 듣는 경우가 많다.
그래서 이 강의를 듣는 방법도 조금 전략을 바꿔서 접근하면 훨씬 효율적으로, 그리고 능동적으로 새로운 걸 아는걸 넘어 써먹을 수 있는 단계로 들을 수 있다.
1. 시뮬레이션 단계
첫 번째 단계로, 강의를 듣기 전에 '시뮬레이션'을 해보는 것이다. 인터넷 강의를 들을 때 강의 목차가 있는데, 이 강의 목차를 보고 강사분이 어떤 이야기를 할지 머릿속에 그림을 그려보는 것이다. 예를 들어 제가 생활코딩 이고잉님의 리액트 강의를 듣는다고 해보자.
이 목차를 보면서 쭉 시뮬레이션 해보는 것이다.
목차를 보니까 개발환경, 컴포넌트를 만들고, state가 있는데 state가 뭐지?
검색해보니 상태란 뜻이구나
그리고 이벤트를 다루고...
Create, Update, Delete 아 CRUD가 있구나!
아 그럼 전반적으로 봤을 때 개발환경 셋팅한다음에 컴포넌트 만들고 그 컴포넌트에서 상태 이벤트 관리하면서 CRUD 하는 걸 만들겠구나!
어떻게 보면 하나의 작은 애플리케이션을 상태, 이벤트, CRUD 할 수 있는 기능 만드는걸 할 것 같은데!?
나라면 아주 작은 카운터 앱을 하나 만들어보면서 설명할 것 같은데 이 강사분은 어떻게 설명할까?
이런 식으로 과연 나라면 이 항목들을 어떻게 이야기할 건지 한번 머릿속에 그려보는 것이다. 이거를 길게 할 필요는 없다. 하지만 이걸 하는 것과 안 하는 것은 마치 내가 어떤 앱을 만들 때, 마치 디버거를 사용하는 것처럼 내가 어느 위치에서 어려움을 겪고, 어느 위치에서 길을 찾아 나가고 있는지를 아는 데 큰 도움이 된다.
이걸 하지 않으면 열심히 듣는데 내가 어떤 지점에 있는지 파악하기 어렵고 시간상으로 비효율적으로 듣게 될 확률이 높다. 사실 우리가 교과서나 책을 읽을 때도 앞에서 쭉 읽는 것도 의미가 있지만 나한테 필요한 지식은 그 지식이 연결되어야 내가 사용할 수 있는 경우가 많다.
특히 프로그래밍 기초 강의를 들을수록 변수에 대한 강의, 반복문에 대한 강의, 조건문에 대한 강의 이렇게 세부적으로 나누어져 있는데 사실 우리가 변수만으로는 앱을 만들 수 없고, 반복문만 가지고서도 앱을 만들 수 없다. 목차들이 쭉 있으면 그 항목들이 연결되어야 하나의 앱을 만들 수 있기 때문에 목차들을 보면서 전체 그림을 그려보고 내가 그중에 어떤 부분을 학습하는지 좌표 위치를 확인할 수 있어야 한다.
2. 강사분과 나의 생각 비교
두 번째로는 강의를 들으면서 내가 생각한 거랑 강사분이 이야기한 거랑 비교해보는 것이다.
아 나는 이렇게 생각했는데 강사분은 이렇게 설명하네?
상태에 최대한 한 곳에서 관리하는게 중요하다고 생각하는데 강사분은 이렇게 이야기하는구나!
이러면 내 생각과 강사분의 생각이 같은 것도 다른 것도 있을 것이다. 그러면 같은 거는 같기 때문에 내가 그걸 더 잘 기억하기 위해 노력할 필요가 없고, 다른 건 왜 다른지 비교해보면서 흡수해나갈 수 있다. 그래서 강의를 들으면서 내가 생각했던 거랑 강사분이 말하는 거를 적극적으로 비교해보면 좋다.
3. 과거의 경험에 적극적으로 넣어보기
세 번째 단계로는 정리하는 것이다. 이 정리를 할 때 단순히 강사분이 말한 거를 정리해서 적는 것이 아니라, 과거의 나의 경험을 적극적으로 끼워 넣어보는 것이다.
아 예전에는 이렇게 했었는데, 지금 이걸 알고 나니까 이렇게 해봐야겠다.
라고 정리해보고 끼워 넣어 보는 것이다.
예를 들어 내가 지금 리액트로 컴포넌트를 만드는 강의를 들었다고 해보자 그러면 과거에 내가 개발했던 앱 중에 이 리액트의 컴포넌트를 썼으면 좋았을 법한 경험을 적극적으로 떠올리고 생각해보는 것이다. 그리고 그걸 썼으면 어떻게 달라졌을까를 한번 생각해보는 형태로 과거 경험을 찾아보는 것이다. 물론 이제 막 시작한 단계라면 이 과정이 없을 수도 있겠지만, 점점 공부할 수록 이 단계를 잘하게 되면 새롭게 배운 것을 내 걸로 만드는 시간이 훨씬 빨라진다.
리액트의 컴포넌트 이 개념을 배우고 나니까 이전에 내가 만들었던 순수 html, javascript로 짠 투두리스트 앱이 생각나는데...
음 이거를 리액트 컴포넌트로 어떻게 나눌 수 있을까?
사용자 입력하는 부분이랑, 투두리스트 개별 투두 아이템을 컴포넌트로 나눠볼 수 있었겠구나!
이렇게 또 한 번 적극적으로 과거의 경험에 적용해보고 떠올려보는 것이다. 이런 식으로 내가 능동적으로 먼저 시뮬레이션하고 비교하고 과거의 경험에 적용해보는 방식이 진짜 강의를 효과적으로 듣는 방법이다.
정리: 아는게 아니라 사용하기 위해 인강을 듣자
사실 우리가 강의를 듣는 이유는 강의를 단순히 듣고 새로운 걸 단순히 '아는 게' 목적이 아니라, 그 아는 걸 토대로 현실에서 내가 '잘 사용하는 게' 목적이다.
특히 프로그래밍은 도구이기 때문에 그 도구를 내가 사용하기 위해서 배우는 거고, 이걸 사용해보는 경험을 스스로 만들 수 있을 때 지식도 훨씬 더 오래 남고 내 거가 될 수 있다. 분명 내가 사용해보지 못할 지식은 금방 까먹기 마련이다.
인터넷 강의 들었던 것 중에 돌이켜서 '지금' 생각해봤을 때 어떤 게 있는지 떠올려보자. 분명 분명 기억에 남는 건 내가 사용할 수밖에 없었던 내용이 가장 강렬하게 기억에 남아있을 것이다. 사용하지 못할 지식은 들을 때는 좋다고 생각할 수 있지만 금방 까먹을 수밖에 없다….
지금인터넷 강의를 듣고있는 게 있다면, 한번 적용해보면 어떨까?