in 내가 보는 세상, 소프트웨어 개발

추상을 구체보다 먼저 가르치는게 죄스러운 일일까?

컴퓨터 과학도를 위한 대단한 수학책이 나온다는 소식에 예약구매를 걸고 오다가 추천사에서 마음에 걸리는 문구를 찾았다. (책 자체는 컴공의 이산수학 과정에 해당하는 내용을 다루는 듯하다)

“추상을 구체보다 먼저 가르치는 것은 철저히 죄스러운 일이다” – Z. A. 멜자크

프로그래밍을 배울때 구체에 집중하는 것은 인간이 아닌 기계가 생각하는 방식으로 접근하고 집역적이고 하드코어한 내용에 빠져 학습자가 포기하기 매우 쉽다고 생각한다.

컴퓨터 과학에 있어서는 나는 탑다운 모델을 추구한다. 추상을 통해 학습자가 ‘쉽다고’ 느끼게 속이고 내용을 ‘깍아서’ 낚는다. 자기도 모르는 사이에 어려운 것을 쉬운것으로 착각하여 구체적인 프로그램을 전문가로서 작성할 수준이 된다.

그렇게 실제 지식을 적용할 수 있는 수준이되고, 시간이 지나고 나서야, 한명의 엔지니어로서 주어진 작업은 훌륭하게 처리하지만, 동시에 수학적인 배경지식은 여기저기에 구멍이 나있다는 것을 깨닫게 된다.

전문가가 공학적으로 주어진 문제 처리는 제대로 하고 있지만, 사실 과학적인 배경지식을 제대로 파악하고 있지 않다는 것을 깨닫고 스스로를 사기꾼이라 생각하게 되는 “Imposter’s Syndrome”에 빠진다. 그때서야 로우레벨과 수학에 전념해도 전혀 늦지 않다고 생각한다.

구체부터 가르치는 것은 영웅적인 천재에게 매우 단단한 지적 기반을 마련해주겠지만, 대부분의 사람들이 시작도 제대로 못하고 좌절하게 된다. 그런 상황에 처하게 하는 것보다는 추상이 낫다고 생각한다.