2008년 12월 6일

몰입도를 높이기 위해서

프로그래머는 매 순간 선택의 갈림길에 서 있다.
갈등속에서 집중하지 못하고 코앞의 유혹에 빠져,
'시장은 빠른 아웃풋을 요구해, 어쩔 수 없어' 와 같은 것으로 책임을 전가하고 위안을 삼기도한다.
하지만 우리는 이와같이 유혹에 빠지게 되면 마음은 편치 못하다는 것을 할고 있다.
훗날 폭탄이 될 가능성이 짙다는 것을 알고 있기 때문이다.
순간의 잘못된 선택으로 그만큼 이 시한폭탄으로 되돌아오게 되고 여러 사람들에게 폐를 끼치게 되다.


프로그래머는 항상 고민한다.
- 퍼포먼스
- 메모리
- 이식성
- 가독성 있는 코드
- 라이브러리
- 객체와 인터페이스 디자인,
- 테스트
- 동료와의 협업
- 책임
- 열정과 만족 그리고 욕심
- 일정
- 사회활동
등등..

단 한 줄의 코드를 만들더라도 이처럼 수많은 것들을 놓고 고민을 하게 된다.

하지만 잘못된 선택은 다른 이들에게 피해를 끼치게 되고 내 마음을 무겁게 한다.
어떻하면 좋은 선택을 할 수 있을까.

이에대한 명쾌한 답은 아직까지 찾아내지 못햇지만,
나는 TDD가 위 선택에 대한 해법은 아닐지라도, 도움의 시발점은 될 것이라 생각하고있다.

- TDD는 최소한 내가 커버한 코드에 책임감을 부여하는 작업이다.
- TDD는 리팩토링이란 단어를 정당화 시켜준다.
- TDD는 과도한 리팩토링을 몸소 느끼게 해줌으로 리팩토링의 늪에 빠지지 않도록 도와준다.
- TDD는 프로그래밍의 몰입집중도를 높여준다.

다만, 주의해야 할것은-
- 실버불릿은 없는 것처럼, 용어와 겉모습에 맹신하면 안된다.
- 리팩토링과 마찬가지로 TDD도 무덤이 있다. 테스트의 본질은 소프트웨어의 완성임을 잊지말자.
- 목표를 작게 설정하고 성취해 나가야 한다. (자신을 과대평가하지 말것)
- 집중력이 흐트러진다 싶으면 과감한 휴식과 목표치를 낮추도록 하는 실용적인 빠른 결단이 필요하다.
- 휴식은, 목표성취를 위한 에너지 섭취이다.
- 하지만 과도한 휴식은 주객전도되어 이제까지 쌓아온 집중력을 한순간에 무너뜨린다.
- 블로깅과 메신져, 웹서핑은 조심해야한다.
- 코드에 대해 같이 생각할 수 있는 짝궁이 있어야한다.
- 긍정적인 사고는 도움이 많이 된다. 즐겁게 임해야 한다.
- 감추지 말고 솔직하게 대화해야 한다.
- 일정은 무시하면 안된다, 재조정이 필요하면 주위에 상황설명을 솔직하게 이야기하고
이해를 구할수있는 상황을 만들어야 한다.
- 즐겁게 임해야 한다.

마지막으로..
- 테스트 시나리오 계획을 잘 세워야한다. TDD 스크린캐스트 이면에는 계획된 시나리오가 있다

적어놓고 보니 리팩토링과 XP에 대한 내용을 정리한듯하지만,
리팩토링과 XP에 대한 정당성이 의심스러웠던 이들에게 TDD를 권해보고 싶다.

(생각의 정리가 필요했고, 공개된 글에 대한 책임감이 나를 지켜볼것이라 글을 올린다.)

댓글 없음: