소프트웨어 엔지니어가 critical thinking을 학습하려면
젋은 친구들이 소프트웨어를 업으로 하고 기업에 입사하거나 창업에 도전하는 모습이 이제는 사회적으로도 상당히 기대를 받는 장면이 되었다. 그런데 지식 산업인 소프트웨어를 연구 개발하는 역할을 하기 위해 어떤 성장이 필요할까? 개인적으로 최근 몇년간 딥러닝 쪽 공부를 하면서 미국 대학 강의를 들을 기회가 많은데 대학 시절에 공부를 제대로 하지 않아서인지 상당히 인상적인 부분이 있었다. 아마 명강의란 그런 것이 아닌가 싶은데 지식의 전달 방식의 차이였다. 대부분의 책에서 찾아보기 힘든 교수님의 지식에 대한 직관(intuition) 혹은 관점에 대한 전달이었다. 수학적 증명을 하고 난 다음에 이것을 수식이 아니라 직관적으로는 어떻게 이해를 할 수 있느냐 하는 부분이 매우 중요한데 지식을 이해한다는 것이 어떤 솔루션이나 아이디어의 기반이 되는 지식으로 발전하기 위해서는 직관이 가능한 멘탈 이미지로 머리 속에 재정립시킬 필요가 있다. 지식이 머리 속에서 살아 있는 직관 가능한 모델이 되어서 여러 가지 개념들과 느낌들이 무수히 연결되어야 한다. 즉, 평소에도 친숙하게 느낄 정도로 쉬운 개념이거나 숙련으로 쉽게 연상할 수 있는 개념이 되어야 한다. 예를 들어 친숙한 ‘코끼리’라는 개념은 여러 가지 코와 귀, 몸무게, 여러 가지 코끼리의 특성에 대한 것들을 연결시켜준다. 쉽게 직관할 수 있는 모델로서 이해하는 과정이 intuition 관점의 추가 이해라고 볼 수 있다. 이 멘탈 이미지 혹은 개념적 요소로 인지하면 비로소 지식은 유연성을 얻어 이를 기반으로 다양한 유추가 가능해진다. 소프트웨어를 기업 환경에서 다루는 사람이라면 소프트웨어에 맞는 생각하는 방법을 배워야 더 큰 소프트웨어를 다룰 수 있고, 또 깊이를 가질 수 있다. 창의적 사고의 중요한 요소라고 하는 critical thinking(임계적 사고)이나 system thinking(체계의 사고)은 특정 지식 혹은 영역에서 임계적 요소를 식별하고 이를 좀더 깊이있게 사고할 수 있는