프로그래밍이 힘든 이유 ?

보통 이상의 뛰어난 머리를 지녔다 해도 프로페셔널한 프로그래머가 되는 건 많은
노력과 수련을 요구하는 힘든 일이다.

머리가 좋으면 유리하지만 결코 고된 수련을 면제 시켜주지는 않는다.

머리가 좋고 수련을 게을리 한 사람보다는 머리가 보통이고 수련을 열심히 한 사람
이 더 잘하는 게 프로그래밍이다.

그런데 ‘공부’라는 표현대신 ‘수련’이라는 표현을 사용한 이유는 프로그래밍 공부
가 가지는 독특한 특징 때문이다.

흔히들 공부라는 말을 접하면 학창 시절 하던 그 공부를 연상한다. 그래서 프로그래
밍 공부를 ‘열심히’ 해야 한다는 말을 들으면 막연히 예전에 학창 시절 공부하듯이
열심히 하려는 경향이 있다. 그런데 그런 학교식 공부 방법은 잘못된 방법이다. 잘
못된 방법으로는 아무리 열심히 해도 그 효과가 없는 법이다.

지식에는 크게 두가지 종류가 있다.

‘진술적 지식’ vs ‘절차적 지식’

진술적 지식은 이를테면 ‘미국의 수도는 워싱턴이다.’, ‘운명 교향곡의 작곡자는 베
토벤이다’라는 식의 그냥 어떤 사실을 진술한 형태의 지식을 말한다.
사실 우리나라 학교 교육에서 강조되는 지식이 주로 이러한 진술적 지식이다.

그래서 운명 교향곡의 작곡자가 베토벤이라는 건 다들 잘 알아도 운명 교향곡의 4악
장을 들려주면서 작곡자를 맞추라고 하면 못 맞추는 그런 엉터리(?) 지식인을 양성
하고 있는 것이다.

그런데 문제는 프로그래밍 공부는 진술적 지식이 아니라 절차적 지식의 습득을 요구
하는 공부라는 것이다.

절차적 지식은 어떤 일을 수행하는 과정을 아는 걸 말한다.
여기서 안다는 것은 머리로 안다는 것이 아니라 체득해서 몸으로 아는 것을 말한다.

문제는 진술적 지식에 비해서 절차적 지식은 지식을 체계적으로 표현하기가 어렵다
는 것이다. 표현하기 어렵다는 것은 전달하기도 어렵다는 것이다. 물론 절차적 지식
을 기계 작동 매뉴얼 처럼 진술적인 형태로 표현할 수도 있다. 하지만 매뉴얼의 내
용을 머리 속에 달달 외우고 있다고 해서 그 기계를 능숙하게 다룰 수 있는 게 아니
듯이 절차적 지식은 진술적 지식의 형태로는 담을 수 없는 뭔가가 있는 것이다.

중국어의 쿵푸라는 말은 우리말의 공부라는 말로 사실 동양권에서 공부라는 말은 절
차적 지식을 습득하는 과정을 의미했었다. 무술 교본을 달달 외웠다고 훌륭한 무술
인이 아닌 것 처럼 본디 공부라고 불리우던 절차적 지식의 습득과정은 고된 수련을
요구한다. 직접 스스로 실행해서 해보지 않고는 결코 얻을 수 없는 지식인 것이다.

바로 프로그래밍이란게 절차적 지식인 것이다.
그래서 수련없이 진술적 지식을 암기하는 것으로는 결코 그 지식을 습득할 수 없는
것이다. 사실 이런 절차적 지식은 책이나 강의를 통해서는 전달 될 수가 없다.

그래서 전통적으로 이러한 절차적 지식을 전수하는 방법으로 도제라는 것이 있었던
것이다. 책이나 강의가 아니라 스승 밑에서 직접 하나 하나 수행하면서 배우는 것이
다.

과거에도 그랬듯이 사실 프로그래밍을 가장 잘 배울 수 있는 건 실제 수행을 통해서
이다. 프로그래밍은 프로그래밍을 통해서만 배울 수 있는 것이다.

프로그래밍 실력을 연마하는 것은 그런 면에서 동양적인 수련과 일맥 상통하는 면
이 있다. 사실 연마한다는 말 자체가 갈고 닦는다는 말이기도 하다.

프로그래밍의 도사(?)가 되는 길은 벽돌을 갈고 닦아서 거울을 만드는 과정인 것이
다.

글쓴이: 하이텔 kaswan

Dr.kchris

Hello, I'm Dr.kchris, a neuroscience researcher. I love studying and trying new things and also love challenging myself. Have a great day! :)

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.