본문 바로가기

잡담

프로그래밍을 다른 사람들과 공유한다는 것

얼마 전 한 블로그에서 이런 글을 보았다.

개발자들은 저주 받았습니다. 자기 일하는 것을 주변의 다른 사람들(개발을모르는)과 공유하지 못합니다. 아버지 어머니는 도대체 내 딸이 무슨 일을 하는지 모릅니다. 저는 이 벽을 넘어서 보고 싶습니다.내가 평소 하는 일을 조금이라도 다른 사람들과 공유할 수 있기를 기대합니다.

제가 해보고 싶은 것은, 바로 컴퓨터프로그래밍을 아는 사람과 모르는 사람이 함께 섞여서 서로 학습하고 또 즐거운 시간을 보내는 겁니다. 그 사람들이 모여서 정치이야기나 탤런트 스캔들 이야기, 혹은 유치한 게임 외에 도대체 뭘 같이 할 수 있을지 상상하기도 힘들죠? 저는 확신을 갖고있습니다. 이것은 가능하며, 엄청나게 재미있고 유익하며 모두에게 큰 계발을 줄 것이라는 것을. 예를 들면 소프트웨어 전문가들,하드웨어 전문가들, 예술가들, 일반인들이 섞여서 2박 3일간 같이 미디어 아트를 배우고 실험하고 협력해서 뭔가 만드는 걸 할수도 있겠죠. 여기에 대해서는 뭔가 작당하고 있는 것이 있습니다. 차후에 성과가 있으면 공유하도록 하겠습니다.

by 김창준, from Agile blog

정말 공감가는 내용이다. 지난 주 같은 기숙사동에 사는 친구들과 밥 사먹으러 나가면서 했던 얘기 중에, 다른 과 아이들에 비해서 특히 전산과 다니는 사람들은 전공에 관한 얘기를 많이 하는 것 같고, 그럴 때마다 다른 과 사람들은 대화에 참여하기가 힘들어진다는 것이었다.

사실, 물리·수학·생물·화학 같은 것만 해도, 기본적으로 과학고를 나오고 1학년 공통 기초과목들을 제대로 들었다면 학부생 수준에서는 대략 말이 통하게 마련이다. 그런데 유독 전산―그러니까 프로그래밍―쪽은 그렇질 못하다. 물론 기초과목으로 Java를 가르치는 '프로그래밍 기초'가 있긴 하지만, 프로그래밍이라는 것 자체가 어렸을 때부터 공부해왔던 '교과목'들과는 많이 다른 성격을 띠기 때문이다. 프로그래밍 문법을 익히거나 컴퓨터의 역사를 배우는 것은 정말 그런 교과목을 익히는 방식으로 가능할 지 모르겠지만, 실제로 전공 이상의 수준에서 프로그래밍을 다룰 때는 그런 것들과 그에 대한 공부 방식은 거의 도움이 되지 않는다. 몇 가지 기본적인 룰 안에서 고차원적 문제를 해결하기 위한 알고리즘을 생각해내는 것이라든가, 코딩 과정에서 발생하는 수많은 삽질과 디버깅, 경험에서 우러나오는, 마치 인간 라이브러리인 양 갑작스레 툭툭 튀어나오는 geek스런 답변들…. 조금이라도 이런 것이 대화에 끼어들게 되면 비전산전공자(..)들은 마치 안드로메다 관광열차를 타는 듯한 느낌을 받는다(고 한다 -_-).

그나마 비교적 균질하다는 같은 KAIST 학생들끼리도 그러할진데, 하물며 같은 과학이나 공학 분야를 전공하지 않은 부모님이나 친척, 다른 학교/과에 다니는 친구들, 다른 직업을 가진 사람들은 어떠하겠는가? 그래도 나같은 경우는 부모님과 대화를 많이 하는 편이라 어렸을 때부터 계속 관심사의 변화를 서로 추적·공유해왔기 때문에 전문적인 내용은 몰라도 대충 서로 뭘 하고 있다는 것 정도는 이해하지만, 같은 전산 전공 친구들도 보면 '공부'는 꼭 책상에 앉아서 책펴고 하는 것이라는 생각에 집에서 컴퓨터를 못하게 한다거나 하는 경우를 볼 수 있었다. 아마도 현재 개발자라는 직업을 가진 분들 중 다수가 어린 시절 이런 경험을 하셨으리라 짐작한다. 요즘은 많이 바뀌었지만 대신 '그런 3D 업종을 누가 하냐'라는 이야기가 많아진 듯하다.

