본문 바로가기
컴퓨터/전산, 그 외

프로그래머에게 겸손이란

by adnoctum 2010. 1. 13.
   STL[각주:1]에 대한 비판은 초보자에게서 더 많이 보이는 것 같다. 그 이유는 무엇일까? 나는 그 이유가, 그들이 '겸손'하지 않기 때문인 것 같고, 그것은 다시, 그들이 자신들의 실력을 제대로 평가하고 있지 않기 때문인 것으로 보인다[각주:2].

* 초보자는 컴파일러의 경고 메세지를 보고 컴파일러가 똑똑하지 못하다고 생각하지만, 경험 많은 프로그래머는 컴파일러의 경고 메세지를 좋은 충고로 받아 들인다 - Bjarne Stroustrup, C++ The Programming Language.
* 사용자가 프로그램을 사용하는데 계속적으로 경고 메세지 박스가 나타난다면 그것은 사용자가 어리석은 것이 아니고, 유저 인터페이스가 잘못된 것이다 - Macintosh User Interface Guideline.

문제는 간단하다. STL 설계에 참여한 많은 이들보다 내가 더 똑똑할 가능성은 매우 낮다. 그리고, 그들이 경험에서 얻은 지혜보다 내가 더 지혜로울 가능성도 매우 낮다. 언뜻 보기에 불합리하고 좋지 않은 구조로 보이는 설계에는 다 그만한 이유가 있을 것이며, 아직 내 경험이 미숙하기 때문에 그것을 이해 못하고 있을 것이다, 과연 나는 무엇을 모르고 있는 것일까, 라고 생각하는 편이 더 좋다. 그리고 그것은 대부분 사실로 판명된다. 코드 리뷰를 하는데 상대방이 계속 혼동한다면 그것은 그의 이해력 부족일 수도 있지만 오히려 내가 작성한 코드가 구조적으로 직관적이지 않게 되어 있다는 신호로 받아 들이는 편이 좋다. 같은 맥락에서, 오류는 내가 작성한 코드에서 발생했을 가능성이 높고, OS나 라이브러리가 잘못되었을 가능성은 극히 미미하다. 물론 라이브러리가 완전무결한 것은 아니지만, 내가 작성한 코드보다는 무결성이 높은 것은 대부분의 경우 사실이다. 우리는 디버깅을 하면서 결국 문제는 내 코드에 있었다는 것을 수도 없이 경험하지 않는가.



  1. Standard Template Library. 내가 개발할 때 자바보다 C++을 사용하는 가장 큰 이유 [본문으로]
  2. 물론 이 말에선 나도 자유로울 수 없긴 하다 [본문으로]