Extra Form
하재승.JPG

초등학교, 중학교, 고등학교에 소프트웨어 코딩 교육이 정규 과목으로 지정됐다는 소식, 혹시 알고 있나요? 초등학생은 2017학년도, 중학생은 2016학년도, 고등학생은 2018학년도부터 학교에서 공교육으로서 ‘프로그래밍’을 배운다고 합니다. 


미래에 각광 받는 직업으로써 선행학습을 시키는 게 아니냐고요? 교육부에 따르면 코딩의 메커니즘 속에서 창의력과 문제 해결력을 향상시키고, 주어진 과제를 자신 만의 방법으로 해결하게 끔 생각의 힘을 키우게 하는 게 주 목적이라고 합니다. 

제가 어릴 때만 해도 워드프로세서, 엑셀 공부하는 게 전부였는데, 요즘에는 코딩도 가르쳐준다니, 프로그래밍에 관심을 가졌다가 여러 이유로 포기한 저로서는 정말 부러울 따름입니다.

1.jpg


이런 시류에 따라 청소년 프로그래머들을 위한 대회도 개최됐습니다. 8월 30일부터 시작된 ‘넥슨 청소년 프로그래밍 챌린지’가 바로 그것이죠. 12~18세의 청소년을 대상으로 하는 만큼, 인재 육성보다는 게임과 연관된 재미있는 문제들을 출제해 프로그래밍에 대한 진입 장벽을 낮추고 대중화하는 것을 목적으로 진행되는 대회입니다. 

그리고 오는 10월 22일에는 약 50:1의 경쟁률을 뚫고 올라온 상위 득점자 50명이 아이디어를 겨루는 본선 대회가 개최될 예정입니다. 

게임어바웃은 본선에 앞서 대회 개최 및 문제 출제에 참여한 넥슨 하재승 소프트웨어 엔지니어를 만나봤습니다. 대회에 대한 이야기는 물론, 선배 프로그래머로서의 아낌 없는 조언까지 들을 수 있었는데요, 지금 만나보시죠!

하재승.JPG

<넥슨 하재승 소프트웨어 엔지니어>


 
간단하게 자기 소개 부탁드립니다. 
안녕하세요. 넥슨 하재승 소프트웨어 엔지니어입니다. 게임 회사 다니면서 게임 아닌 것만 만들고 있는 프로그래머입니다. 

게임회사에서 게임이 아닌 것만 만든다니... 
최근 경력 중에 6년 정도는 전부 그랬던 것 같습니다. 게임 제작에 직접 참여하기 보다는 개발툴을 만드는 일을 했죠. 엔씨소프트부터 네오플을 거쳐 넥슨에 왔는데, 그 과정에서 주변 개발팀에 모두에게 도움이 될만한 걸 만드는 일을 했습니다. 

프로그래머라는 꿈을 가지게 된 특별한 계기가 있을까요? 
가장 큰 이유는 역시 ‘게임을 만들고 싶어서’입니다. 좀 더 자세히 이야기하면, 초등학생일 때 여러 게임을 했는데, 그 때 책을 하나 접했었어요. ‘게임을 만들자’, 그런 제목의 책이었는데, 이 책을 통해 ‘프로그램을 배우면 게임을 직접 만들 수도 있구나’하는 사실을 알게 된 게 컸죠. 
어릴 때니까 처음부터 멋진 걸 만들 수는 없었지만, 작은 무언가를 만들어서 움직이고, 소통하면서 나만의 세계를 만들어내는 게 재미있었어요. 그렇게 계속 프로그래밍을 해오고 있습니다. 

흔히 ‘코딩은 어렵다’라고 많이들 이야기합니다. 프로그래머님은 초등학생 때부터 시작했다고 했는데, 어떠셨나요? 
원래 어릴 땐 겁이 없습니다.(웃음). 옛날 컴퓨터는 지금 컴퓨터보다 성능이 안 좋았어요. 화면에 뭘 무식하게 그리려고 하면 엄청 느리고 그랬죠. 빠르게 하려면 어셈블리어*도 공부해야 했죠. 
근데 이걸 어렵다고 생각하기보다는 ‘하고 싶은 걸 하기 위해 필요한 것’이라고 생각했어요. 어렵다고 이야기하는 건 스스로 벽을 만드는 거니까요. 제일 큰 목표는 프로그래머가 아니라 ‘게임을 만들고 싶다’였으니, 그 과정을 어렵다고 생각하진 않았어요. 어려운 것일수록 도전하는 개인적인 성향도 조금 영향이 있었던 것 같네요. 

