대학원생은 왜 프로그래밍을 해야하는가

프로그래밍은 굉장히 재미있는 놀이이기 때문에 나는 모든 이가 프로그래밍을 즐길 수 있다고 확신한다. 그럼에도 불구하고, 대학원생이 프로그래밍을 해야 하는 이유는 다른 곳에서 찾고 싶다. 대학원생은 바쁘다. 그리고 나는 두번 이상 똑같은 일을 하는 것이 싫고 귀찮았다. 그러나 대학원생에게 귀찮은 일은 일상이다. 그래서 나는 대학원생에게 프로그래밍이 필요하다고 외치고 있다.

프로그램은 컴퓨터가 작업해야 하는 일의 순서를 적어놓은 일련의 지시서라고 생각할 수 있다. 누군가에게 일을 시킬 때, 그 사람이 일을 처음한다면 하나하나 가르쳐 가면서 일을 시켜야 하니, 오히려 내가 하는 게 편할 때도 많지만, 익숙한 사람이라면 내가 하는 것보다 시키는 편이 훨씬 나은 경우가 많다. 심지어 컴퓨터는 반복되는 일을 사람과 비교할 수 없을 정도로 빠르고 실수 없이 처리해낸다.

대학원에서는 교수님 혹은 선배들로 부터 자잘하고 반복되는 일을 위임받는 방식으로 연구를 배우게 된다. 어제 밤새 했던 일을 오늘 회의때 지적받아 또 밤새서 해야하는 게 보통의 모습이다. 프로그래밍은 이러한 반복되는 굴레를 컴퓨터에게 아웃소싱하는 과정이고, 그러한 과정에서 노동자의 측면에서 사용자의 측면으로 생각의 프레임을 달리할 수 있다. 즉 누군가 내게 시킨 일을 나는 컴퓨터에게 시키는 것이다. 컴퓨터는 나보다 훨씬 근면하고, 정확하니까. 일하던 도중 요구사항이 바뀌어 처음부터 일을 다시하라고 해도 컴퓨터는 군소리 없이 일을 한다.

어디서부터 시작해야 하는걸까. 내가 했던 일을 2번 이상 반복해서 하고 있는 자신을 발견하는 순간, 당장 프로그래밍을 배우라. 다만, 절대 정석 책처럼 공부하지 마라.

이공계 대학원생 치고, 프로그램 한줄 안 짜본 사람은 드물다. 반면, 프로그램을 짜서 자기일을 하는 사람 역시 드물다. 고등학교 시절, 사회에 나가면 수학이 필요없다며 수학 무용론을 펼치던 친구들처럼, 프로그래밍 역시 쓸모 없다고 말하는 이가 많다. 나는 잘못 배운가르치는 교육에 문제가 있다라고 생각한다. C나 Java 혹은 포트란으로 배우는 프로그래밍은 대부분의 이공계 학생들에게 사치(교수님의 욕심)다. 좀 더 편하려고 배우는데, 그걸 배우기 위해서 1-2년을 투자하고, 그 기간동안 불편함을 감수해야 한다고 하니, 요즘 이공계 학생들에게는 사치라는 거다. 선배가 시키면 당장 내일까지, 교수님이 시킨 일은 다음주까지 가지고 가야하는데, 어느 세월에 프로그래밍을 배우고 있겠는가. 프로그래밍을 배워서 더듬더듬 3일 걸릴 일을 밤새서 노가다하면 하루면 되는 게 대학원 생활이기에 다들 프로그래밍은 제쳐두고 하루하루를 열심히 살아가게 된다.

그렇기에 쉬운 언어로 시작하라고 조언하고 싶다. 문제를 해결하는 게 중요한 거지. 프로그래밍 언어를 완벽하게 마스터하는 게 목적이 아니기 때문이다.

파이썬을 쓰라!

나는 오랜기간 Java를 써왔지만, 지금 처음 프로그래밍을 접한다면, 파이썬을 배웠을 것이다. Java를 썼던 이유는 8할은 eclipse라는 IDE (개발환경)가 이유였다. 10년 전에는 최고의 툴이었으나, 요즘은 훌륭한 툴이 너무나도 많다. 그래서 사용하기 쉬운 파이썬을 선택하라고 자신있게 권할 수 있다.

반대로 이왕배우는 거 정통으로 배우겠다며, C나 Java로 시작하고 싶다면, 절대 그렇게 하지 말라고 이야기 하고 싶다. 진입장벽이 너무 높다. 그리고 코드 생산성이 너무 떨어진다. 물론 프로그램 자체는 더 빠를 수 있으나, 코딩하는데 20시간 걸리고, 실행시간 1초 걸리는 거랑 코딩하는 데 2시간 걸리고, 실행시간 10초 걸리는 상황에서 어떤 언어가 더 빠르다고 하겠는가. 물론 전자는 C, 포트란, 후자는 파이썬이다.

YouTube나 코드아카데미, 생활코딩 같은 곳에서 수 시간 혹은 수 일만에 기본적인 문법은 익힐 수 있다. 그리고 구글과 스택오버플로우, 그리고 깃허브에는 수많은 사람들이 이미 나와 같은 문제를 해결해 놓았다.

만약 손으로 하루 걸려 할 일을 프로그램을 통해서 2-3일 걸려서 완성했다면, 좋은 시작이다. 곧 수작업이나 프로그램을 통해서 일을 하는 시간은 비슷해질 것이다. 이 단계가 되면, 무조건 프로그래밍을 하라. 일을 하다가 실수를 하더라도, 코드 한줄 바꿔서 다시 돌리면 끝이다. 프로그래밍의 또 다른 장점은 내가 한달을 고생해서 프로그램으로 만들어두면, 내 후배는 하루 이틀이면 내가 했던 일을 그대로 이어 받을 수 있다. (그러면 나는 내가 할 다른 일을 더 시킬 수 있다.)

만약 연구실에서 전해 내려오는 코드가 C 혹은 포트란, 델파이, 비베 등의 고대 언어로 작성되었다면, 그걸 파이썬으로 옮겨보라. 프로그래밍 실력보다도 전공 지식이 일취월장하는 자신을 발견할테니.

요약하면, 동일한 작업을 실수 없이, 언제나 한결같이, 군소리 없이 할 수 있다면, 당신은 천부적인 대학원생이다. 그렇지 않다면, 프로그래밍을 배우라. 그게 대학원에서 살아남는 길이 될 것이다.

그리고 파이썬을 배우라. 그게 싫다면, Matlab, R, Ruby 같은 언어를 배우라. 손으로 노가다하는 시간과 프로그래밍을 통해 일을 해결하는 시간이 같아지는 순간이 중요한 터닝포인트가 될 것이다.


댓글

sungyongk May 31, 2016, 12:39 a.m.

좋은 글 잘 읽었습니다.