때는 익숙한 기존 언어의 표준과 관용적인 기법으로 뒷걸음치려는 유혹을 받
게 마련이다. 루비는 코드의 우아하고 단순함으로 이름이 높았지만 정작 내
가 짠 코드는 보기 흉하며 어색했기에, 나는 뭔가 잘못하고 있음을 알았다.
나는 다시 흰 띠를 매기로 했고, 펄에 대한 전문 지식을 한편으로 밀어 두고
루비 문서에 파고들었다. 그리고는 곧 필요로 했던 것을 찾았고, 내가 짰던
뒤엉킨 코드는 멋지고 표준적인 메서드 호출로 리팩터링되었다
9
. 이 모든 새
로운 정보를 단단히 머릿속에 새겨두기 위해서, 누구든 볼 수 있는 내 개인 웹
사이트에 배운 것을 기록하여 무지를 드러내기로 마음먹었다.
10
소프트웨어 장인정신이란 무엇인가?
기예, 장인정신, 견습생, 숙련공, 마스터 같은 간단한 단어에 대한 사전적 정
의는 이 책에서 쓰기에는 미흡하다. 그런 정의들은 흔히 순환적이고
(예를 들
어 ‘기예 ’ 를 ‘ 장인이 가진 기술’로 정의하면서, ‘장인 ’을 ‘장인정신을 보여주는 사람’으로, ‘장인정신’ 을
‘기예에 입각한 전통에 따라 일하는 장인들을 한데 묶어주는 특징’으로 정의하는 식이다)
, 역사에
실재했던 길드 제도에 기초하지 않거나, 솜씨 좋게 만들어진 물건을 설명하
는 용도로 일반화되기도 한다. 요컨대, 이런 정의들은 도무지 뭔가 배제하지
를 않아서 결국 모든 것을 다 포함해 버린다. 우리는 그런 정의 이상의 것이
필요하다.
구글에서 ‘소프트웨어 장인정신’으로 검색하면 61,800건이나 되는 결과가
나오지만,
11
그중에서 진로 지도가 필요한 ...