IT분야에도 IT만의 언어가 있다.
분야마다 사용하는 전문적인 언어가 있습니다. IT분야도 마찬가지로 IT만의 언어가 있습니다. 이런 IT 언어에 대해서 짧게 생각을 공유할까 합니다.
외국 사람하고 대화를 하려고 해도, 영어나 그 나라 언어를 배워야 대화 할 수 있습니다. 또는 다른 사람과 소통을 하려면 그 사람에 대해서 어느정도 알고 있거나, 그 사람이 종사하는 직업군이나, 취미를 알아야 잘 소통할 수 있습니다. 아무것도 모르는 상황에서 무작정 대화나 소통하려고 하면, 이해도 안되고, 서로 불신만 쌓이다 제 풀에 지쳐 포기하는 상황이 발생합니다.
마찬가지로 IT라는 세상과 대화하고 소통하기 위해서는 IT에서 사용되는 언어나 용어를 알아야 대화가 되고, 이해가 쉽게 될 수 있습니다.
언어는 단어들의 조합입니다. 단어를 모르면 의미를 알 수가 없습니다. 그렇다고 단어만 주구장창 파라고 하는 것이 아닙니다. 모르는 단어도 문장에서 의미를 유추할 수가 있습니다. 유추는 인간이기 때문에 가능한 얘기입니다. 컴퓨터는 유추라는 것 자체를 모릅니다. AI 인공지능이 유추할 수 있겠지만 인공지능 자체도 인간이 그렇게 유추하도록 프로그래밍한 것에 지나지 않습니다. 자기 학습 능력이 가능하도록 한다는 것 자체도 인간이 먼저 프로그래밍으로 만든 것입니다.
단어 하나에도 여러가지 의미가 있고, 사람마다 느끼고, 이해하는 것도 틀립니다. ‘사과'라는 단어만 주어졌을때 어떤 사람은 과일을 생각할 수 있고, 과일 중에서는 빨간색 또는 시안 블루색을 생각할 수도 있습니다. 또 다른 사람은 미안한 감정을 생각할 수도 있습니다. 더 나아가 과일에 대한 트라우마가 있는 사람이 있을 수도 있고, 왠지 내가 낮춰지는 듯한 느낌을 가지는 사람도 있을 수 있습니다. 특히나 정치인 사전에는 ‘내 사전에 사과는 과일일 뿐 그 어떤 의미도 아니다'라고 써 있을 수도 있습니다.
이처럼 하나의 단어에 다양한 의미와 감정이 사람마다 틀립니다. 일상 생활에서 쓰는 단어 조차도 서로 이해하는 범위가 틀린데, IT에서 사용되는 단어를 모르고 접근하면 초반부터 이해도 안되고, 어렵게만 느껴질 수 있습니다. IT는 컴퓨터로 이루어진 세상입니다. 컴퓨터는 정확한 것을 추구합니다. 그렇기에 IT에서 사용되는 언어도 정확한 의미가 있습니다. 애매한 의미로 접근하게 되면 혼동만이 있을 뿐이고, 소통은 둘째치고, 대화 자체가 힘듭니다.
20년 동안 이 분야에 있으면서 수 많은 개발자분들을 만났고, 강의를 하면서 수 많은 학생들을 만났습니다. 컴퓨터 프로그래밍이 어렵긴 하지만, 정작 제일 어려워 하는 부분은 소통입니다. 소통이 되지 않으니, 강사가 우리나라 사람이 아닌 것 같고, 무슨 의미인지 이해도 안되고, 이해가 안되니 코드를 외우고, 이해가 안된 상태에서 외운 코드를 적용하려니 실행도 안되고, 결국 포기하기에 이릅니다.
영어, 중국어, 스페인어 등등 다른 나라 언어를 외운다고 해서 대화나 소통이 되는 것은 아닙니다. 철 지난 우스게 소리로 ‘Are you OK?’라고 물어보면 ‘Fine Thank you and you?’만 남발한다고 소통이 되는건 절대 아닙니다. 지금은 어떨지 모르지만, 90년대 이전에 태어난 사람들은 외우는 것에 익숙해져 있습니다. 생각이라는 걸 하지 못하게 하는 교육에 익숙해져 있습니다. 외우지 않으면 아무것도 못할 것 같은 강박관념에 빠져 있는지도 모릅니다. 의미도 모르고 무조건 외우고 봅니다. 외우는게 정답이었습니다.
지금은 외우기만 하면 폭망합니다. 특히나 IT에서 외운다는건 아무 짝에도 쓸모가 없습니다. 외우거나 계산하는건 컴퓨터에 맡기면 됩니다. 우리는 컴퓨터로 이루어진 IT라는 세상에서 대화하고 소통하고 흐름을 이해하고 흐름을 만들어 가면 됩니다.
단어나 문장을 시험을 보듯 외운다는 것을 지금 부터 억지로라도 버리시길 바랍니다. 왜 이 단어가 만들어졌는지, 이 단어가 의미하는 것은 무엇인지 파악하고 이해하는 것이 무엇보다 중요합니다. 일상에서 흔히 사용하는 단어도 한 번 정도는 의미를 생각해 보면, 더 큰 이해에 다다르게 됩니다.
IT인데 무슨 인문학같은 소릴 하고 있나 생각할 수도 있습니다. IT라는 세상도 결국 인간이 만들어 낸 세상입니다. 인간과 밀접한 관계가 있는 세상이니 만큼 인문학적인 요소가 많다기보다 거의 대부분이라고 개인적으로 생각합니다.
왜 이렇게 장문으로 단어나 언어의 중요성을 강조하는지 일례로 위키피아에 정의되어있는 네트워크를 보겠습니다.
컴퓨터 네트워크(computer network) 또는 컴퓨터망은 노드들이 자원을 공유할 수 있게 하는 디지털 전기통신망의 하나이다. 즉, 분산되어 있는 컴퓨터를 통신망으로 연결한 것을 말한다. 컴퓨터 네트워크에서 컴퓨팅 장치들은 노드 간 연결(데이터 링크)을 사용하여 서로에게 데이터를 교환한다. 이 데이터 링크들은 유선, 광케이블과 같은 케이블 매체, 또는 와이파이와 같은 무선 매체를 통해 확립된다.
데이터를 출발시키고 라우팅시키고 종단시키는 네트워크 컴퓨터 장치들은 네트워크 노드로 부른다. 노드들은 개인용 컴퓨터, 전화, 서버, 네트워크 하드웨어와 같은 호스트를 포함할 수 있다. 이 두 장치들은 서로 직접 연결 여부에 관계 없이 하나의 장치가 다른 장치와 정보를 교환할 수 있을 때 함께 망으로 묶인다. 대부분의 경우 애플리케이션에 특화된 통신 프로토콜은 다른 더 일반적인 통신 프로토콜에 비해 계층화된다.
대부분 한글인 듯 한데.. 어떤 말인지 읽기도 힘들 것 같습니다. 대충 ‘노드', ‘컴퓨팅', ‘데이터 링크', ‘라우팅', ‘서버', ‘하드웨어', ‘호스트', ‘애플리케이션', ‘프로토콜', ‘계층화' 등등과 같은 단어를 이해하지 못한다면 위의 문장은 이해는 고사하고 짜증만 유발시키는 문장입니다. 그런데 아쉽게도, 대부분의 IT서적들은 이런식으로 서술되어 있습니다. 그러다보니 책을 펴는 순간 열정에 소화기를 뿌려버리는 효과를 자아냅니다. 마치 ‘IT는 힘들고 지금도 사람이 넘쳐나니 함부로 들어오지 마!’라고 초기에 열정을 꺾어 버리는 것 같습니다.
위의 정의를 일반 사람도 알아듣게 풀어서 쓰면 이렇게 표현할 수 있을 것 같습니다.
컴퓨터 네트워크 또는 컴퓨터망은 서로 통신할 수 있게 연결되어 있는 기계 장치(노드)들이 파일이나 정보(자원)을 공유할 수 있게 하는 디지털 전기통신망의 하나이다. 즉, 분산되어 있는 컴퓨터를 통신망으로 연결한 것을 말한다. 컴퓨터 네트워크에서 컴퓨터로 작업을 수행(컴퓨팅)하는 장치들은 서로 통신할 수 있게 연결되어 있는 기계장치(노드) 간 연결하여 서로에게 데이터를 주고 받는다. 이 데이터 연결들은 유선, 광케이블과 같은 케이블 매체, 또는 와이파이와 같은 무선 매체를 통해 이루어진다.
데이터를 출발시키고 최적의 경로를 선택(라우팅)하고 종단시키는 네트워크 컴퓨터 장치들은 네트워크 연결장치(노드)로 부른다. 연결 장치들은 개인용 컴퓨터, 전화, 서비스를 제공하는 컴퓨터(서버), 네트워크 하드웨어와 같은 통신상에서 연결할 수 있도록 고유번호를 가지고 있는 장치(호스트)를 포함할 수 있다. 이 두 장치들은 서로 직접 연결 여부에 관계 없이 하나의 장치가 다른 장치와 정보를 주고 받을 수 있을 때 함께 망(그물)으로 묶는다. 대부분의 경우 컴퓨터에서 실행되는 프로그램(예: 엑셀, 파워포인트, 알집 등)(애플리케이션)에 특화된 통신 규약(약속한 규칙 - 프로토콜)은 다른 더 일반적인 통신 규약(약속한 규칙)에 비해 계층적으로 구분한다.
단어들을 풀어서 쓰니 같은 내용이 반복되어 읽기가 더 어렵게 느껴집니다. 문장이 길어지면 이해력이 떨어지고, 지루한 문장이 됩니다. 또한 같은 내용이 여러번 반복되도 지루해집니다. 이런 반복되는 내용을 하나의 단어로 정의하고 만들어야 문장도 짧아지고, 간결해지기 때문에 대부분 함축된 단어들로만 쓰여집니다.
그냥 만들어진 단어는 없습니다. 단어마다 의미를 가지고 있기 때문에 단어를 이해하지 못하면 문장도 이해를 못합니다. 어느 분야건 그 분야에서 사용하는 단어들은 존재합니다. 단어의 의미를 먼저 파악해야 이해가 빠르고, 쉽게 접근할 수 있을 거라고 봅니다.