소프트웨어 개발팀에서 실수를 다루는 방법: 심리학적 관점

Michał Łęcicki – Shit Happens: Handling Mistakes 101

작성자
Balkan Ruby
발행일
2025년 05월 02일

핵심 요약

  • 1 본 강연은 소프트웨어 개발 과정에서 발생하는 실수를 심리학적 관점에서 분석하고, 이를 효과적으로 관리하며 학습 기회로 삼는 방안을 제시합니다.
  • 2 인지 부조화 이론과 성장형 사고방식을 통해 실수에 대한 인간의 본능적인 반응과 바람직한 태도를 설명하며, 팀 문화의 중요성을 강조합니다.
  • 3 실수를 통해 배우고 개선하는 문화를 구축함으로써 프로젝트의 성공과 팀의 성장을 도모할 수 있음을 역설합니다.

도입

본 강연은 오랜 개발 경력과 심리학 지식을 겸비한 연사가 소프트웨어 개발 프로젝트에서 발생하는 실수를 어떻게 다루어야 하는지에 대한 심도 깊은 통찰을 제공합니다. 연사는 2019년 유럽에서 급부상한 전동 스쿠터 스타트업에서의 개인적인 경험을 예시로 들며 서론을 시작합니다. 해당 프로젝트는 마이크로서비스 아키텍처, 트렁크 기반 개발 방식, 그리고 Ruby on Rails 대신 Golang을 사용한 빠른 개발 속도를 특징으로 했습니다. 하지만 한 줄의 잘못된 `if`문으로 인해 유럽의 한 주요 도시에서 모든 스쿠터가 갑자기 멈추는 치명적인 오류가 발생했습니다. 이 사건은 즉시 해결되었음에도 불구하고 고객의 신뢰를 상실하게 했고, 결국 프로젝트가 중단되는 결과를 초래했습니다. 이 경험을 바탕으로 연사는 실수가 불가피하며, 중요한 것은 실수가 발생한 후 이를 어떻게 처리하고 학습하는지에 있다고 강조하며 강연의 핵심 주제를 소개합니다.

연사는 먼저 실수의 정의를 ‘의도하지 않은 행동 또는 결과’로 명확히 합니다. 그리고 실수가 소프트웨어 개발 분야뿐만 아니라 의료 분야(의료 과실로 인한 피해)나 영국 우체국 스캔들(결함 있는 소프트웨어로 인한 수많은 사람의 피해 및 투옥)과 같은 다양한 영역에서 심각한 결과를 초래할 수 있음을 사례를 들어 설명합니다. 중요한 것은 실수가 발생한 이후의 대응입니다. 연사는 심리학자 레온 페스팅거(Leon Festinger)의 ‘인지 부조화(Cognitive Dissonance)’ 이론을 통해 이를 설명합니다. 인지 부조화는 현실이 우리의 기대와 일치하지 않을 때 발생하는 정신적 불편함을 의미합니다. 페스팅거의 1950년대 종말론 추종자 연구에서 나타났듯이, 종말이 오지 않았을 때 일부는 자신의 잘못을 인정했지만, 대다수는 자신들이 세상을 구했다고 합리화하며 현실을 왜곡했습니다. 이러한 인지 부조화를 줄이는 방법은 두 가지입니다: 자신의 행동을 현실에 맞춰 수정하거나, 현실을 자신의 신념에 맞춰 왜곡하는 것입니다. 연사는 특히 경험이 많고 숙련된 전문가일수록 자신의 실수를 인정하는 데 따르는 정신적 불편함이 크기 때문에, 현실을 왜곡하거나 외부 요인을 탓하는 두 번째 선택지를 무의식적으로 택하는 경향이 있다고 지적합니다.

그렇다면 이러한 실수를 어떻게 건설적으로 다룰 수 있을까요? 연사는 세 가지 핵심 방안을 제시합니다. 첫째, 캐럴 드웩(Carol Dweck)이 제시한 ‘성장형 사고방식(Growth Mindset)’을 채택하는 것입니다. 이는 자신의 능력과 기술이 고정된 것이 아니라 노력과 학습을 통해 얼마든지 발전할 수 있다는 믿음입니다. 성장형 사고방식을 가진 사람들은 실수를 성장의 기회로 인식하고, 이를 통해 배우려 하지만, 고정형 사고방식을 가진 사람들은 실수를 자신의 능력에 대한 위협으로 간주하여 회피하려 합니다. 둘째, ‘과학자처럼 행동하라’는 원칙입니다. 개발자는 자신의 솔루션을 실제 환경에서 테스트하고, 이론이 통하지 않는 지점을 찾아 개선하며, A/B 테스트나 문제 분할을 통해 다양한 해결책을 비교하는 등 과학적인 접근 방식을 취해야 합니다. 셋째, ‘안전한 문화 구축’입니다. 팀 리더나 회사의 경영진은 직원들이 실수에 대해 자유롭게 이야기하고 공유할 수 있는 안전한 환경을 조성해야 합니다. 실수를 인정하는 것은 부끄러운 일이 아니라, 다른 사람들이 배울 수 있는 기회임을 명확히 해야 합니다. 또한, 실수로부터 얻은 교훈은 간단하고, 쉽게 구현 가능하며, 모든 팀원이 접근할 수 있도록 공유되어야 합니다. 노력에 대한 가치를 인정하고, 실험을 장려하는 문화는 실수를 통한 학습을 촉진합니다.

강연 말미에 연사는 스쿠터 프로젝트에서 발생했던 구체적인 실수들을 다시 한번 되짚으며 교훈을 강조합니다. 첫째, 익숙하지 않은 기술(Golang)을 사용하여 실험했는데, 이는 안정적인 솔루션 제공을 위해서는 피해야 할 행동이었습니다. 둘째, 코드 리뷰를 소홀히 하여 코드 품질 관리에 실패했습니다. 셋째, 기능이 전체 비즈니스와 다른 마이크로서비스에 미치는 영향을 충분히 이해하지 못했습니다. 이러한 반성을 통해 연사는 실수를 인정하고, 이를 학습의 기회로 삼으며, 성장형 사고방식을 받아들이고, 인지 부조화에 대한 인식을 통해 더 나은 선택을 할 것을 제안하며 강연을 마무리합니다. 그는 ‘Black Box Thinking’과 ‘Mistakes Were Made’와 같은 관련 서적을 추천하며, 실수를 통해 배우는 문화의 중요성을 다시 한번 강조합니다.

결론

결론적으로, 본 강연은 소프트웨어 개발 환경에서 실수가 불가피하며, 이를 건설적으로 다루는 것이 팀과 프로젝트의 성공에 결정적인 영향을 미친다는 점을 명확히 합니다. 인지 부조화와 성장형 사고방식과 같은 심리학적 개념을 통해 우리가 실수에 어떻게 반응하고, 어떻게 반응해야 하는지에 대한 깊은 이해를 제공합니다. 궁극적으로는 실수를 숨기거나 회피하기보다는, 이를 학습과 성장의 기회로 삼고, 투명하게 공유하며, 지속적인 개선을 추구하는 '안전한 문화'를 구축하는 것이 중요함을 역설합니다. 이러한 접근 방식은 단순히 문제 해결을 넘어, 팀의 회복 탄력성을 높이고 혁신을 촉진하는 데 기여할 것입니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!