도서관에서 빌려서 본 책.


프로그래밍은 사람이 하는 일임에도 불구하고, 프로그래머는 기계를 다루는 기계처럼 취급되어 왔다.

작업 일정 계산에 개개인의 개성과 관계자들의 커뮤니케이션 부하 등이 무시되기 일쑤다.


비자아적 프로그래밍을 해야 한다. 나도 전에는 다른 사람이 내 코드에 버그가 있다는 것을 알려줄 때 기분을 언짢아했었다. "그럴리가 없어요", "있을 수 없는 일인데", "제대로 보신 것 맞죠?" 등 버그를 대신 발견해준 사람에게 고마움을 표시하는 않을 망정, 의심의 눈초리를 보내기도 했었다. 그리고 실제로 내가 작성한 코드의 버그가 아닐 것이라고 믿었었다. 하지만 10에 9는 내가 작성했던 코드에 버그가 있었다.

현재는 내 코드에 버그가 있을 수 있다는 것을 완전히 인정하고 있다. 버그 보고가 들어오면 재현을 딱 한번만 해본다. 이제 이건 - 비록 의도하지는 않았지만 - 실제로 일어난 일이다. 바로 인정해야 한다. 전혀 '이상한' 현상이 아니다. 이전에는 재현을 두번 이상 해보면서(거의 열번 가까이 해본 적도 있다) '이상한데'라고 생각했었다. 하지만 상당한 시간 낭비일 뿐이었다.

한번 현상을 봤으면 코드의 어떤 부분이 그런 문제를 일으킬 수 있는지 생각해본다. 그리고 그곳으로 가본다. 고친다. 다시 테스트한다.

될 수 있으면 디버그 출력을 하는 것은 최후의 수단으로만 사용한다. 디버그 출력을 하면서 따라가기 시작하면 대체로 버그가 있는 곳을 정확히 예상해서 출력해보기 보다는, 이곳저곳에 남발해놨다가 디버그 출력이 초당 수십개 올라가는것을 바라보면서 스트레스를 크게 받는 경우가 많았다.


프로그래밍에 심리 상태가 크게 영향을 끼친다는 사실은 일정 압박이 심해질 때 버그 발생율이 급격히 상승한다거나, 그런 경우 "거의 다 됐습니다"를 4주째 반복하는 등의 현상을 바라보며 알 수 있다.



반응형

'일기' 카테고리의 다른 글

Test Driven Development, 첫 걸음부터 세미나를 하기까지  (0) 2010.10.10
레거시 코드와 씨름 중  (0) 2010.10.10
ONE MUST FALL 2097  (0) 2010.02.27
으아앙대  (0) 2010.02.26
Misirlou 연습중  (0) 2010.02.17

+ Recent posts