사람이 아닌 시스템에서 문제를 찾자.
서비스를 운영하다 보면 장애나 오류가 발생하여 고객이 서비스를 정상적으로 이용할 수 없는 상황이 발생합니다.
이런 상황에서 현명한 대처법은 무엇일까요? 문제의 원인을 개인에게서 찾고 비난하기 보다는, 시스템이나 환경적인 원인에서 바라보고 재발을 방지하기 위한 대책을 마련하는 것이 효과적이라고 생각합니다.
오류는 주로 개발 작업에서 비롯되며, 이를 해결하기 위해 개발자가 나서서 처리하는 경우가 많습니다. 이때 서비스 운영자나, 기획자, 경영진 등은 대부분 개발자를 비난하고 탓하는 경향이 있는 것 같습니다.
이는 문제의 근본적인 원인을 파악하기보다 이미 지나가버린 과거의 행동을 비판하는 것에 치우친 것 같습니다. "이런 실수는 완전히 하지 말았어야 하는 거 아닌가?"라며 이미 발생한 문제를 지적하며 실수한 개발자 탓을 하는 경우가 흔합니다.
하지만 장애나 오류가 발생하는 이유는 개발자가 열심히 일을 했기에 비롯되었다는 것을 생각해 보았으면 좋겠습니다. 일을 하지 않는다면 (추가적인 개발이 없었다면) 문제가 발생하지 않기 때문입니다.
새로운 기능을 만들기 위해 개발을 하다 보면 오류가 발생하는 것은 어찌 보면 당연한 일입니다. 물론 새로운 기능을 만들 때 충분히 테스트를 수행하며 오류가 방지하는 것이 중요합니다. 그러나 개발 업무를 하다 보면 예상치 못하게 오류가 발생할 수 있다는 가능성을 염두에 두어야 합니다.
오류를 일으킨 개발자나 팀을 과도하게 비난하는 문화가 있으면 그 개인과 팀을 점점 수동적으로 만들 수 있습니다. 새로운 시도를 주저하거나 서비스에 변화를 주는 것을 두려워할 수 있습니다.
제가 속했던 조직에서도 새로운 기능을 만들거나, 혹은 안정적으로 서비스를 운영하는 것에 대해서는 감사하는 마음을 잃고 당연시 여기며, 장애가 나거나 서비스 오류가 발생하면 개발팀을 비난하는 문화가 있었습니다. 노력하며 잘해도 높은 평가를 받지 못하고, 작은 실수만으로도 비난과 비판을 받는 환경이었습니다. 이러한 상황에서 개발자들은 점차 변화를 거부하게 되고 수동적으로 변하는 모습을 보면서 안타까움을 느끼곤 했습니다.
예를 들어, 안정성이 매우 중요한 서비스의 고객정보를 개발자가 실수로 삭제하였다면, 이 일로 인해 오직 그 개인만 비난을 받아야 할까요? 중요한 서비스에서 휴먼 에러는 언제든 발생할 수 있음을 인지하고, 2차 작업자를 두어 중복 확인을 진행하거나, 서비스가 운영 중일 때는 삭제 작업을 불가능하게 설정하여 예방할 수 있습니다.
무조건 실수를 참고 관용을 베풀라는 이야기를 하는 것이 아닙니다. 문제를 개인에게서만 찾기보다는, 실수할 수밖에 없는 환경이나 시스템이 있었는지를 점검하고, 이를 바탕으로 예방책을 마련하는 것이 중요하다는 것입니다.
개발자들이 일부러 실수를 일으키는 것이 아닙니다. 서비스는 나만의 것이 아니며, 우리 모두 함께 서비스를 만들기 위해서 일하고 있습니다. 다음번 재발 방지를 위해 할 수 있는 방법들을 함께 논의해 가는 것이 현명하다고 생각합니다.
실수를 가차 없이 처단하는 냉혹한 사람이 되기보다, 실수로부터 배우고 성장하는 태도를 가진다면 개발자들 역시 함께 일하는 동료를 신뢰하며 협력하고자 하는 태도를 가질 것이라고 생각합니다.
장애 발생 시, 이런 걸 생각해 보세요!
✅ 개인을 과도하게 비난하지 않는다.
✅ 실수를 일으키는 환경적인 요소가 있었나?
✅ 시스템 상에 문제가 있었던 것은 아닐까?
✅ 어떤 절차를 마련하면 재발을 방지할 수 있을까?
✅ 같은 실수를 방지하기 위해 어떤 걸 마련하면 좋을까?
이 경험은 대기업과 스타트업에서 프로젝트 관리자 및 프로덕트 매니저로 일하며 느낀 것들입니다. 독자 분들의 역할과 환경에 따라 다양한 관점이 있을 것입니다. 여러분의 다른 의견, 경험담, 비슷한 생각, 나누고 싶은 이야기 등을 자유롭게 공유해 주시면 감사하겠습니다.