왜 이런 이야기를 하냐면, 공부를 하거나 학문을 하거나 남에게 보여주고 자랑하려고 하면 자기 자신의 몸은 공부가 되지 않고 자꾸 겉에만 신경쓰게 된다고 보기 때문입니다. 주자가 쓴 근사록(近思錄)은 가까운 것들에 대한 생각을 기록한 것이란 뜻이고, 영어로는 "Reflections on Things at Hand"라고 합니다. 우주를 논하기에 앞서서 자기 주변부터 돌아보라 그런 뜻이죠. 위기지학, 쉬운 말 같지만 참으로 어렵고 무서운 말이기도 합니다. (저도 위기지학 하려고 노력 중입니다)
프로그래머 중에 보면 평생 남을 위한 프로그램만 만드는 사람들이 간혹 있습니다. 하지만 제가 아는 훌륭한 프로그래머들은 대부분 자기 자신을 이롭게 하기 위한 프로그래밍도 종종 합니다.
훌륭한 C++ 책을 많이 쓴(특히 어떤 책은 프로그래밍 언어 서적 역사에 남을 만큼 획기적이라고 보는데 이에 대해서는 차후 글을 약속드립니다) 앤드류 쾌니그(Andrew Koenig)는 파이썬 언어를 좋아합니다. 2004년도 파이썬 컨퍼런스에서는 그가 파이썬을 사용해서 자기 부엌을 리모델링한 경험을 발표했습니다. 여러분들은 자신의 삶에 파이썬(혹은 자신이 사랑하는 언어)을 이용하고 계십니까? 그런 노력을 하지 않으면서 그 언어를 좋아한다고 말할 수 있을까요? (그런데 이런 걸 하려면 정시 퇴근에 주말 보장이 되어야 하지 않을까 하는 생각이 드네요. 남승희씨는 인문학을 살리려면 사람들이 6시에 퇴근하게 해주면 된다고 합니다.)


스티브 워즈니악(Steve Wozniak)은 사실 애플 매니아들에게는 잡스보다 더 존경을 받는 사람입니다(저는 80년대초 애플을 처음 알게 된 때부터 워즈니악을 더 좋아했습니다). 그 사람이 최근 자서전을 냈습니다. 제목이 재미있습니다. "iWoz: From Computer Geek to Cult Icon: How I Invented the Personal Computer, Co-Founded Apple, and Had Fun Doing It". 읽으면 "나는 옛날에..."(I was)랑 똑같이 들립니다.

워즈니악은 말합니다. 자신의 설계 철학은 "자신이 사용하고 싶은 것은 창조하라"(Create what you want to use)라고. (가이 가와사키와의 인터뷰에서)
제가 워드 커닝햄에게 물었습니다. 당신 같이 위대한 프로그래머가 되려면 어떻게 해야 하나요?

저는 작지만 유용한 프로그램들을 매일 작성할 것을 추천합니다. 누군가가 똑같거나 혹은 더 나은 걸 이미 만들었다는 데에 절대 신경쓰지 마세요. 유용성과 복잡성 간의 균형 감각을 얻기 위해서는 당신 자신이 만든 프로그램의 유용성을 직접 느껴봐야만 합니다. --워드 커닝햄
정말 감동적인 말입니다. 그는 크고 불필요한 설계를 가끔 생각해볼 것을 추천하지 않았습니다(Write Small But Useful Programs Everyday를 다 반대로 뒤집은 말입니다).
계속 개선하면서 최소 1년 이상 써오고 있는 자작 프로그램이 있습니까? 만약 그렇지 못하면서, 남들이 1년 이상 써줄 프로그램을 만들 것이라 기대한다는 것은 어딘가 좀 이상하지 않습니까?
저는 프로그래머를 뽑을 때 다음과 같은 질문들은 꼭 하려고 합니다:
- 업무상 의무적으로 만들어야 하는 프로그램은 아닌데, 자신의 업무를 보조하기 위해 만들어 쓰는 프로그램으로 어떤 것이 있습니까?
- 업무 외로 자신의 삶을 위해 프로그래밍해 쓰는 것이 있다면?
- 올해 들어 자신을 위해 만든 프로그램이 몇 가지인가요?
- 자신이 가장 가치를 느끼는(혹은 느꼈던) 자작 프로그램을 보여주세요.
자신이 직접 사용자의 역할을 해본 프로그래머들은 단순함의 가치를 알고 있습니다. 그 사람들은 어떤 소프트웨어가 진정한 가치를 주는지 몸으로 알고 있습니다. 다른 프로그래머들이 1000줄에서 얻을 가치를 이 사람들은 10줄에서 얻어 냅니다. (하지만 계속 뭔가 자기를 위해 만들어 내지만 완성한 것도 드물고, 또 1년 이상 개선시켜 가며 써본 것이 하나도 없는 프로그래머라면 이야기가 다릅니다.)
제가 매번 놀라는 것은 위기지학을 몸에 익힌 프로그래머들의 전반적 생산성이 그렇지 않은 프로그래머에 비해 월등히 높다는 것입니다. (위기지학에 뛰어난 프로그래머의 가까운 예로는 제가 사랑하는 동생 퍼키군이 있습니다.)
여러분은 오늘 자신을 위해 무엇을 프로그래밍 하셨습니까?
--김창준