brunch

대니얼 카너먼과 펠리너 헤르만스

인문학과 공학의 상호보완적 융합

by 닥터브룩스

인간은 인지 과정을 통해 판단을 내리며, 이 판단의 주체는 상황에 따라 달라질 수 있다. 또한 어떤 문제가 생겼을 때 인간은 공학으로 이를 해결할 실마리를 찾는다. 애플 창업자인 스티브 잡스(Steve Jobs)가 지속적으로 강조한 ‘인문학과 공학의 융합’을 인간의 인지 과정, 문제 해결 과정 그리고 의사결정 단계 관점에서 탐구해 보는 것은 매우 의미 있는 주제라고 생각했다. 그래서 이번 글에서는 이것들의 단순한 결합을 넘어, 두 학문 분야가 어떻게 상호보완적인 관계를 형성하는지를 살펴보려 한다.


출처: Apple Special Events ⓒ2011 Apple.com




인문학은 인간 존재와 삶의 본질을 탐구하며, 공학은 인간의 삶에서 발생하는 문제를 해결하기 위한 실천적 방법을 모색하는 학문 분야이다. 또한, 인문학은 인간의 근원적 문제를 고민하고 해답을 모색하는 학문이며, 공학은 이러한 탐구를 실질적으로 지원하는 솔루션을 제공하는 분야로 볼 수 있다. 이에 따라, 인문학과 SW 개발의 이론을 바탕으로 양자의 융합적 시도를 설명해 보고자 한다. 비록 학문적으로 인문학과 공학은 구분되어 있으나, 궁극적으로 두 학문 모두 인간을 중심으로 연구한다는 점에서 본질적으로 맞닿아 있다고 할 수 있다. 그렇기 때문에 이 두 영역은 서로를 보완하는 훌륭한 협력 파트너라고 평가해 볼 수 있다.


대니얼 카너먼(Daniel Kahneman)은 저서 『생각에 관한 생각(Thinking, Fast and Slow)』에서 인간의 사고 체계를 시스템 1과 시스템 2로 구분하였다. 그의 이론에 따르면, 빠른 판단은 자동적이고 직관적인 시스템 1에 의해 이루어지며, 보다 느리고 신중한 판단은 논리적이고 분석적인 시스템 2에 의해 수행된다. 시스템 1은 빠른 처리 속도를 장점으로 하지만 오류에 취약하며, 시스템 2는 복잡한 문제 해결에 유리하나 높은 에너지를 소모하는 한계를 가진다. 예를 들어 일상적이고 반복적인 작업은 주로 시스템 1에 의해 처리되지만, 새로운 문제에 직면했을 때는 시스템 2가 활성화된다.


한편, 펠리너 헤르만스(Felienne Hermans)는 저서 『프로그래머의 뇌(The Programmer's Brain)』에서 장기 기억 공간(Long-term Memory)과 단기 기억 공간(Short-term Memory)의 역할을 구분하여 설명하였다. 장기 기억은 오랜 시간 동안 알고리즘, 문법, 패턴과 같은 추상적 지식을 저장하는 반면, 단기 기억은 변수명이나 코드 조각과 같은 일시적인 정보를 저장하는 기능을 수행한다. 또한, 작업 기억 공간(Working Memory)은 실제 사고와 문제 해결이 이루어지는 장소로, 복잡한 문제를 처리할 때 부담이 크게 증가한다. 요컨대, 빠른 정보 인출은 단기 기억이, 신중하고 숙고를 요하는 의사결정은 장기 기억이 담당하는 것으로 볼 수 있다.


개발자들은 흔히 단순히 코딩(coding) 기술만으로 충분하다고 생각할 수 있으나, 코딩과 프로그래밍(programming)은 분명히 구별되는 개념이다. 코더(coders)는 컴퓨터가 이해할 수 있는 언어로 명령어를 작성하는 반면, 프로그래머(programmers)는 이러한 명령어를 창의적이고 체계적으로 설계한다. 간단한 코드 제를 볼 것이다. 아래는 C언어로 작성된 간단한 출력 코드이다.


#include <stdio.h>


int main()

{

printf("이 문장을 출력하시오");

return 0;

}


위 코드는 단순히 "이 문장을 출력하시오"라는 문장을 출력한다. 컴퓨터는 #include 지시문 등 내부 과정을 사용자에게 보여주지 않으며, 최종 출력 결과만을 제시한다.


초보 개발자들은 이러한 코드를 이해하는 데 시스템 2가 활성화될 것이다. 익숙하지 않은 코드 구조와 문법을 처리하는 과정에서, 초보자는 장기 기억에 저장된 지식이 부족하여 단기 기억을 활용해 정보를 인출하려 할 것이다. 반면, 숙련된 개발자는 시스템 1이 작동하여 해당 코드를 직관적으로 이해하고, 장기 기억 공간에 저장된 풍부한 경험과 지식을 신속하게 활용할 수 있을 것이다. 예를 들어, ‘int main()’이라는 표현을 보자마자, 프로그램의 진입점을 의미하는 코드 구조임을 직감적으로 이해할 것이다.


이와 같은 인문학적 통찰은 코드를 단순한 명령어 집합이 아닌, 인간과 기술의 상호작용으로 바라볼 수 있도록 한다. 가독성 높은 변수명이나 사용자 친화적인 에러 메시지의 설계는 인간의 인지적 편향을 고려한 인문학적 접근이 기술 설계에 적용된 사례라고 볼 수 있다.

위 예시는 단 6줄의 코드이지만, 시스템 1과 시스템 2, 그리고 장기 기억 공간과 단기 기억 공간이 어떻게 작동하는지를 충분히 보여준다. 더 복잡한 수백, 수천 줄의 코드에서는 이들 시스템과 기억 공간 간의 상호작용이 훨씬 더 복잡하게 나타날 것이다.

프로그래밍 분야뿐만 아니라, 사용자 경험(UX) 설계(기술적 정교함과 미적·감성적 요소의 통합)나 인공지능 윤리(편향된 데이터에 의한 기술 개발 방지) 영역에서도 인문학과 공학의 융합은 매우 중요한 역할을 수행할 수 있다.


인문학은 인간의 인지 과정을 이론적 관점에서 탐구하고 실험을 통해 이를 검증할 수 있으며, 공학은 이러한 이론과 실험 결과를 실제 연구 및 개발 과정에 적용하여 가설을 검증하고 결론을 도출하는 데 이바지한다. 단순히 코드를 코드로만 인식하는 것이 아니라, 코드를 분석할 때 인간의 뇌가 어떻게 작동하는지를 이해한다면, 코드의 구조화 및 문제 해결 과정에 있어 보다 효율적이고 체계적인 접근이 가능할 것이다. 또한, 다양한 환경과 조건에 따라 뇌의 인지 과정을 적절히 적용할 수 있는 기회를 얻을 수 있다.


결국, 스티브 잡스가 강조한 인문학과 공학의 융합은 단순한 결합을 넘어 상호보완적인 관계를 통해 인간 중심의 기술을 창조하는 과정임을 시사한다. 단일 현상에 근거하여 성급하게 판단하는 것이 아니라, 전체적인 맥락을 바라보고, 나아가 더 큰 미래를 조망하려는 노력이 필수적이라고 할 것이다.





keyword
작가의 이전글사용자 맞춤의 진화