게임을 만들고 싶어서 시작했는데, 지금은 게임이 아닌 것만 만들고 있다고 하셨습니다. 게임을 만들고 싶진 않으신가요? 
처음 게임 회사에서 일하기 시작했을 때는 게임 프로젝트에 참여했습니다. 던전앤파이터 최적화 진행하면서 유저 반응 보는 게 즐겁기도 했지요. 그렇지만 정말 원하는 건 더 높은 곳에 있습니다. 시드마이어의 문명처럼 내 이름이 들어간 게임을 만들고 싶거든요. 
하지만 지금 시대에서 나만의 게임을 만들려면 스스로 만드는 형태가 될 수 밖에 없어요. 그래서 지금은 회사일 하면서 공부하고 있습니다.

*어셈블리어: 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어. 인간이 보기 힘든 기계어를 인간의 관점에서 보기 위해 만들어진 프로그래밍 언어.

3.jpg


 
취미도 프로그래밍이라고 들었습니다. 즐겁게 프로그래밍을 할 수 있는 프로그래머님만의 특별한 방법이 있나요? 
회사에서 뭔가 맡아서 하는 건 일이지만, 내가 만들고 싶어서 하는 건 일이 아닙니다. 아마 다른 분야도 마찬가지일 거에요. 아무래도 제가 잘 하는 게 이쪽이다보니, 시간 날 때 활용하는 게 취미가 된 것 같습니다. 
그리고 단계마다의 즐거움보다는 최종 목표에서의 재미를 추구하는 쪽에 가까운 것 같습니다. 예를 들어, 악기 연주를 잘하기 위해서는 연습을 해야하는데, 연습 과정이 즐겁다기보다는 최종 결과를 위해 노력하게 되는 것처럼요. 
요즘에는 새로운 걸 시도해보거나, 처음 써보는 언어를 활용하거나 하는 식으로 중간 과정에서도 새로운 재미를 찾으려 하고 있습니다. 

자신이 만든 결과물 중에 가장 마음에 드는 것이 있다면요? 
사실 마음에 들고 안 들고는 다른 문제입니다. 할 때는 재미있으니 일단 만들거든요. 그렇게 만든 것 중에 인기를 끌었던 게 깃허브(GitHub)*에 올렸던 웹서버 제작용 라이브러리에요. 프로그래밍 언어에도 쉬운 게 있고 어려운 게 있는데, C++이 쉽고 파이썬이 어렵거든요. 제가 만든 건 파이썬 쓰듯 C++에서 웹서버를 만들 수 있었죠. 첫 눈에 봐도 누구나 쉽게 쓸 수 있는 걸 만들었더니 전세계적으로 반응이 있었습니다.

좀 더 쉽게 설명해줄 수 있는가? 한 번에 와닿지를 않아서... 
C++이 논문에 가깝다면, 파이썬은 가벼운 수필 정도의 스트레스 레벨...이라 보시면 될 것 같습니다. C++은 속도를 위해 다른 걸 버린 쪽에 가까워서, 작은 실수로도 프로그램 자체가 죽어버리는 일이 많아요. 또, 같은 양의 일을 표현할 때도 C++은 어디서 뭘 하는지 모두 설명해줘야 하지요. 
이에 반해 파이썬은 C++보다는 작성하기 쉽고, 표현력도 강합니다. C++이 100줄에 걸쳐 설명해야 하는 걸 파이썬은 10줄 만에 쓸 수 있는 거죠. 

그럼 엄청 대단한 거 아닌가요?
깃허브에 등록된 라이브러리가 수만 개가 넘는데, 그 중에서도 100위 안에 들 정도의 LIKE를 받았었죠.

*깃허브(GitHub): 분산 버전 관리 툴인 깃(Git)을 사용하는 프로젝트를 지원하는 웹호스팅 서비스

bandicam 2016-10-18 11-14-33-968.jpg

