배트와 공은 총 1.10달러입니다. 배트가 공보다 1달러 더 비쌉니다! 공은 얼마인가요?
10센트? 다니엘 카네만이 그의 저서 '사고, 빠르고 느리게'에서 설명한 인지적 함정에 빠졌네요. 계속 진행하기 전에 정답은 5센트입니다. 하지만 물론 대부분의 사람들은 계산을 하지 않고 직감에 의존합니다. 이것은 카네만이 시스템 원이라고 부르는 정신적 반사에 지나지 않습니다.
카네먼에 따르면 시스템 1은 뇌의 자동적이고 직관적인 사고 방식으로, 종종 빠른 반응을 이끌어냅니다. 우리 뇌의 이 시스템은 항상 반응하기를 열망하며 적은 노력으로 해결할 수 있는 패턴을 지속적으로 스캔합니다. 하지만 안타까운 현실은 이 시스템이 종종 틀린 경우가 많다는 것입니다.
반면에 시스템 2는 더 느리고 신중하게 노력하는 프로세스입니다. 이 방법은 우리가 스스로 다음과 같이 외치는 것을 멈출 때 작동하기 시작합니다. "10센트." 그러나 이 시스템은 에너지를 사용하기 때문에 우리 뇌에 적합한 옵션은 아닙니다. 이 두 시스템은 논리 퍼즐에만 나타나는 것이 아닙니다.
개발자의 경우 코드 작성 방법, 문제 디버깅 방법, 빌드를 기다릴지 Slack을 빠르게 살펴볼지 여부 등을 결정합니다. 이 두 시스템이 모두 IDE를 열 때마다 작동한다면 어떤 시스템을 더 자주 사용하며, 둘 중 하나를 사용하여 개발 관행을 개선할 수 있는 방법은 무엇일까요? 지금 바로 알아보세요!
카네만 101 - 빠르고 느리게 생각하기
이 두 시스템을 사용하여 개발 효율성을 구축하는 방법을 살펴보기 전에 먼저 이 두 시스템이 실제로 무엇인지 살펴보겠습니다. 노벨 경제학상을 수상한 심리학자이자 이 시스템을 제안한 카네만은 재무 예측이나 시장 예측으로 노벨 경제학상을 수상한 것이 아닙니다.
사실 그는 경제학자들이 오랫동안 무시해 왔던 현실을 인정받아 수상하게 되었습니다. 인간은 합리적 의사 결정자가 아니라는 사실입니다. 카네만은 50년 동안 인간이 불확실성에 직면했을 때 어떻게 의사결정을 내리는지 연구했습니다. 그의 연구 결과는 인간이 논리와 이성에 따라 선택한다는 가정을 완전히 바꿔놓았습니다.
카네만은 그의 저서 '사고, 빠르고 느리게'에서 인간의 뇌가 두 가지 시스템으로 나뉜다고 주장하며 뇌의 모델을 소개했습니다:
| 특성 | 기능 | |
| 시스템 1 | 빠른
감정적 저렴한 직관적인 |
이 시스템은 패턴에 따라 결론을 내리는데, 그 패턴이 오해의 소지가 있는 경우에도 마찬가지입니다. 본능적으로 다음과 같이 외치는 시스템입니다. "10센트" 본능적으로 "10센트"를 외치는 시스템입니다. 개발자에게는 다음과 같이 말하게 만드는 시스템입니다. "괜찮아 보이는데" "괜찮아 보인다"라고 말하지만 실제로는 깊이 생각하지 않습니다. |
| 시스템 2 | 비싸다
느림 논리적 제어 |
이 시스템은 오답을 외치기 전에 스스로를 발견하거나 특정 디자인 패턴이 프로젝트 아키텍처에 적합한지 파악하기 위해 생각할 때 활성화하는 시스템입니다. 하지만 이 시스템은 강제로 실행하지 않으면 시작되지 않습니다. |
그렇다면 이 모든 것이 개발자에게 의미하는 바는 무엇일까요? 답은 당신의 두뇌가 끊임없이 "빠르지만 잘못된" 아니면 "느리지만 올바른" 프로세스를 끊임없이 선택한다는 것입니다. 하지만 피곤하고 지치면 뇌는 자동으로 시스템 1을 사용하기 시작하고 이는 코드의 품질에 심각한 영향을 미칠 수 있습니다.
시스템 1 대. 시스템 2 - 개발자는 무엇을 가장 많이 사용하나요?
어떤 개발자에게 어떤 시스템을 가장 많이 사용하는지 물어보면 대부분 시스템 2라고 대답할 것입니다. 느리고 논리적이며 노력이 필요합니다. 이 모든 것이 코딩과 완벽하게 일치합니다. 실제로 실시간 설문조사에서 거의 90%가 시스템 2를 선택했습니다. 틀린 말이 아닙니다. 왜 그럴까요? 대부분의 개발자는 깊고 집중적인 사고가 필요하기 때문입니다.
하지만 여기에 문제가 있습니다. 시스템 2는 우리가 흔히 정신적 연료라고 부르는 한정된 인지 자원을 소모하기 때문에 비용이 상당히 많이 듭니다. 연료가 다 떨어지면 인간의 두뇌는 자동으로 시스템 1로 전환되고, 여전히 정밀도가 필요한 작업이라면 안타까운 일입니다.
꽤 멋진 개념이죠? 단순한 이론이 아닙니다. 행동 과학자들은 우리의 정신 에너지가 휴대폰 배터리와 유사하게 작동한다는 실제적이고 측정 가능한 증거를 발견했습니다. 따라서 코드를 작성하거나 디버깅을 하거나 주의가 산만해지는 것을 방지할 때마다 배터리가 소모됩니다. 15년 동안 인간의 주의력을 연구해 온 글로리아 마크 박사는 이렇게 주장합니다:
- 평균적으로 사람들은 하루에 77번 이메일을 확인합니다.
- 전환 전 화면에 표시되는 시간은 3분 47초에 불과합니다.
- 주의가 산만해졌다가 원래 작업에 완전히 집중하는 데는 25분 정도 걸립니다.
따라서 이메일 확인을 위해 3분 동안 기다리던 빌드가 실제로는 25분이나 걸리는 셈이 됩니다. 하지만 이것이 최악은 아닙니다. 컨텍스트를 전환할 때마다 두뇌는 시스템 2에서 작업하던 경우에도 자동으로 시스템 1로 돌아갑니다. 그렇기 때문에 실수가 발생하고 품질이 떨어지며 결국 다음과 같이 작성하게 됩니다. "오케이 코드."
Is "오케이 코드" 나쁜 코드보다 더 나쁜 코드?
모든 나쁜 코드가 실제 위협이 되는 것은 아닙니다. 다음과 같은 경우가 있습니다. "괜찮은 코드" 가 더 위험할 수도 있습니다. 그 이유는 무엇일까요? 컴파일되고, 테스트를 통과하고, 풀 리퀘스트를 통해 눈에 띄지 않게 빠져나가는 경우가 많기 때문입니다.
따라서 본질적으로 시스템 원 모드로 작성된 코드는 레이더에 걸리지 않을 정도로 좋은 경향이 있습니다. 가장 큰 문제는 정신적 연료가 고갈된 코드 리뷰어입니다. 그들은 그런 코드를 흘끗 보고 이렇게 말합니다, "괜찮아 보이는데."
이러한 파이프라인은 설계상 시스템 1 모델처럼 작동하며, 그 결과 평범한 코드가 평범한 제품으로 바뀌게 됩니다. 카네만은 반복과 피드백 루프가 기술을 시스템 2에서 시스템 1으로 옮길 수 있다고 말하며, 그렇다면 개발자가 본능적으로 더 나은 코드를 작성하도록 훈련할 수 있을까요?
시스템 2를 보호하는 기술
개발자의 효율성을 위해 이 모든 것을 사용하려면 먼저 시스템 2가 개발자에게 가장 강력한 도구이지만 가장 취약한 도구이기도 하다는 사실을 알아야 합니다. 따라서 지속적인 방해 요소로부터 보호해야 하며, 이를 위한 여러 가지 방법이 있습니다.
여기서 중요한 것은 시간 관리입니다. 25분 집중한 후 5분 휴식하는 포모도로 기법 같은 방식도 효과적일 수 있지만, 집중해서 작업하려고 할 때 바로 중단되면 역효과가 날 수 있습니다. 따라서 25분은 최소한의 시간으로 여기고 집중할 수 있는 상태가 되면 계속해야 합니다.
이 외에도, 작업 일괄 처리는 컨텍스트 전환을 방지하여 시스템 2 메커니즘을 보호할 수 있는 훌륭한 기술입니다. 개발자는 다양한 AI 기반 도구를 사용하여 집중 세션을 일정에 추가하는 동시에 회의를 위한 공간을 확보할 수 있으므로 서로 윈윈할 수 있습니다. 다음은 정신적 연료 보호입니다.
이를 위해 절전 모드가 유일한 전체 초기화 옵션입니다. 하지만 유용한 몇 가지 다른 방법이 있습니다. 예를 들어, 커피를 마시고 커피의 효과가 나타날 때까지 몇 분간 누워 있으면 도움이 될 수 있습니다. 그 외에도 마음챙김이나 명상 같은 방법도 있습니다. 히피적인 방법처럼 들리지만 과학이 뒷받침하고 있습니다.
개발자는 실무와 효율성을 개선하기 위해 이렇게 해야 합니다.
무엇보다도 이 모든 것의 기본 원칙은 시스템 2에서 양질의 결과가 나온다는 것, 즉 더 나은 결과를 얻으려면 개발자가 어떤 상태여야 한다는 것입니다. 이를 고려할 때 시도해야 할 몇 가지 주요 사항은 다음과 같습니다:
- 딥 포커스 슬롯을 예약하고 가용성에 따라 자동 조정되는 도구와 시간 차단 방법을 사용하여 두 번 보호 시스템 더 오랜 시간 동안 흐름을 유지할 수 있습니다.
- 자동화 및 AI를 사용하여 반복적인 작업을 자동화 및 AI 도구에 할당함으로써 인지 부하를 줄이면 시간을 절약하고 컨텍스트 전환을 방지하는 데 도움이 됩니다.
- 비슷한 작업을 함께 묶어두면 컨텍스트 전환을 방지하여 정신적 에너지를 절약하고 집중력을 유지하는 데 도움이 됩니다.
- 수면과 마음챙김 기술을 사용하여 재충전하면 인지 자원을 보호하여 시스템 2를 더 오래 유지할 수 있습니다.
- 자신의 전문 분야가 아니고 시간이 너무 많이 걸리는 경우 전문가에게 위임하여 전문가가 더 좋고 더 안전한 안전한 솔루션 더 안전한 솔루션을 만들 수 있도록 전문가에게 위임하세요.
최종 생각
다니엘 카네먼이 개발자를 위해 'Thinking, Fast and Slow'를 쓴 것은 아니지만, 이 책에 담긴 인사이트는 소프트웨어 팀에게 가장 필요한 것입니다. 가혹한 현실은 자동 조종 장치로 코딩할 때 기능적인 결과를 얻을 수 있다는 것입니다. 하지만 표면 아래에 숨어 있는 더 깔끔하고 확장 가능한 솔루션을 놓치게 됩니다.
결국 훌륭한 코드를 작성하는 것은 재능이나 기술과는 큰 관련이 없습니다. 그것은 올바른 사고방식, 즉 시스템 2 사고방식에 관한 것입니다. 오늘날에는 언제 시스템 1에 빠지는지 파악하고 시스템 2에 더 오래 머물 수 있도록 워크플로를 설계하는 것이 경쟁 우위입니다.
그러니 다음에 코딩을 할 때는 잠시 멈추고 자신이 빠르게 코딩하고 있는지, 스마트하게 코딩하고 있는지 자문해 보세요!

