종이와 연필. 그리고 프로그래밍
어떤 정보를 기록 보관할 때 백여년 전만 해도 종이에 연필이나 붓 혹은 펜등을 이용해서 기록 저장하는 것이 가장 일반적이고 당연한 방법이었다. 그러다가 타자기가 발명되고 종이에 타자기로 기록을 하면서 기록의 속도가 빨라졌다. 그리고 근현대에 들어 컴퓨터와 소프트웨어 기술의 급격한 발달로 인해 사람들은 손에 펜을 잡고 종이에 무언가를 쓰는것 보다는 컴퓨터를 켜고 모니터를 보면서 두 손의 열손가락(어떤이는 두 손에 두 손가락)을 이용해서 원하는 정보를 가공하고 그것을 프린터라는 기계를 이용해 종이에 인쇄하는 것을 당연하게 여기게 되었다.

컴퓨터와 관련된 직업을 가진 사람들 뿐만 아니라 컴퓨터와는 거리가 멀어보이는 문학인들이나 언론인들 조차도 그들이 '글'을 쓰는데에는 컴퓨터를 많이 이용한다. (물론 이들 중에는 조정래씨 처럼 손맛을 강조하면서 컴퓨터가 아니라 원고지에 펜으로 글을 쓰는 사람들이 있기도 하다. 하지만 이들은 논외로 치자) 그리고 본인이 종사하는 직업이 컴퓨터의 사용시간이 길고 컴퓨터를 이용한 작업이 많은 사람일 수록 대부분의 문서작업을 컴퓨터로 하게 되고 그들 중 어떤 사람들은 하루종일 종이에 간단한 메모외에는 아무것도 쓰지 않는 사람들도 생겨나게 된다. 심지어는 메모조차도 컴퓨터로 하고, 컴퓨터가 없더라도 휴대폰이나 PDA등을 이용해서 메모를 하는 사람들도 있다. 이들은 정말 종이와 연필 없이도 자신이 필요로 하는 모든 기록을 해결 할 수 있다.

현대 사회에 존재하는 수많은 직업군 중에 가장 컴퓨터의 활용도가 높고 컴퓨터를 오래 사용하며 컴퓨터를 잘 알고 있는 직업은 무엇일까. 나는 소프트웨어 개발자라고 생각한다. 이들은 말 그대로 컴퓨터 프로그램을 만들어 먹고 살고 있으며, 컴퓨터가 어느날 갑자기 세상에서 사라져 버린다면 바로 실직자가 되어버리는 사람들이다. 그리고 대부분의 소프트웨어 개발자들은 컴퓨터 활용능력이 우수하다. 일상생활에 필요한 대부분의 작업을 컴퓨터를 이용해 해결할 수 있는 능력이 있는 사람들이다. 컴퓨터 활용의 가장 기본적이라고 할 수 있는 문서작업은 당연히 할 수 있는 사람들이다.

그래서 개발자라는 직업을 잘 모르는 사람들은 개발자들은 연필(볼펜등 필기구를 모두 포괄하는 의미로 사용하겠다.)로 종이에 무언가를 쓰는 것을 어색하게 생각하거나 아니면 아예 연필로 종이에 무언가를 쓰는 행위를 하지 않을 것이라고 '오해'하기도 한다.

하지만 적어도 나에게는 종이와 연필은 프로그램을 개발하는데 있어서 필수 도구이다. 이는 내 프로그래밍 습관 때문이다. 또 내가 그다지 머리가 좋은 사람이 아니기 때문이다.

나는 프로그램을 작성할 때 내가 만들고자 하는 프로그램을 작은 단위로 분해 해서 그 단위별로 흐름을 설계하고 작성한다. 이것은 다른 개발자들도 마찬가지일 것이라 생각한다. 설계의 과정에서 나는 종이와 연필을 적극 활용한다. 어떤 개발자는 CASE툴을 활용하기도 하고 어떤 개발자는 메모장 등을 활용하기도 하고 어떤 개발자들은 그래픽 툴로 순서도 등을 그리기도 한다. 나도 물론 앞에서 열거한 방법들을 모두 사용해 봤다. 그리고 내린 결론은 역시 연필로 종이 위에 직접 손으로 쓰고 그리는 것이 가장 편하고 쉽고 빠르다는 것이다.

