평소처럼 유튜브를 시청하던 중 인간의 인지 편향에 대한 흥미로운 영상을 발견했습니다. 인간이 저지르기 쉬운 인지 편향에 관련된 내용인데, 이러한 편향은 소프트웨어 업계에도 만연해있기 때문에 예시와 함께 고민해 보면 좋은 주제라 생각하여 포스팅을 작성하게 됐습니다.
기준점 편향(Anchoring Bias)
기준점 편향은 처음 제공된 정보를 의사 결정의 기준점(anchor)으로 삼아 지나치게 의존할 때 발생하는 현상입니다. 예를 들어 우리가 어떤 지역의 월세방을 구한다 했을 때 처음 확인한 월세방이 "보증금/월세"가 3000/60이라고 가정해 보겠습니다. 그다음으로 확인한 웰셋방의 "보증금/월세"가 2000/50이라고 가정했을 때 여러분은 어떻게 느끼시나요? 대부분의 사람들은 "2000/50"를 싸다고 생각할 것입니다. 하지만 해당 지역의 평균 "보증금/월세"가 1000/40이었다면 2000/50은 평균보다 높은 가격입니다. 이처럼 객관적인 정보 대신 처음에 확인한 정보를 기준 삼아 평가하는 현상을 기준점 편향이라고 합니다.
현업에서 어떤 기능을 개발하는 질문을 받는 상황을 생각해 보겠습니다. 기획자분께서 "2주면 개발이 가능할까요?"라고 물어봤다고 가정하겠습니다. 합리적인 답변을 위해서라면 개발해야 하는 양과 난이도 등을 고려해서 일정을 산출해야 하지만, 기준점 편향을 가졌다면 기획자분에 의해 처음 제시된 2주를 기준으로 일정을 산출하게 될 확률이 높습니다. 제 경험상 대부분 답변은 "구현해야 하는 기능이 많아 2주에 1주 더 추가해야 할 것 같습니다"라는 등의 답변이 대부분이었습니다. 처음 정보를 기준으로 삼고 있지 않는지를 의식적으로 의심함으로써 이러한 기준점 편향을 피할 수 있습니다.
가용성 편향(Available Bias)
가용성 편향이란 특정 개념 또는 결정에 대해 평가할 때 통계 등의 객관적인 수치가 아닌 마음속에 떠오르는 즉각적인 예시에 기반하여 짐작하는 현상을 의미합니다. 여러분이 만약 "국민의 생명에 가장 위협이 되는 상황이 무엇일까요?"라는 질문을 받으면 어떤 대답을 하시겠습니까? 저는 "테러리즘" 또는 "전쟁"이라고 답을 할 것 같습니다. 하지만 실제 "테러리즘"과 "전쟁"보다 더 사망률이 높은 상황(미국의 경우 테러리즘보다 경찰에 의해 사망할 확률이 더 크다고 합니다)은 많습니다. 우리가 이렇게 생각하는 것은 내가 알고 친숙한 것에 치우치게 하는 가용성 편향 때문입니다.
새로운 프로젝트를 하면서 백엔드 프레임워크를 선택한다고 가정하겠습니다. 제가 가장 먼저 떠오르는 옵션은 스프링 프레임워크입니다. 하지만 프로젝트의 특성에 따라 다른 프레임워크를 선택해야 할 수 있습니다. 만약 제가 만드는 소프트웨어가 인공지능 모델을 개발하는 거라면 과연 스프링 프레임워크를 선택하는 게 좋은 선택일까요?(인공지능 모델 개발에 있어 자바계열의 스프링보다는 파이썬 계열의 프레임워크가 자주 사용되는 것으로 알고 있습니다)
가용성 편향을 제어하기 위한 방법으로는 자신에게 친숙한 것 이외에도 다양한 옵션을 고민하고, 섣부르게 결정하지 않는 것입니다. 그리고 각 옵션에 대한 장단점을 객관적인 시선으로 평가해 보는 것입니다.
밴드왜건 효과(Bandwagon Effect)
밴드왜건 효과는 다수의 사람들이 특정 선택을 지지한다면 객관적인 분석 없이 그 선택을 지지하게 되는 현상입니다. 객관적으로 분석하지 않고 대중적으로 유행하는 주식을 사는 등(제 이야기입니다...😡) 인간은 종종 대중의 선택을 무조건적으로 지지하기도 합니다.
소프트웨어 개발에 있어 무엇을 선택할 때 우리는 최선 또는 최고의 선택을 해야 합니다. 다수의 의견을 물어보는 것은 좋은 방법 중 하나입니다. 하지만 다수의 의견이 항상 좋은 선택이 아닐 수 있습니다. 만약 밴드왜건 효과에 의해 좋지 않은 선택을 무조건적으로 지지하게 되면 좋지 않은 소프트웨어를 개발하게 될 수 있습니다. 따라서 다수가 선택한 아이디어가 좋지 않다고 판단됐을 때, 객관적인 이유와 함께 해당 아이디어가 왜 좋지 않은지 설명할 수 있어야 좋은 소프트웨어를 개발할 수 있습니다.
선택 지지 편향(Choice Supportive Bias)
선택 지지 편향은 개인이 어떤 선택을 내린 후, 선택 당시에는 고려하지 않았던 여러 근거들을 들면서 자신의 선택을 지지하려는 경향을 의미합니다. 즉, 자신의 선택이 옳다는 것을 지지하기 위한 정보만을 바라보고 제시하는 현상입니다.
선택 지지 편향과 관련해 제 사례를 소개합니다. 올해 정산 시스템을 개발하는 과제가 있었고, 저는 이번 프로젝트를 이벤트 스트리밍 형태로 개발하겠다는 결정을 내렸습니다. QA(품질 테스트) 이전의 개발 기간 동안 저는 왜 이벤트 스트림으로 정산 시스템을 개발해야 하는지, 어떤 장점이 있는지 팀원분들께 꾸준히 어필했습니다(제 선택이 틀리지 않았음을 증명하기 위해서였던 것 같습니다). 하지만 QA 과정에서 이벤트 스트림으로 개발된 구조에서 정산이 완료되는 시점을 예측하는 게 구조적으로 어렵고 효율적이지 않다는 것을 확인되었고, 이는 제가 개발하는 과정에서도 얼핏 알고 있었지만 제 선택(이벤트 스트리밍으로 구현)을 지지하기 위해 애써 무시하고 있었습니다. 결국 이벤트 스트리밍 구조를 배치 형태로 바꿈으로써 문제를 해결했지만 만약 선택 지지 편향을 인지하고 있었더라면 더욱 효율적으로 개발할 수 있었을 것입니다.
생존자 편향(Survivorship Bias)
생존자 편향은 어떤 문제에 대해 진단할 때, 이미 특정 선택 과정을 통해 걸러진 일부의 데이터(survivors)만으로 판단하여 잘못된 판단을 하는 현상을 의미합니다. 예를 들어 "백만장자라면 반드시 필요한 5가지 습관"이라는 위한 5가지 습관을 소개하는 영상을 시청했다고 가정하겠습니다. 그럼 우리는 이 5가지 습관을 잘 형성하면 백만장자가 될 수 있겠구나라고 생각하게 됩니다. 하지만 이 5가지 습관을 모두 가지면서도 백만장자가 아닌 사람들이 분명 존재할 수 있습니다. 즉, 백만장자가 되지 못한(non-survivors) 사람들에 대해서는 생각하지 않고 백만장자(survivors)가 된 사람들만 보고 판한다는 현상을 생존자 편향이라고 합니다.
소프트웨어와 관련된 유튜브 영상을 보다 보면 "Top 10 things software developers must do" 등의 영상 제목을 종종 볼 수 있습니다. 취업 준비하는 시기 또는 경력을 막 시작한 시점에 저는 해당 영상을 보며 영상에서 소개한 모든 것을 제 것으로 습득하고자 했습니다. 하지만 제게 정작 중요하고 도움 되는 것은 1 ~ 2개밖에 되지 않았고 그 이외의 것들은 참고만 해도 충분한 것들이었습니다. 생존자 편향으로 인해 불필요한 정보에 집중하는 것을 방지하려면 정보를 판단함에 있어 이것이 가치 있는 정보인지를 판단할 수 있는 능력이 중요합니다.
편견에 대한 맹점(Bias Bias)
사람들에게 "당신은 쉽게 편향에 빠집니까?"라고 질문하면 대다수의 사람들은 자신은 그렇지 않다고 답변합니다. 물론 편향에 쉽게 빠지지 않는 사람일 수 있지만 대다수의 사람은 또 다른 편향에 빠진 경우가 대다수입니다. 타인은 편향을 가질 수 있다고 생각해도 자신은 편향에 빠지는 것을 인지하지 못하는 이러한 현상을 "편견에 대한 맹점"이라고 합니다.
소프트웨어 구현 방법에 대해 논의하다 보면 종종 타인의 객관성을 의심하며 자신의 의견을 밀어붙이는 경우가 있습니다. 자신은 객관적이지만 "타인은 충분히 객관적이지 않다"라는 편향이 작용하는 경우이며, 좋지 않은 자신의 선택을 끝까지 밀어붙이는 최악의 상황이 발생할 수 있습니다. 이러한 상황을 피하고 싶으면 스스로가 편향에 빠진 게 아닌지 의심해 보고, 편향에 빠졌다면 인정할 수 있어야 합니다.
결론
편향에 대해 조사하며 제 나름대로 내린 결론은 "인간이 편향에 빠지는 것은 불가피하다"입니다. 편향에 빠지는 것을 피할 수 없다면 편향이 발생한 것을 빠르게 확인하고 이를 고쳐나가면 된다고 생각합니다. 하지만 그러기 위해서는 어떤 편향이 발생할 수 있는지를 인지하는 게 우선되어야 합니다. 개발과 관련된 것을 학습하는 것도 중요하지만 제 소프트 스킬을 숙련시킬 수 있도록 이와 같은 심리현상을 배워보는 것도 좋다고 생각합니다.
'Others' 카테고리의 다른 글
분산 시스템 일관성 한판정리 (0) | 2024.11.08 |
---|---|
성급하게 시스템을 최적화하는 당신을 위한 글 (2) | 2024.10.18 |
터미널 로딩 속도 개선하기 (0) | 2024.07.06 |