사실 소프트웨어 개발에서 자바를 사용할 것인가, C++을 사용할 것인가, 윈도우를 사용할 것인가, 리눅스를 사용할 것인가, DBMS는 어떤 것을 사용할 것인가와 같은 기술적인 이슈는 빠질 수 없는 요소입니다.
그렇지만 기술적인 요소들에 대한 이해도가 높고, 능숙한 기술들로 소프트웨어를 개발한다고 했을 때에도 여전히 소프트웨어 개발은 쉽지 않습니다.
제가 천재가 아니라 확실하진 않지만, 천재도 실수를 하더군요. 당연한 것 아니겠습니까? 사람은 불완전한 존재니까요.
그렇다보니 익스트림 프로그래밍(eXtream Programming, 이하 XP)에서는 그런 실수를 줄이기 위해 테스트를 먼저 작성하고 프로그램에 포함 시키는 테스트 우선 프로그래밍(Test First Programming)을 하자고 주장하고 있습니다.
테스트가 힘들면 그만큼 테스트가 싫어지고, 프로그램 수정과 확인에 대한 스트레스를 받는 다는 말이 너무나 와닿았기에 테스트 우선 프로그래밍의 필요성에 대해 크게 공감할 수 있었습니다.
그 외에 의사소통 문제를 해결하자는 이야기나, 과업별로 스토리를 작성하고 우선 순위를 정해 작업하자는 이야기등도 다 좋았지만, 품질을 낮춘다고 작업 효율이 좋아지지 않는다는 말에서 고개를 끄덕이지 않을 수 없었는데, 높은 품질을 요구 받고 그에 부합하려는 노력을 할 때 더 즐겁고 성취감도 얻을 수 있었기 때문입니다.
사용자 스토리, 테스트 우선 프로그래밍이나, 페어 프로그래밍이나 아직 실무에 제대로 적용하진 못했습니다. 테스트를 프로그램에 포함시키진 못했지만 코드 테스트는 하고 있고, 페어 프로그래밍을 해보진 못했지만 코드에 대한 논의 횟수나 방법을 개선해가며 나아지고 있다고 생각합니다. 물론 아직 멀었지만요.
XP에서 반복적으로 주장한 내용은, 실천하라, 반복하라, 테스트하라. 일찍, 자주, 자동화해서 였습니다. XP에서 주장하는 것들은 사실 사람관계 개선을 위한 방법들이 많고, 그 것을 위해 극복해야 할 것이 많겠지만 시도해보고, 좋은 결과를 얻도록 노력해봐야겠습니다.