연필로 종이위에 어떤 내용을 쓰거나 무언가를 그린다는 것은 머릿속의 의사를 시각화할 수 있는 가장 빠른 방법이다. 또한 정형화되어 있지 않기 때문에 내용을 수정하거나 삭제하는 방법이 다른 어떤 도구를 사용하는 것 보다 편하다. 그리고 무엇보다도 그 모든 결과가 한 눈에 들어오기 때문에 다시 검토하기가 쉽다.

심리적 영향인지는 몰라도 손에 연필을 쥐고 종이에 그려진 그림이나 씌여진 글씨들을 계속 응시하고 있으면 동일한 내용을 모니터로 보는 것 보다 집중이 더 잘된다. 특히 그것이 어떤 창의적인 결과를 원하는 내용일 경우에는 종이를 바라보면서 집중했을 때에 유효한 결과를 생각해 내는 확률이 경험적으로 보아 더 높았다.

종이와 연필이 주는 도구적 장점과 심리적 장점을 한 단어로 표현해 보자면 '자유로움'이라고 표현하고 싶다. 컴퓨터에서 동작하는 많은 도구들이 강력한 기능과 멋진 결과물을 만들어 준다고는 하지만 결코 종이에 쓱쓱 그리거나 쓰는 자유로움을 이길 수는 없다. 사람은 행동과 표현이 제한되면 생각도 제한되는가 보다. 소프트웨어라는 도구를 통한 표현의 방법은 한계가 있고, 그것에 익숙해 지다 보면 그 한계를 넘어서는 것에 대해서는 잘 생각하려 하지 않는다. 이로 인해 장기적으로 창의력이 제한되는 결과를 낳게 된다. 종이와 연필이 주는 이와 같은 자유로움은 프로그램을 작성하기 전에 내가 작성하고자 하는 프로그램의 골격을 구상할 때 매우 강력한 응원군이 되어 준다.

프로그램을 작성하기 전 뿐만 아니라 프로그램을 작성하는 도중에도 종이와 연필은 매우 중요한 도구이다. 종이와 연필은 디버거와 함께 쓰일때 디버깅의 효율을 몇 배이상 증대시켜주는 촉매이다. 개발자는 개발의 전 과정 통털어 디버깅 중에 가장 깊게 집중하고 있고 가장 신경이 날카로와져 있다. 디버깅을 하고 있다는 것 자체가 현재 프로그램이 내가 원하는 대로 동작하고 있지 않다는 것이고, 나는 어떻게든 이 프로그램의 문제점을 찾아서 내가 원하는 대로 동작하게 만들어야 한다. 이 과정은 개발자에게 정말 엄청난 스트레스를 준다. 이 때는 사소한것 하나라도 개발자에게 큰 짜증을 불러일으키고 개발자의 정신세계를 피폐하게 만든다. 디버깅 작업은 이렇게 개발자에게는 매우 예민하고 되도록이면 하고 싶지 않은 작업이다.

또한 디버깅 과정에는 매우 많은 정보가 쏟아져 나온다. 개발자는 실시간으로 나오는 많은 정보를 빠르게 분석하고 기억하고 정리해야 한다. 아주 머리가 좋은 사람이라면 디버깅 과정에서 쏟아지는 많은 정보를 모두 기억하면서 그 경향과 방향들 까지도 분석해 내겠지만 불행히도 나는 머리가 좋은 사람이 아니다. 그래서 나는 디버깅을 하면서 디버거로 부터 나오는 많은 자료들을 메모한다. 많은 자료라고 하지만 그 범위를 축약해 보면 결국은 변수들의 값의 변화이기 때문에 어떤 사람들은 디버거와 함께 스프레드시트를 사용하기도 한다.

나도 한때는 스프레드시트를 사용했었다. 변수 값의 메모 용도로 스프레드시트를 사용하는 것은 사실 꽤 효율적인 선택이다. 표 처리 능력이 강하고 깔끔하고 보기 좋게 정리해서 화면에 보여주기 때문이다. 하지만 그 이상의 자유로운 표현을 하려면 손이 많이 간다. 표나 차트를 그리는 것이라면 간편하게 될지 몰라도 그것이 어떤 그래프의 노드 값이라든가 실시간으로 기록되었다가 삭제되었다가 하는 값이라면 결국에는 종이와 연필에 순서대로 값을 써 가면서 그리거나 썼다 지웠다 하면서 시뮬레이션을 해보게 된다. 그리고 위에서도 언급 했지만 연필을 손에 쥐고 종이를 응시하고 있는 것 만으로도 두 손가락이 키보드위에 있고 눈이 모니터에 있는 것보다 더 많은 영감을 제공해 준다. 디버가가 모니터에 뿌려준 수많은 값을 한참을 바라보고 있어도 해결되지 않았던 문제가 가장 처음 나오는 변수 값을 종이에 쓰는 순간 번뜩이며 떠오른 아이디어로 해결했던 경험이 있다. 나는 종이와 연필의 심리적 효과를 거의 맹신하는 편이다.

이 글을 쓰기 직전에도 나는 한 조각의 코드를 작성했다. 물론 그 코드를 작성하기 전에 이면지 한 장을 꺼내서 책상위에 올려 놓고 오늘 작성해야 할 코드의 목적과 고려해야 할 사항을 간단히 메모하고, 코드의 큰 흐름을 종이에 적었다. 그리고 종이에 적은 내용을 보면서 실제로 코드를 작성했고, 한 부분 한 부분의 코드를 작성할 때 마다 종이에 적은 내용을 지워갔다. 그리고 종이에 적은 내용이 모두 지워져 있을 때 나는 오늘 작성하고자 한 코드를 모두 작성했고 일을 마무리 할 수 있었다.

프로그래밍에 있어서 가장 강력한 도구는 무엇이라고 생각합니까? 라는 질문에 많은 개발자들은 모두 제각각의 대답을 할 것이다. vi, gcc, gdb, make, visual studio, national rose ... 등등, 프로그래밍에 동원되는 도구는 모두 열거할 수 없을 정도로 많다. 그중에 내가 생각 하는 가장 강력한 도구는 바로 종이와 연필이다.
 Track this back : http://maanu.net/soojung/trackback.php?blogid=399
Commented by egoing at 08/08/12 18:19
저도 그렇게 생각합니다. 가장 강력한 도구는 바로 종이와 연필이죠. 제가 멘토로 모시는 개발자 형님은 연필 광입니다. 모든 종류의 연필을 수집하죠. 왠지 멋스러워 보였는데, 멋스러운 것을 넘어서 종이와 연필이 주는 효용과 무관하지 않을 것 같습니다. 일전에 링크 드린 글이 여기에 더 잘 어울릴 것 같내요. 좋은 글입니다!
Commented by holy at 10/07/30 05:26
실제로 연필로 쓰면서 공부하는것이 전두엽이 더 활성화된다고 들었습니다. 즉 더많은 생각을 한다고 할까요..프로그램이 만들어지고 컴퓨터가 만들어졌듯이 예전의 프로그래머들은 컴퓨터로 프로그램을 짜지 않았습니다. 다 종이와 머리로 프로그램을 짠거죠..좋은 습관이라고 생각합니다. 전 컴퓨터 사용시간을 줄이려고 노력중입니다. ㅋㅋ

You must Type in "noSpam" String
noSpam(6735)   Name   Email   Homepage