알아야 할 것이 너무 많아, 깊고 넓게!

'다학제적(Multidisciplinary)'이라는 이야기를 참 많이 합니다. 여러 분야를 폭넓게 알아야 할 것 같고 뭔가 있어 보이기도 합니다.

 

제가 전공한 산업공학도 다학제적 속성을 지향하는 대표적인 분야입니다. 전통 분야인 자원관리, 생산자동화, 인간공학, 경영정보시스템(MIS) 등의 4대 분야를 비롯해 전산, 전자, 로보틱스 등 다양한 과목들을 수강했던 기억이 납니다.

 

왜 다양한 분야를 공부해야 할까요?

 

'시스템적인 사고'를 기르기 위해 시스템의 전반적인 내용을 이해하는 것이 필요하기 때문입니다. 시스템적 사고란, 부분의 개선이 반드시 전체의 개선으로 이어지는 것은 아니며, 전체를 바라보는 시각을 가져야 한다는 것입니다.

굵기가 서로 다른 파이프 모형 ©강동석위 그림과 같은 파이프가 있다고 합시다. 파이프에 흐르는 물의 양을 늘리려면 어떻게 해야 할까요? ①~⑥ 중 파이프 간격이 좁은 부분들을 넓혀야겠죠. 만약 ① 부분을 넓히면 흐르는 물의 전체 양이 달라질까요? 시스템적 관점에서 보면 ③이 병목 지점입니다. 이 부분이 해결되지 않으면 다른 부분을 넓혀도 큰 효과가 없습니다. 이러한 시각이 시스템적인 사고의 단순한 예시입니다.

 

하지만 다양한 분야에 관여하다 보면 모든 것을 깊이 이해하는 것은 현실적으로 불가능합니다.

많은 분야를
이해하기 위해서는
오히려 하나를
깊이 알아야 합니다

프로그래밍 언어를 배우는 과정을 예로 들어 설명하겠습니다. 아마도 독자 중 공학분야와 관련이 있는 분들은 쉽게 공감할 겁니다. 저는 대학교 1학년 때 'Fortran'*이라는 오래된 프로그래밍 언어를 배웠습니다. 프로그램 문법(syntax)을 배우고 이를 이용해서 다양한 문제를 풀었습니다. 이 과정에서 핵심은 알고리듬(로직)이고 프로그래밍 언어는 이를 표현하는 수단에 불과한 것이라는 점을 깨닫게 되었습니다.

* 1954년 IBM 704에서 과학적인 계산을 하기 위해 시작된 컴퓨터 프로그램 언어

 

Fortran 언어에 대한 수준이 높아지니 이후 Assembly, Prolog, C, C+, Database, SQL 등 수많은 프로그래밍 언어를 배우는 데에는 시간이 오래 걸리지 않았습니다. 왜냐고요? 잘 아는 것을 중심에 두고 상호 연결되는 내용을 연결해서 잘 아는 것을 더 크게 넓혔기 때문입니다. 프로그래밍 언어는 제 머릿속에 있는 알고리듬을 표현해 주는 수단에 불과하므로 A 언어에서 표현했던 방식이 B 언어에서는 이렇게 표현된다는 형태로 연결하기만 하면 됩니다.