프로그래밍이라는 그 자체를 들여다보면 매우 재미있는 활동이다. 칙센트미하이 교수가 쓴 『Flow』라는 책에서 말하는 '플로우' 상태에 빠기지 딱 좋은 예가 바로 프로그래밍이다. 다만 개발자가 3D 업종이 되는 건 그러한 플로우 상태를 방해하는 외적 요인(흔히 말하는 갑을병정 관계 같은 것들)이 프로그래밍의 자기목적성을 해치기 때문이다. 어쨌든, 끊임없이 눈앞의 작은 목표(기능·함수 단위의 구현 따위)를 두고 제대로 실행되었을 때의 적절한 피드백 타이밍 등은 플로우의 조건으로써 충분하다. 물론, 수학이나 물리학 같은 다른 이공계 과목들에서도 충분히 이런 플로우는 가능하다. 문제는, 전산 전공자가 다른 학문에서의 플로우 상태를 이해하거나 경험하기는 비교적 쉬운데, 반대의 경우는 힘들다는 것이다. 왜 그런 것일까?

내가 생각하건대 다양한 원인 중에서 하나를 꼽자면 교육의 문제라고 볼 수 있을 것이다. 주변에서 '전산 잘 하는 애들 보면 머리가 굉장히 좋은 것 같애'라는 말을 심심찮게 들었는데, 그렇게 말하는 사람들의 생각을 가만히 따져보면 스스로 터득해온 과정을 놀라워하는 경향이 있다. 대체로 중고등학교 무렵에 프로그래밍을 잘 하는 사람들은 거의 독학이기 때문이다. 나도 체계적으로 전산 지식을 배운 건 대학 와서이지 그 전엔 고등학교 때 C++을 거의 문법 수준으로만 배운 게 전부였다. 하지만 프로그래밍 자체는 초등학교 때 이미 시작했다. (물론 올림피아드 준비 등으로 학원에 다니거나 집중 훈련을 별도로 하는 경우도 있다.)

사람들은 왜 그 과정을 놀라워할까? 프로그래밍을 책만 보고 공부하는 건 마치 피아니스트가 악보만 읽고 곡을 끝내는 것과 같다. 실질적인 스스로의 노력과 의지에 의한 연습 과정(우리 식으로 말하면 삽질-_-)이 많이 필요하다. 적어도 대학 입학 전까지의 다른 분야들은 그러한 삽질 없이 외부 의지(부모님의 압박이나 학원의 압박 등)로 때워지(는 것처럼 보이)고, 그렇게 공부해왔던 사람들에겐 그 누구한테도 배우지 않고 혼자 그 복잡한 프로그래밍을 터득해가는 과정이 신기해보일지도 모르겠다. 하지만 다른 분야들도 프로그래밍을 공부하는 것과 같은 방식으로 이루어지는 것이 궁극적으로 가장 바람직한 방향일 것이다. 그만큼 응용력과 창의력이 높아질 수 있다.

한편, 프로그래밍을 하는 사람들에게 발생하는 문제점도 있는데, 바로 인간 관계와 사회성의 결여다. 보통 학생 시기에 프로그래밍을 독학하는 사람이 자료를 얻는 출처는 거의 90% 이상이 인터넷 커뮤니티나 각종 레퍼런스 사이트다. 그러다보니 아무래도 온라인 상의 활동에 치중하게 되고, 독학의 특성 상 누군가 옆에서 체계적으로 지도해주지 않기 때문에 한쪽으로 치우친 성향을 갖기 쉽다. 글로 대화하는 능력은 뛰어난데 실제 얼굴을 마주보고 대화하는 능력이 점점 떨어지고, 점점 더 논리적으로만 소통하려고 하게 된다. 이것은 주변인들이 '재미없는 사람'으로 인식하게 되는 가장 큰 요인이다. 또한 플로우에 쉽게 빠지는 만큼, 운동이나 친구들과의 놀이 등 다른 사회적 활동에 소홀하게 되는 경우가 많고, 사람마다 다르긴 하지만 일반적으로 학과 성적은 떨어지는 경향이 나타나기 때문에 부모들과의 관계도 나빠진다.