<깃허브에 등록된 하재승 소프트웨어 엔지니어의 웹서버 제작용 라이브러리 'Crow'. 저는 봐도 잘 모르겠습니다...(링크: https://github.com/ipkn/crow)>


 
제 1회 청소년 프로그래밍 챌린지가 개최됐습니다. 관련해 간단한 소감 부탁드립니다. 
개인적으로는 정보 올림피아드, ICPC, 기타 작은 대회 등 참관을 한 경험은 많았지만, 대회 출제나 대회 진행에 직접 참여한 것이 이번이 처음입니다. 22일 본선을 앞두고 있어서 아직은 ‘해냈다’ 정도의 느낌이네요. 

문제 출제에도 참여하셨군요. 이번에 독특한 문제가 많이 출제됐다 들었는데요, 문제 출제에 있어 중점을 둔 것은 무엇인가요? 
프로그래밍 대회는 크게 두 가지로 나뉩니다. 컴퓨터로 어떤 문제를 해결하는 방법을 찾아내는 프로그램을 짜고 처리하는 속도를 비교하는 ‘알고리즘 대회’와 어떠한 주제에 대해 실제로 돌아가는 프로그램, 서비스를 만들어 심사하는 ‘공모전’이 그것이죠. 
처음에는 채점의 어려움 때문에 알고리즘 대회 형식으로 진행하고 싶었지만, 우리나라엔 학원이 워낙 활성화 됐다보니 이미 알고리즘 대회를 공부한 사람들이 있더라고요. 그래서 알고리즘 대회 준비자가 아니더라도 즐길 수 있는, 다른 대회와 비교해도 경쟁력 있는 대회를 만들기로 했습니다. 
우리가 낸 문제는, 정답은 없지만 자신의 아이디어를 구현해 승부를 벌여야 하는 방식입니다. 프로그래밍 경험이 많으면 더 잘 할 수 있긴 하지만, 더 뛰어난 아이디어를 찾아내면 더 좋은 점수를 받을 수 있도록 했어요. 예선 기간도 충분히 늘려서 여유 있게 아이디어를 겨룰 수 있게 했죠. 
그래도 이런 문제만 있으면 어려울 거에요. 청소년 대회니까 한 번 참가해보는 사람도 있을테니까요. 그래서 대회에 익숙하지 않은 사람들도 즐거울 수 있도록, 넥슨 게임과 연동한 문제도 함께 곁들였습니다. 예를 들어, 마비노기에는 게임 내 시간을 표시하는 내부 시계가 따로 있어요. 이걸 문제에서는 ‘현실 시간이 몇 시 일때, 마비노기 속 시간은 몇 시인가?’하는 식으로 내는 식이죠. 
나중에 좀 더 여유가 되면 이런 문제들을 정리해서 공개하려고 합니다.
   
4.png5.png

<크레이지 아케이드를 소재로 한 ‘물 폭탄을 사용해 최대한 빨리 모든 상자를 열어보기' 문제입니다. 머리로만 생각한다면 어려운 건 아닌데, 프로그래밍을 통해 코드로 구현해야한다는 점이 어려울 것 같습니다.>



답이 없는 문제라고 했는데, 그렇다면 채점은 어떻게 진행하나요? 
알고리즘 쪽에서 유명한 문제가 하나 있는데, 일명 ‘방문판매원 문제(TSP 문제)’입니다. 방문판매원이 한 지역의 모든 집을 방문해야 하는데, 가장 짧은 시간 안에 모든 집을 방문할 수 있는 방법을 찾아야 하는 문제죠. 집 사이의 거리가 모두 다른 만큼, 집을 들리는 순서에 따라 걸리는 시간도 달라지는데, 이걸 프로그래밍으로 해결해야 해서 어렵습니다. 특별히 정답은 없지만, 목표에 따라 점수를 매겨 서로 비교할 수 있으니 채점에 큰 무리는 없죠. 

그럼 채점도 프로그램으로 진행하나요? 
그렇습니다. 응시자의 프로그래밍 상황에 따라 답이 만들어질 것이고, 우리가 만든 채점 프로그램이 만들어진 답에 대해 포인트가 얼마라고 계산해주는 식이죠. 또 하나의 상황에서만 채점하는 게 아니라 여러 상황을 제시합니다. 그래서 상황에 따라 점수가 달라지기도 합니다. 

여러 상황을 제시한다는 부분에 대해 좀 더 자세한 설명 부탁드립니다. 
출제된 문제 중에는 크레이지 아케이드와 연계한 문제가 있었습니다. 주어진 맵에는 상자가 놓여 있고, 상자마다 파워업 아이템이 들어있습니다. 여기서 모든 상자를 부수는 게 목표인데, 한 번의 행동마다 시간이 흐릅니다. 그래서 파워업 아이템을 먹어 강하게 만든 후 상자를 부술지, 가까운 데부터 상자를 부숴나갈 지 전략을 선택할 수 있겠죠. 그리고 상자의 배치나 파워업 아이템 갯수도 달리할 수 있습니다. 이런 상황에 따라 점수도 달라질 수 있죠. 
정답을 내긴 어렵습니다. 내 프로그램도 답을 낼 순 있어도 이게 정답이라고 말하긴 어렵지요. 제출한 사람들 답도 다양했습니다. 

이번 대회 예선 답변 중에 기억에 남는 게 있나요? 
하나하나 직접 열어보진 않았지만, 생각보다 새로운 시도가 많진 않았습니다. 조금 아쉬웠어요. 또, 생각보다 문제의 난도가 높았는지, 경쟁을 해서 점수를 얻는 후반부 도전 문제에 도달하지 못하는 경우도 많았고요. 특히, 대회 진행 시점이 마침 개학철이라, 참가자들이 문제를 풀 수 있는 시간이 제한된 점도 있었습니다. 
다행히 대회 기간을 늘려서 풀 수 있는 시간을 제공했고, 추가된 기간 내에 도전 문제까지 진행한 참가자들도 있어 대회 진행엔 크게 무리가 없었습니다. 

22일 본선 진행 방식은 어떻게 되나요? 
도전 문제로 진행할 생각입니다. 하나로 끝이 아니라, 도전 문제를 푸는 데 아이디어가 될 수 있는 작은 문제도 함께 냅니다. 예선 때도 그랬어요. 
처음에는 5x5 사이즈에서 프로그래밍이 아니라 직접 손으로 조작할 수 있는 문제로 경쟁할 수 있도록 했습니다. 그리고 그 다음에는 아이템이 없는 상황에서의 문제 풀이, 아이템이 있는 상황에서의 문제 풀이로 점점 쌓아나가는 식이죠. 뒤에 어려운 건 못 풀더라도, 앞에서 라도 도전해볼 거리가 나올 수 있지 않을까 싶었습니다. 
대회 시간은 5시간입니다. 대회 주최자 입장에서는 시간 내에 모두 문제를 다 풀어버리면 곤란합니다. 꽤 빡빡하게 짜 놔야죠. 앞에 문제를 풀고 뒤에 도전 문제를 풀기까지의 계획을 만들어 두는 게 필요할 겁니다.

하재승2.JPG



이번 대회에 특별히 기대하는 것이 있다면? 
솔직히 이 대회를 통해 프로그래밍에 대한 인식이 엄청나게 좋아진다거나 하는 건 특별히 하지 않습니다. 그저 대회를 즐길 수 있었으면 좋겠다는 마음이지요. 넥슨 게임과 연관된 문제를 낸 것도 문제 푸는 입장에서 편하고 재미있을 것 같았거든요. 그래서 예선도 누구나 참가할 수 있는 형식이었고요. 코딩 교육 이야기도 많이 나와서 대회하기 좋은 시기긴 하지만, 대회 한 번으로 바뀌긴 어려울 것 같아요. 그래도 가치는 있을 거라 봅니다. 

하재승 프로그래머님에게 프로그래밍이란? 
프로그래밍은 현대의 마법 같습니다. 제가 제일 즐겁게 느꼈던 ‘새로운 세계를 만든다는 것’은 마법과도 같아요. 아직은 모니터를 벗어나지 못하고 있긴 하지만, 내가 원하는 명령을 내리면 이를 수행하는 게 프로그래밍이고, 딥 러닝, IoT가 쌓여나가면 아마존 에코나 시리 같은 개인 비서처럼 없던 게 생기기도 하니까요. 
프로그래밍 안에서 작게 봐도 내가 자유롭게 뭔가 한다는 느낌이고, 점점 현실에서도 전에 못하던 것들을 가능하게 해주는, 그런 것 같습니다. ‘고도로 발달된 과학은 마법이랑 구분이 불가능하다’는 말도 있잖아요? 벌써 그런 시대가 온 것 같습니다. 

끝으로 이번 대회 참가자를 비롯해 프로그래머를 꿈꾸는 사람들에게 하고 싶은 말이 있다면? 
자신이 뭘 하고 싶어서, 그 과정에서 프로그래밍이 필요하기 때문에 공부하는 게 되어야 합니다. 프로그래밍은 하나의 도구일 뿐입니다. 아무리 잘하더라도 자신이 이걸로 뭘 하고 싶은 게 없다면 그냥 잘 드는 칼에 지나지 않습니다. 이걸로 뭘 할 지가 중요한 것이죠. 이에 대한 고민을 같이 해야 합니다. 목표가 있다면, 그 자체가 강한 동기부여가 돼 공부할 수 있는, 더 잘할 수 있는 계기가 될 수 있습니다. 
남이 좋다 그래서 하는 것보다는, 자신이 자신 만의 가치를 찾기 위해 고민하는 세상이 되어야 하는데, 현실은 그렇지 못한 것 같습니다. 그래도 인터뷰를 보는 여러분에게는 자기가 뭘 하고 싶은지 생각해볼 수 있는 기회가 됐으면 좋겠습니다.


댓글 0
댓글 쓰기 권한이 없습니다.
1 - 60