-
It's a System AND a Person카테고리 없음 2024. 12. 24. 23:15
개발 업계에 "It's a System, Not a Person" 라는 표현이 있다. 유래를 추적하다보면 20세기의 물류 시스템까지 거슬러 올라가는 듯 하지만, 내가 얘기하고자 하는 바는 개발 문화에 대한 내용이다.
개발팀의 문화 중 — 특히 포스트모텀에 대하여 — '개인을 탓하지 말라'는 대목이 있다. 골자는, 누군가 문제를 일으켰다면 그것은 그 자의 어리석음이나 미숙함 때문이 아니라 그런 행동이 가능하게 구성된 시스템 때문이고, 따라서 해당 개인을 비난하거나 벌주는 대신 시스템을 개편해서 이러한 문제가 재발하는 것을 원천 봉쇄해야 한다는 것이다.
나는 이에 대해 몇 가지 (어쩌면 상반된) 생각들을 가지고 있다.
첫째, 누구나 실수를 한다.
실수는 피할 수 없고, 따라서 우리 모두는 어느 정도 자애로울 필요가 있다. 자기 자신도 언젠가 그런 실수를 할 수 있어서가 아니라, 실수는 정말로 피할 수 없기 때문이다. 실수로 개개인을 판단하고 처벌한다면, 그들이 가진 힘과 잠재력을 아쉽게 날려버리는 일이 많이 발생할 것이다.
둘째, (특정한 상황 하에서는) 시스템을 고치는 것보다 사람을 고치는 것이 싸다.
(굵직한 IT 기업들이 탄생하던) 2000년대 후반, 다섯명의 엔지니어가 바쁘게 일하는 열 명 짜리 스타트업을 떠올려보자. 엔지니어 중 하나가 실수로 운영 데이터베이스를 날려먹었다고 상상해보라 ("엣취!... 어라?"). 이런 상황에서 같은 문제가 재발되지 않도록 다섯 명 중 하나가 운영 데이터베이스에 대한 수정 권한을 가지고 나머지 엔지니어들은 그에게 변경 사항 적용을 요청하는 것이 좋은 대처라고 생각하는가? 아니면 실수로 날려먹어도 괜찮도록 데이터베이스를 1분마다 비동기 백업하는 솔루션을 추가 개발하는 것은 어떤가? 클라이언트 측에 데이터를 나눠 보관해서 라이브 데이터베이스에 중요한 데이터가 없도록 아키텍처를 바꾸는 설계는 또 어떠한가?
나는 이러한 상황에서 '혹시 또다른 누군가가 같은 실수를 할 수 있으니까'라는 접근이 적절치 않다고 본다. 시스템을 고치는 것은 공짜가 아니기 때문이다.
셋째, 실수는 없었던 일로 간주할 수 없다.
실수는 누구나 한다. 그러나 누구나 저지른다는 이유로 있었던 사건이 없었던 일이 되지는 않는다. 바꿔 말하자면, 우발적 범행은 감형의 근거가 될지언정 무죄의 근거가 될 수 없다.
따라서 실수를 저지른 개인은, 적극적으로 문제를 해결하는 주체가 되어야 한다.
요컨대 정리하면 이렇다.
실수는 누구나 할 수 있다. 누구나 문제를 일으킬 수 있다. 그러나 그 개인이 직접적으로 모습을 드러내고 스스로 (어떤 식으로든) 상황을 개선해 나가는 것이 필수적인 과정이며, 이 부분을 무시한 채 시스템만 개선하려고 한다면 노력 대비 이득이 적을 것이다.
이것은 개발문화일까, 조직문화일까?
(2024.12.26 추가) 나는 개발자들이 실수할 때 '월급'대신 '신용'을 깎아먹는다고 생각한다. 그리고 이것이 월급보다 비싸다고 생각하기 때문에 (왜냐면 신뢰가 연대책임으로 작동하는 듯 해서), 정말 실수를 최대한으로 막고 싶다.