우리는 코드를 짜거나 문제를 해결할 때 종종 실수를 저지릅니다. 보통은 생각을 잘못해서 생긴 일이라고 자책하곤 합니다. 하지만 이는 지능이 부족해서가 아니라 인간답게 생각하기 때문에 나타나는 자연스러운 현상입니다.

사고 오류는 크게 두 가지 유형으로 나뉩니다. 하나는 감정이 앞서서 생기는 오류입니다. 다른 하나는 인지 과정 자체에서 생기는 오류입니다. 이 두 가지를 이해하면 더 나은 판단을 내리는 데 도움이 됩니다.

감정이 판단을 흐리는 뜨거운 오류

첫 번째 유형은 감정적, 혹은 ‘뜨거운(Hot)’ 오류라고 부릅니다. 이는 말 그대로 감정이 이성적인 판단을 끌고 가는 경우를 말합니다. 사람은 누구나 자신에게 이익이 되는 쪽으로 생각하고 싶어 하는 경향이 있습니다.

이미 믿고 있는 생각을 쉽게 내려놓지 않으려는 성향도 강합니다. 여기에 불안이나 자존심 같은 감정이 더해지면 판단은 더욱 한쪽으로 기웁니다. 논리적으로 생각한다고 믿지만 실제로는 감정이 결론을 정해버린 상태입니다.

예를 들어 어떤 기술 스택을 선택할 때를 떠올려 보세요. 그 선택이 프로젝트에 불리할 가능성이 보여도 인정하기 싫을 때가 있습니다. 지금까지 익숙하게 써왔다는 이유만으로 고집을 부리기도 합니다. 이는 이유를 나중에 갖다 붙이는 전형적인 감정적 오류입니다.

사고 방식에서 오는 차가운 오류

두 번째 유형은 인지적, 혹은 ‘차가운(Cold)’ 오류입니다. 이것은 감정보다는 생각하는 방식 그 자체에서 비롯됩니다. 대표적인 예가 상관관계와 인과관계를 혼동하는 것입니다.

프로그래머가 겪는 사고 오류의 원인과 현명한 대처법

두 가지 일이 함께 발생했다고 해서 하나가 원인이라고 단정 짓는 실수입니다. 특정 코드를 수정한 뒤에 버그가 사라졌다고 가정해 봅시다. 우리는 그 수정이 해결의 원인이라고 즉시 믿어버립니다. 다른 요인이 있었을 가능성은 놓치기 쉽습니다.

보고 싶은 정보만 골라 보는 경향도 여기에 해당합니다. 불편한 데이터는 무의식적으로 무시해 버립니다. 뇌가 에너지를 아끼고 효율적으로 생각하려다 보니 생기는 빈틈입니다.

생존을 위해 발달한 진화의 산물

흥미로운 점은 이 두 가지 오류가 과거에는 인간에게 큰 장점이었습니다. 인간은 진화 과정에서 빠른 판단이 생존에 훨씬 유리했습니다. 위험해 보이면 즉시 피해야 살아남을 수 있었습니다.

모든 정보를 차분히 분석하고 최적의 결론을 내리려 했다면 너무 늦었을지도 모릅니다. 맹수가 덤벼드는데 분석하고 있을 수는 없었을 테니까요. 그래서 감정에 의존하거나 빠른 규칙에 기대는 방식이 굳어졌습니다.

이러한 사고 방식은 오늘날까지 우리 뇌에 깊이 남아 있습니다. 익숙한 선택을 반복하는 것이 에너지를 아끼는 길이었기 때문입니다. 현대의 프로그래머가 겪는 오류는 이 오래된 본능의 흔적입니다.

지능의 문제가 아닌 본능의 부작용

따라서 사고 오류는 개인의 능력이 모자라서 생기는 문제가 아닙니다. 빠르고 효율적으로 판단하도록 진화한 인간 사고의 부작용이라 보아야 합니다. 이 사실을 인정하는 것부터가 변화의 시작입니다.

중요한 것은 오류를 완전히 없애는 것이 아닙니다. 인간인 이상 불가능에 가까운 일입니다. 대신 내가 언제 감정에 끌려가는지 알아차리는 연습이 필요합니다. 내가 편한 정보만 찾고 있지 않은지 의심해 보아야 합니다.

비판적 사고로 나아가는 길

우리는 언제 지나치게 빠른 사고에 기대고 있는지 스스로 점검해야 합니다. 바로 이 지점에서 비판적 사고가 큰 의미를 가집니다. 판단을 잠시 멈추고 한 번 더 생각하는 과정이 필요합니다.

자신의 사고 과정을 돌아보는 습관은 판단을 한 단계 더 성숙하게 만들어 줍니다. 코드를 짤 때나 동료와 논의할 때 이 점을 기억해 보세요. 실수를 줄이고 더 나은 결론에 도달할 수 있을 것입니다.