모아사마 2013. 12. 18. 16:17

첫번째 챕터의 제목은 "The Tar Pit"입니다. 솔직하게 "Tar"는 뭔지 알겠는데, "Tar Pit"은 뭔지를 몰랐습니다.

그래서 위키피디아를 찾아보았습니다.


http://en.wikipedia.org/wiki/Tar_pit  에 따르면,

A tar pit, or more accurately known as an asphalt pit or asphalt lake, is a geological occurrence where subterranean bitumen leaks to the surface, creating a large area of natural asphalt. This happens because after the material reaches the surface its lighter components vaporize, leaving only the thick asphalt.



(이 사진도 저 위의 위키 페이지에서...)


즉, 가벼운 것들은 날아가고, 묵직한 것들만 남는다는 말입니다.

무엇이 가벼운 것이고, 어떠한 것들이 묵직한 것은, 잠시후에 계속 이야기 나눠보도록 하겠습니다.



저자는 프로그램의 개발은 4단계로 나누었습니다.


1. Program.

2. A Programming Product

3. A Programming System

4. A Programming Systems Product


가장 첫번째 "Program"은 그냥, 구현하고자 한 기능이 올바르게 동작하는 것입니다. 보통 혼자서 본인의 목적을 위해서 만드는 프로그램이지요.

이 프로그램은 두가지 방향으로 발전할 수 있습니다. "A Programming Product", "A Programming System".


"A Programming Product"는 우리가 혼자서 만든 프로그램의 구현을 좀더 일반적으로 하고, 테스트도 꼼곰하게 하고, 문서화 작업도 합니다.

그래서 이 프로그램을 많은 사람들이 다시금 사용할 수 있고, 확장할 수 있는 단계입니다.


제가 직접 예를 들어보면, 1번의 경우에는 자신의 필요에 의해서 프로그래밍을 짭니다.

그리고 2번은 그 프로그래밍을 오픈소스화해서, 많은 사람들과 함께 개발해 나가는 단계라고 할 수 있겠습니다.


"A Programming System"은 다른 시스템과의 통합을 위해서 interface를 구축하는 것입니다.

숨길 것은 숨기고, 드러내야할 것은 드러내는 API 설계와 같은 것이지요.


4번 "A Programming Systems Product"는 2번과 3번이 모두 구현된 것이고요.



자 그러면 왜 제목이 "Tar Pit"일까요? 저자는 왜 이러한 제목을 뽑았는지를 명시적으로 설명해주지는 않습니다.

다만, 1번에서 2번으로 갈 때나, 1번에서 3번으로 갈 때, 1번의 개발 시간 보다 약 3배의 시간이 보통 걸린다고 주장합니다.

궁극적으로 4번으로 가기위해서는 3배 * 3배. 즉, 개발시간보다 약 9배의 시간이 필요합니다.

즉, 1번의 시간과 합치면, 우리가 처음에 계획한 시간보다 약 10배의 시간이 보통 필요합니다.


우리는 보통 1번의 코딩을 마치면, 이제 거의 다 이루어졌다고 생각합니다. 재미있는 일은 이제 끝이 난 것이지요.

하지만, 우리가 만든 "Program"이 진정한 가치를 지니기 위해서는 지금까지 쏟은 시간의 약 9배의 시간이 더 필요합니다.

그리고 그 시간은 우리가 실어하는 테스팅, 문서화, 그리고 API설계등입니다.


가볍고 즐거운 일은 모두 날아가버리고, 묵직하고 하기 싫은 것만 남은 "Tar Pit"이 남은 것이지요.


하지만, 우리가 프로그래밍을 통해서 무엇인가를 창조하는 기쁨은, 비록 9배의 시간이 걸리는 테스팅과 디버깅의 즐거움을 능가하지요? :-)

그렇기에 다음 프로그래밍을 위해서, "Tar Pit"의 시간들을 잘 이겨낼 수 있다고 생각합니다.

그리고 이책은 앞으로 어떻게 하면, 그 "Tar Pit"을 조금더 쉽게 이겨낼 수 있을지에 대해서 이야기해볼 것입니다.