동아리 프로젝트도 해보는 등 여러 사람들과 함께 프로그램을 짜면서부터, (나를 포함해) 사람들이 능력이 안 되어서가 아니라, 순전히 의사소통 방법의 미숙함에서 오는 문제가 굉장히(사실은 거의 다) 많다는 것을 깨달을 수 있었다. 같은 프로그래밍을 하는 사람들끼리도 발생하는 문제인데 다른 사람들과 대화할 때는 더욱 심한 것이 당연한 것이다. 뭐랄까, 이런 면에서 생각해본다면 프로그래머와 일반인들 사이의 가교를 놓아줄 수 있는 사람이 필요할 것 같다는 생각마저 든다. (최근의 신생 직업 중 하나인 Web Publisher도 개발자와 디자이너 사이의 아교 역할을 하는 것처럼.)

결론적으로 창의성을 기를 수 있는 스스로의 의지와 노력에 의한 공부, 그 과정에서 지나치게 불필요한 삽질을 막아주는 적절한 지도자가 있다면 다른 학문을 배우는 것이 프로그래밍을 배우는 것과 보다 유사해질 것이고, 전산 전공자들과 타 전공자들 사이의 간극을 좁히는 데 도움이 될 것이다. 또한 프로그래밍을 독학한 사람들에게서 나타나는 사회성 부족을 채우기 위해서도 절제력을 길러줄 수 있는 지도가 필요할 것이다. 이와 함께 발전적인 토론과 전문 지식의 의사소통 방법도 체계적인 교육이 꼭 필요하다. (물론 이것만이 전부는 아니겠지만, 프로그래머의 긍정적 geek스러움이라는 것의 원천이 어디서 나왔는지, 또 반대로 프로그래머는부정적 의미의 geek스러움에서 벗어나기 위해서 어찌해야 할 지 서로 이해하는 데 도움을 줄 것이다) 현재까지 내가 보고 듣고 느낀 교육과정이 양쪽에게 모두 심각한 문제가 있다. 이런 문제들이 지금 우리가 느끼는 프로그래머와 일반인들 사이의 괴리감·이질감을 발생시킨 여러 원인들 중 하나다.

다시 처음 이야기로 돌아와서, 대안언어 축제와 그와 비슷한 행사들을 통해 전산 전공자와 비전공자 사이들이 함께 뭔가 창조적인 활동을 하게 하고 싶다는 김창준 님의 그 글은, 지금의 다소간 답답한 상황을 풀어줄 수 있는 아주 긍정적인 시도로 평가하고 싶다. 비록 근본적으로 사람들의 인식을 바꿔놓기는 어렵지만(위에서 언급한 교육의 문제 해결은 아니므로), 그런 활동에 참여하는 프로그래머나 다른 분야 사람들 모두 새롭고 놀라운 경험이 되리라 믿는다.

덧붙여, 내가 미래에 하고 싶은 일이 바로 그런 융합이다. 단순히 프로그래밍 혹은 전산 분야만 하기보다는, 전혀 다른 분야의 사람들과 협력하여 창조적인 일을 해보는 것이다. 프로그래밍 그 자체도 무척이나 매력 있는 활동이지만, 그보다는 내가 가진 다양한 재능과 관심―피아노 연주, 작곡·편곡, 그림 그리기, 디자인, 생물학, 신경과학 및 인지과학, 물리학과 천문학, 로봇공학과 기계공학 등―들을 하나도 남김없이 충분히 활용하고 싶다. 내가 가진 전산학과 프로그래밍에 대한 지식과 기술들은 그런 활동을 하는 데 기초가 되어줄 수 있을 테고, 그동안 살면서 지속적으로 다른 분야에 관심을 가져왔던 것은 아교 역할을 해낼 수 있을 것이다.