티스토리 뷰

프롤로그: 기초는 쌓기 어렵다

기초가 중요하다는 것은 누구나 다 알고 있다. 하지만 어떤 것을 함에 있어서 기초가 무엇인지는 적어도 모든 부분에 있어서 알 수는 없다. 그리고 무엇보다 기초가 무엇인지 안다고 해서 왜 그것이 기초인지 이해하는 사람은 몇이나 있을까? 

예를 들면 나는 수학 문제를 풀 때 지우개를 잘 사용해야 한다는 것을 이해한다. 하지만 지우개 사용의 버릇을 들이기 위해 여러 번 수학 선생님에게 지적을 받았고 지우개를 나도 모르게 쓰고 나서 즉시는 아니었던 어느 순간에 잘 지우는 행위가 얼마나 중요한 것인지 이해하게 되었다. 

지우개 사용법을 가르쳐주신 수학 선생님은 사실 이것 외에도 기초의 중요성을 많이 가르쳐 주셨다. 공식을 알기에 앞서 공식의 배경과 증명법을 알려 주셨기 때문에 증명을 이해하기까지는 지나기 전까지는 몇 번의 실패를 거듭했지만 이해하고 난 뒤는 모든 것이 단순해졌다. 


기초를 쌓는 법

그래서 나는 기초를 쌓는 감각과 방법에 대해서 고민하기 시작했다. 우리가 암묵적으로 배워나가는 기초를 체계화 시킬 수 있을까? 우선은 누구나 동의하는 공리를 하나 만들고 시작할 수 있을 것 같다.

공리 1. 기초를 쌓기 위해서는 충분히 많은 시간과 반복을 필요로 한다.

어떤 것을 배우려면 당연히 시간을 들여 익혀야 하고 익숙해지기까지 반복이 필요하다. 이 부분에 있어서 이견을 없을 것 같다. 


무엇을 얻고 싶은가?

첫 번째로 고민해보아야 할 것은 무엇에 대한 기초를 쌓고 싶은가 이다. 얻고 싶은 스킬이 없다면 기초를 쌓는다는 것도 있을 수 없다. 이 점도 공리로 내세울 수 있을 것 같다.

공리 2. 기초를 쌓기 위해서는 목적이 있어야 한다.


무엇이 기초인가

예를 들어서 프로그래밍을 정말 잘 하기 위해 기초를 쌓고 싶다고 해보자. 그러면 다음으로 어떤 생각이 들까? 프로그래밍의 기초가 무엇인지 알아야 할 것이다. 그런데 이전에 프로그래밍을 잘 한다는 것이 뭘까? 원하는 결과를 만들어 내는 것? 

앞의 지우개의 상황으로 돌아가 생각해보자. 수학 문제를 잘 풀기 위해서 '지우개를 잘 사용하기'라는 규칙은 누가 만든 걸까? 수학 문제를 푸는 법을 잘 알고 있는 사람. 수학 선생님이다. 기초를 배우는 입장에서는 왜 지우개를 꼭 써야 하는지 익숙해지기 전까지는 절대 알 수 없다. 

명제 1. 기초를 알고 있는 사람은 그 분야에 통달한 사람일 수밖에 없다. 그 사람에게 또는 그 사람과 연결된 매체 (책, 블로그, 영상 등)를 통해 알아내야 한다.

그렇다면 프로그래밍을 하는 데 있어서 기초는 누가 알고 있을까? 프로그래밍의 구루급이 되는 개발자 또는 프로그래밍 언어의 창시자이지 않을까? 

"사소한 곳에서 발휘하는 정직은 사소하지 않다"라는 덴마크 속담을 이야기하며 추천사가 써진 로버트 C. 마틴의 프로그래밍 고전 <클린 코드>에서 그의 이야기를 들어보자.

그는 모델이나 요구사항에 집중하는 현재에도 여전히 코드는 중요하다고 말한다. 다행히 이 책 전체는 이런 프로그래밍에 대한 기초를 이야기하는 것이 목적이며 그렇기 때문에 기초가 필요한 이유도 설명을 하고 있다. 그중에 하나만 예로 들어 "의미 있는 이름 짓기"라는 기초를 알게 되었다고 해보자.


기초를 쌓는 방법

이제 마지막 단계이다. "의미 있는 이름 짓기"가 중요하다는 것을 "알게" 되었다. 그렇다고 이것이 왜 그토록 중요한지 여전히 알지는 못한다. 설령 알고 있다 해도 기초를 온전히 내 것으로 만들지 않으면 그 맥락을 100% 이해했다고 보기는 어렵다. 처음에는 '아 그렇구나 이렇게 해야겠다.' 생각하겠지만 온전히 와 닿지 않기 때문에 지속하는 것은 쉽지 않다. 그러므로 지속하기 위해서는 의식적으로 자극을 줄 필요가 있다. 

명제 2. 기초는 익숙해질 때까지 충분한 시간을 들여 지속적으로 실천해야 한다 (공리 1에 따라)

지우개를 쓰지 않을 때마다 수학 선생님이 지적을 한 것처럼 계속해서 나를 체크하는 주변인이 있다면 자연스럽게 익숙해질 수도 있다. (물론 스스로의 목적은 잃지 않아야 한다) 

그렇지 않다면 스스로 자극시킬 수 있는 방법이 필요하다. 예를 들면 90년대 중반에 Peter Gollwitzer라는 심리학자가 만든 ‘If-Then 플랜’을 활용해 체크 리스트를 만들어 "(if) 프로그래밍을 할 때마다 (then) 의미 있는 이름 짓기를 했는지 체크한다."와 같은 규칙을 세워 볼 수 있다. 이외에도 스스로 지속할 수 있는 자신만의 방법이 있다면 어느 것을 사용해도 상관없다. 


결론

<트리거>에서는 체계의 중요성이 작업에 대한 고민을 없애 복잡한 일들을 단순화시키는 것에 있다고 말한다. 기초를 쌓는 것도 한 분야의 체계를 잡는 것과 같다. 기초를 다짐으로써 우리는 단순하게 복잡한 일들을 해나갈 수 있는 전문가가 될 수 있다. 기초를 쌓는 과정에서 잊지 말아야 할 것을 한 문장으로 남기며 이 글을 마치려 한다. 

중요한 것은 목적과 행위를 연결 지어 방향을 잃지 않는 것이다.


'내 이야기 > 생각' 카테고리의 다른 글

지금은 과도기  (0) 2017.12.07
프로가 된다는 것  (0) 2017.07.24
2016년 11월의 비전  (0) 2016.11.06
세상에 옳고 그름에 대한 인식이..  (0) 2016.10.27
3월 언저리의 일기  (0) 2016.06.20
댓글