"I bought my boss two copies of The Mythical Man Month so that he could read it twice as fast." - @rkoutnik
프로그래밍은 어디에나 있지만 어디에도 없다. 프로그래밍으로 만들어진 소프트웨어는 어디에나 있지만, 많은 사람들에게는 마법처럼 여겨질 뿐이다. 아서 클라크의 유명한 말이 있다. "충분히 발달한 과학 기술은 마법과 구별할 수 없다." 더 나아가 생각해보면, 우리는 소프트웨어라는 마법의 원리는 모르지만 그 결과는 자연스럽게 받아들이는 시대에 살고 있다.
프로그래머의 작업은 시인과 마찬가지로 순수한 사고의 산물에 가깝다. 그는 허공 위에다 허공으로 만든 성을 상상의 힘으로 짓는다. (...) 하지만 프로그램은 실재하는 결과물을 만들어낸다는 점에서 시인의 시구와 달리 현실에 닿아있다. 7 page
프로그래밍은 결국 현실을 개념화하여 다시 현실에 결과물을 만든다는 점에서 상당히 변태스럽다. 소프트웨어는 그것을 정의하는 언어와 그 규칙에 따라 움직이는 연산으로 이루어져 있다고 볼 수 있는데, 다리를 만들기 위해 철근을 박고 콘크리트를 넣는 것보다는 개념적이다. 따라서 소프트웨어 공학은 그 외 전통적인 엔지니어링과는 결이 다른 부분들이 있다. 그러나 이러한 다름이 미신, 오해 그리고 환상을 불러일으킨다.
우리는 개조한 차고에서 두 명이 만들어낸 프로그램이 대규모 팀의 성과를 뛰어넘었다는 신문 기사를 가끔 접하곤 한다. 그리고 프로그래머라면 다들 이런 이야기를 믿을 준비가 되어 있는 것이, 어떤 프로그램이라도 1년에 1000 문장을 작성한다는 업계의 팀들보다야 자신이 훨리 빨리 짤 수 있음을 알기 때문이다. 그렇다면 왜 업계의 모든 프로그래밍 팀이 2인조들로 대체되지 않았을까? 우리는 여기서 '무엇'이 만들어지는지에 주목할 필요가 있다. 4 page
'늦어진 작업에 맨먼스를 더 투입하는 것이 오히려 더 큰 지연을 만들 수 있다', '부족한 시간 탓에 망가진 프로젝트는 다른 이유로 그렇게 된 경우를 모두 합한 것보다 많다.' 등 소프트웨어공학에 관련한 여러 생각들을 읽을 수 있었다. 40년 된 고전을 읽으며 상투적으로 받아들이며 읽지 않았나 싶다. 현명한 말들은 때에 따라 상투적으로 받아드려질 수 있다고 생각한다. 프로그래머인 내가 현실과 결부지어 '나는 얼마나 움직임을 만들어내고 있는가?' 반문해보면 여러 의미로 씁쓸해진다.
245 프로그래밍이라는 기예는 "우리 마음 깊은 곳 창작에 대한 갈망을 충족시키고, 모든 인간이 공통적으로 지닌 감수성을 즐겁게 하며", 다섯 가지 즐거움을 선사한다.