“맨먼스미신”을 읽으면서 가장 흐뭇했던 부분을 옮겨둔다. (책에 대한 얘기는 “맨먼스미신”을 읽고에서 볼 수 있다.)

아래는 “맨먼스미신” 책을 시작하면서 저자가 언급한 프로그래밍의 즐거움에대한 내용이다. 상당부분 공감이 가고 잊고 있던 내용이라 옮겨두고 기억하려 한다.

프로그래밍의 즐거움

첫째, 무엇을 만든다는 순수한 즐거움.

자신이 직접 아이디어를 내고, 구축 하기 위해 설계를 한 후에 뭔가 만들어 내는것은 언제나 즐거운 일이다. 심지어 조립만 하는 것임에도 불구하고 프라모델을 즐겨하지 않았던가. 가끔은 창조의 고통이 없는것은 아니자만 어째튼 뭔가를 내 손으로 만들어 내는것은 즐거운 일이다. 그것도 비교적 쉽게 :)

둘째, 다른 사람에게 쓸모 있는 뭔가를 만드는 데서 오는 즐거움.

누군가 내가 만들어낸것에서 가치를 발견하고 즐겨 사용한다면 정말 즐거운 일일 것이다. 어린아이 시절 카네이션을 손수 만들어 아버지, 어머니에게 달아주었을 때 기뻐하는 부모님을 보고 즐거운 경험이 있다면 두말 할것 없이 큰 즐거움이다.

셋째, 서로 맞물려 돌아가는 퍼즐 같은 복잡한 객체를 멋지게 만들어내고, 그것이 절묘한 사이클로 작동하며, 개발을 시작했을 당시 정했던 원칙이 실제로 어떤 결과를 낳았는지 지켜보는 즐거움.

내가 생각하는 가장 큰 즐거움이다. 많이 복잡하면 즐거움만 있는것은 아니겠지만 :) 충분히 감내 가능한 복잡함이라면 정말 즐거운 일일 것이다. 요즘은 MooTools를 가지고 이것저것 뚝딱 거리며 이런 즐거움을 맛보고 있다. 최초 프로그래밍을 공부할 때 화면에 내가 작성한 문구가 찍히는 것만으로도 즐거웠던 기억을 아직도 가지고 있다. “Hello, World ~” :)

넷째, 항상 새로운 뭔가를 배운다는 즐거움.

반복되지 않는 업무의 특성에서 오는것으로 어쩌면 압박이며 스트레스일 수도 있겠지만. 충분히 즐거움이라 할 수 있을것이다. 특히, 변화 없는 업무속에서 그냥저냥 살아가는 타인들과 비교했을 때 말이다.

마지막, 다루기 쉬운 매체를 갖고 작업한다는 즐거움.

이부분은 원문 그대로 옮겨본다.

프로그램을 작성하는 것은 시를 짓는 것처럼 거의 순수에 가까운 사고 영역에서 작업하는 것이다. 프로그래머는 아무 것도 없는 허공에, 허공으로부터 상상력을 동원하여 성을 쌓는다. 이렇게 유연하며, 가다듬고 고치기 쉽고, 커다란 개념 구상을 쉽게 실현할 수 있는 창조 매체는 찾아보기 힘들다.
하지만 프로그램 구문은 시어와 달리 움직이고 작동하며, 구문자체와 별도로 가시적인 출력을 만들어낸다는 점에서 실재적이다.
프레더릭 브룩스/김성수 역, 『맨먼스미신』(케이앤피북스, 2007), p.25-26.

프로그래밍의 고통

첫째. 작업은 완벽하게 해야 한다.

프로그램은 문자 하나, 점 하나를 잘못 사용해도 동작하지 않는다. 어쩌면 이런 완벽함에 대한 요구가 즐거움이 될 수도 있겠지만. 어째튼 인간에게 이런 완벽함을 요구하는것은 즐거운 일 만은 아니다.

둘째. 목표를 설정하고, 자원을 공급하고, 정보를 제공하는 주체가 내가 아니다.

맞다. “갑”이다. 더이상 말하지 말자. 하지만, 이 고통을 즐거움으로 바꿀 수도 있는데 오픈 소스 프로젝트에 참여하여 충성스러운 많은 사용자를 “갑”으로 두는것이다. :)

셋째. 단순노동을 요구하는 자잘한 버그들

생각만 해도 고통이 밀려온다. 자잘한 버그들 뿐만 아니라 모든 단순노동을 유발하는 요인들에 저주를 … 하지만, 이러한 단순노동을 줄이고 반복작업을 줄이는 프로그램을 작성하는 일 또한 프로그래머의 즐거움이라고 할 수 있겠다.

마지막. 오랫동안 작업해서 겨우 완성한 제품이 이미 완벽하게 (또는 거의) 쓸모없는 퇴물임이 드러나는 상황이다.

위에 나열한 모든 고통들을 참아내고 겨우 완성품을 냈는데 더 훌륭하게 다른 사람이 이미 동일 기능의 프로그램을 발표한다면 … 아~ 생각만 해도 끔찍하며 나는 아마 견뎌내지 못할지도 모르겠다.

결국

“사랑하지 않으면 떠나라” 인거다.