고통스러우면 더 자주하라‘는 말을 좋아한다. 표면적으로는 무의미해 보이지만, 깊이 파고 들어보면 행복을 가져다 주는 가치가 있다.

이에 대한 예시로 통합(Integration)이 있다. 대부분의 개발자는 자신이 한 작업을 다른 사람과 통합하는 것이 힘들고 고통스럽다는 경험을 한다. 여기서 인간의 자연스러운 반응은 이걸 가능한 한 오랫동안 미루는 것이다.

그러나 문제는, 통합하는 사이에 고통과 시간을 그래프로 나타내보면 다음과 같이 표시된다는 것이다.

graph

이런 기하급수적인 관계라면 더 자주 해주면 고통을 획기적으로 줄일 수 있다. 그리고 이게 지속적인 통합(Continuous Integration)에서 일어나는 일이다. 매일 통합함으로써 Integration에서 나오는 고통을 줄일 수 있다. 아파서 더 자주 했고, 이제 더 이상 이전처럼 고통스럽지 않다.

고통스러운 일을 더 자주 한다는 이런 생각은 애자일에서도 많이 나타난다. 테스트, 리팩터링, 데이터베이스 마이그레이션, 사용자와의 대화, 계획, 출시 등 모든 종류의 활동이 애자일에서는 더 자주 수행된다.

이 효과를 일으키는 원인은 뭘까? 크게 세 가지 이유가 있다고 생각한다. 먼저 이런 작업의 대부분은 해야 할 일이 늘어남에 따라 훨씬 더 어려워지지만, 더 작은 단위로 쪼개면 쉽게 만들 수 있다. 데이터베이스 마이그레이션이 좋은 예다. 여러 테이블과 관련된 대규모 데이터베이스 마이그레이션을 지정하는 것은 어렵고, 오류가 발생하기 쉽다. 그러나 한 번에 하나의 작은 변화를 취하면 각각을 수정하는 것이 훨씬 더 쉽다. 또한 소규모 마이그레이션을 쉽게 순차적으로 묶을 수도 있다. 따라서 대규모 마이그레이션을 일련의 작은 마이그레이션으로 분해하면 모두 처리하기가 훨씬 쉬워진다. 이것이 데이터베이스 리팩터링의 핵심이다.

두 번째 이유는 피드백이다. 애자일 사고의 대부분은 피드백 루프를 설정하여 더 빨리 배울 수 있도록 하는 것이다. 피드백은 익스트림 프로그래밍의 핵심 가치였으며 정의된 프로세스 제어와 경험적 프로세스 제어 간의 차이점에 대한 Ken Schwaber의 논의의 핵심이었다. 소프트웨어 개발과 같은 복잡한 과정에서는 자신의 위치를 자주 확인하고 방향을 수정해야 한다. 이렇게 하려면 피드백 루프를 추가하고, 피드백을 받는 빈도를 늘려 더 빨리 조정할 수 있는 기회를 찾아야 한다.

세 번째 이유는 연습이다. 어떤 활동이든 더 자주 할수록 실력이 늘어난다. 흔히 좋은 수술을 받는 비결은 수술을 자주 한 의사를 찾는 것이라고 한다. 연습은 프로세스의 꼬임을 해결하는 데 도움이 되고, 문제가 발생할 만한 사인을 알아내는 것에 더 익숙해진다. 자신이 하고 있는 일을 곰곰이 생각해보면 연습을 개선할 수 있는 방법도 떠오를 것이다. 소프트웨어를 사용하면 자동화의 가능성도 생긴다. 어떤 일을 몇 번 해보면 자동화하는 방법을 보는 것이 더 쉬울 뿐만 아니라, 자동화하려는 동기도 더 많이 부여된다. 자동화는 속도를 높이고 오류가 생길 가능성을 줄일 수 있기 때문에 특히 유용하다.

따라서 고통스러운 활동에 직면할 때마다 이런 힘을 적용할 수 있는지 스스로 자문해보자. 가능하다면, 빈도를 높여서 더 효과적으로 스트레스 원인을 제거할 수 있을 것이다.


참고