실수
Jan 20, 15
사람은 실수를 늘 한다. 이를 받아들여야 한다. 실수를 노력으로 극복하는 것은 사실상 불가능하다. 이를 위해서는 굉장히 기계적인 접근을 취할 수밖에 없는데, 절대다수의 경우에 "실수를 하지 않는다" 외에 다른 목표가 공존하기 때문에 실수하지 않는 부분에 대한 비용을 줄일 수밖에 없고 실수가 일어나게 된다.
사람이 저지르는 많은 실수는 다루는 체계의 총체적인 문제에서 기인한다. 헷갈리면 안 되는 것을 헷갈리게 만들어둔다든지, 비용의 문제로 지름길을 택하는 선택을 강요하게 된다든지 등의 문제는 산재해 있다. 그렇기에 실수는 사실 늘 일어나고 있지만 이로부터 파국이 자주 발생하지 않는 것은 대체로 다양한 조건이 맞물린 상황에서 실수를 저질러야 파국에 이르기 때문이다.
실수가 생기는 것을 막기 위해서는 이를 관리하는 시스템이 필요하다. 프로그래밍의 맥락에서는 컴파일 타임에 더 많은 체크를 해줄 수 있는 언어를 사용하고, 테스트 시스템 및 버그 추적, 관리 등을 위한 시스템을 도입한다. 문제는 이런 관리 시스템의 도입이 전체적인 시스템의 복잡도를 늘릴 수 있다는 점이다. 사람은 당연하게도 상황이 복잡해질수록 실수를 더 잘 저지른다. 이를 막기 위해 도입한 시스템이 복잡도를 늘리는 것은 아이러니한 일이다. 결국에는 적절한 균형을 찾는 것으로 귀결된다.1
All you need is love. Love Driven Development. From Not Enough↩