새로운 개념을 어떻게 배우는건가요?(탑다운하는법)

minsing-jin·2024년 8월 7일
0

깨달음들

목록 보기
1/2

top-down 방식의 학습법이 어떻게 되는지 항상 궁금했었다. 문제 해결을 위해서 기초부터 배우고 문제에 적용시키는 그전 학창시절 학습법과 다르게 top-down은 무지의 상태에서 문제를 정의하고, 이 문제를 해결하기 위한 상위 개념들을 알고, 그 상위개념을 이해하기 위한 꼭 필요한 하위 개념들에 대한 정보를 취사선택하여 빠르게 학습하는 방식이었다. 이를 직접해보면서 부딪힌 문제는 아래와 같다.

🎯 문제들

[문제1] 어떻게 무지의 상태에서 필요한것들을 찾을 수 있는가?

그렇다면 어떻게 무지의 상태에서 내가 필요한것들을 찾을 수 있는가? 어떻게 하면 무지의 상태에서 이 정보가 필요한것인지 불필요한지를 취사선택할 수 있는가?
예를 들면 객체지향 프로그래밍에 대한 개념 없고, Polymorphism을 모르는 상태에서 객체지향프로그래밍을 해야할 상황, 그리고 polymorphism을 깨달아야하는 필요성은 어떻게 느끼는것인가가 내가 항상 궁금해했던 주제였다.

[문제2] 새로운 개념을 배웠다면 적용하는것이 중요하다고 느꼈는데 예제가 없는 코드에 한해서는 어떻게 학습하는가?

두번째로는 학교 수업을 따라가면서 객체지향프로그래밍을 배웠을때 학교에서 제시한 방법에서 좋은 코드를 보는것만으로는 직접 적용이 어려웠다는 점을 깨달았다. 이를 위해서 학교에서는 과제를 학생들에게 부여해서 적용하는 훈련을 시킨다. 문제는 시험문제를 풀고 개발을 잘하기 위해서는 학교에서 부여한 과제에서 추가적인 학습이 필요했다. 이는 곧 예제코드가 없는 경우나 과제가 없는 개념에 한해서는 내가 새롭게 배운 개념과 코드들을 적용해보는데에 어려움을 느낄수밖에 없다라는 문제로 이어졌다.

😲 이에 대한 답변

Jeff는 Top-down 학습을 소개해준 멘토이자 top-down학습법의 마스터로 내가 이런 의문점을 제기했을때 답을 해주었다.

첫번째 질문인 그의 답은 무지의 상황에서 필요한것들을 어떻게 알고, 필요한 상황은 어떻게 아는가?에 대한 질문에는 문제를 정의하고, 내가 모르는것에 대한 질문을 정의한다라는 답을 제시해주었다. 그리고 구글링을 통해 문제해결에 필요한 개념들의 키워드들과 단서들을 찾고 정보를 취사선택하는 것이다.

예를 들면 polymorphism을 적용해야하는 상황을 깨닫기 위해서는 프로젝트를 할때 어떤 기능을 구현하기 위한 문제정의를 하는것이 첫번째, 두번째는 이 문제에 대한 관련 키워드들을 구글링하고, 여러 자료들을 취사선택하고 보면서 문제를 해결할 수 있는 단서에 해당하는 키워드들을 찾고, 그것이 polymorphism이라면 학습하고, 이 Polymorphism을 이해하기 위해서는 상속을 이해하고, 클래스를 이해하고, 객체지향프로그래밍을 이해하고..... 와 같은 필요한 하위 개념들을 학습하는것이다.

두번째 질문에서 그의 답은 "필요한것만 배우세유" 였다. 어떤 개념을 배울때는 필요에 의해서 배우는 상황이기에 적용을 하지 않을수 밖에 없다는 것이다. 그리고 지금의 문제를 해결하기 위해서 필요한 개념이 아니라면 지금 당장은 배우지 않아도 되는것이라는 점이다. 학교에서는 '과제'라는 것으로 인위적으로 필요한 상황을 만들기에 학교 수업에서 시키는것만 해서는 self-learning이 어렵다. Jeff가 객체지향 프로그래밍을 배웠을 당시에는 안드로이드를 개발했기 때문에 직접 개발 개념들을 적용할 수 있는 최적의 상황이 되었던 것이었다.
학교 수업에서 배우는 개념들을 나의 것으로 만들고 진짜 개발실력을 올리고 싶다면

  1. 시험문제를 잘풀기 위해서, 점수를 올리기해서 1회성으로 하는 공부가 아닌 학교 수업에서 소개해주는 개념들을 활용할 수 있는 프로젝트를 '자발적인 의지'로 만들어 풀어나아가거나
  2. 본인이 만들어보고 싶은 프로젝트를 백지부터 시작해보면서 첫번째 질문에 대한 답처럼 문제 무엇인지 정의 -> 해결책 찾기(구글링을 통해 키워드들과 단서 뒤적거리기) -> top-down 적용 해보고 깨달아버린다음 학교에서 fundamental한 개념들을 배우면서 부족한 개념을 보충하는것이다.

경험상 두번째가 더 좋은것 같다.

결론

jeff가 말해준 방식은 top-down 학습을 할때 필요한 개념들을 찾다보니 사실상 bottom up으로 배울 수 있는 상황도 올수 있는 상황이 오기때문에 top-down base의 bottom up이 혼용되어있는 유연한 학습 방식이었다.

아마 수학과 같은 base가 중요한 지식들, 순서가 중요한 지식들은 어느정도 bottom-up으로 쌓고, 그후에 프로젝트를 통해서 top-down 혹은 bottom-up으로 상황에 따라서 학습법을 적용하는것이 필요한 것 같다.

top down을 하면서 사전지식을 알면 더 시간 절약할 수 있는 것들이 있다. 그런것들이 나온다고 해서 이전에 내가 삽질했던 시간이 아예 도움이 되지 않는것도 아니다. 주눅들 필요 없고 그냥 하면 된다. 이걸 어떻게 하면 알 수 있을까에 대한 생각과 고민, 두려움은 뇌 리소스 낭비다. 그렇게 주위사람들에게 물어보면서 삽질을 해보면서 노하우가 생기는것이고 전문성이 생기는것이다.

profile
why not? 정신으로 맨땅에 헤딩하고 있는 코린이

0개의 댓글