brunch

You can make anything
by writing

C.S.Lewis

by 마르코 Aug 10. 2017

지루한 알고리즘을 게임처럼

알고리즘 공부하지 마세요. 게임하세요!

싱가포르에서 개발자로 구직을 하고 있다. 이미 싱가포르에 집도 계약하고 계약금도 다 치렀기 때문에 뒤로 물러설 곳도 없다. 나중에 따로 정리해서 올리겠지만, 오랜만에 이력서를 정리해서 관심이 있는 회사에 보내고, 헤드헌터들과 연락하고, 스카이프로 영어 면접을 진행하고 있다. 그중에 유명한 카드 회사에서는 코딩 테스트를 보자고 해서 코딩 테스트도 봤다. 개발자로 첫 취업할 때를 떠올리자면, 20곳 정도 지원한 회사 중에 딱 한 곳에서 회사 사무실에 방문해서 코딩 테스트를 봤던 걸로 기억이 난다. 그런데 이번 코딩 테스트는 그 사무실에 방문할 필요가 없었다.


반복을 싫어하는 개발자와 코딩 테스트


비개발자가 보기에 개발자는 하루 종일 앉아서 컴퓨터와 대화하는 '근면'의 상징일지 모르겠지만, 사실 나는 개발자의 가장 중요한 능력은 '똑똑한 게으름'이라고 생각한다. 한 번 했던 작업을 또 하지 않기 위해서 자동화를 하고, 재사용 가능한 코드를 짜는 것이 훌륭한 개발자를 만들어 준다는 말이다.


개발자들은 이직이 잦은 편인데, 그러면 빈자리를 채우려면 또다시 사람을 뽑을 수밖에 없다. 그런데 어차피 개발자 면접은 개발자 밖에 볼 수가 없다. 했던 질문 하고 또 하고, 제대로 아는지 헷갈릴 때 추가 질문하고 얼마나 귀찮은가. 그리고 심지어 코딩 테스트를 보려고 마음먹으면 컴퓨터도 준비해야 하지, 환경 설정도 해놔야 하지 신경 쓸 게 한두 가지가 아니다.


그래서 똑똑한 개발자 양반들이 코딩 테스트를 온라인으로 옮겨놨다. 이제 회사는 무슨 문제를 낼지 고민할 필요도 없고, 회사에서 이력서로 한 번 걸러낸 지원자들에게 링크만 하나 보내면 된다. 그러면 주어진 시간(대게는 한 시간) 안에 문제를 풀면 결과가 자동으로 회사에 전송된다. 회사 내부에서 이런 솔루션을 쓰고 있다는 개발자 지인에게 물어보니, 단순히 정답 여부뿐만 아니라 다양한 항목별로 점수를 매기고 심지어 어떻게 코드를 입력하는지 시간대별로 동영상을 볼 수 있다고 한다. 그래 인공지능으로 사람 면접도 보는 세상에 이게 무슨 대수랴.


유명한 코딩 테스트 사이트는 해커 랭크(https://www.hackerrank.com)와 코딜리티(https://codility.com/) 등이 있는데, 아래에서 해커 랭크를 좀 더 알차게 사용하는 방법에 대해서 이야기해보자.


해커 랭크 500% 활용하기


만약에 B2B용 코딩 테스트 사이트를 만든다고 생각해보자. 어떤 기능을 넣을 것인가? 그냥 온라인에서 지원자 코딩 테스트만 하게 하면 되는 거 아니냐고? 그렇게 생각했다면 훌륭한 기능을 구현할 수 있을지는 모르겠지만, 성공적인 서비스가 되기는 조금 거리가 있어 보인다. 왜냐면 기능 전체가 B2B로 포지셔닝하는 순간 '영업력'이 비즈니스에서 가장 중요한 요소로 떠오른다. 그런데 해커 랭크는 이 B2B 비즈니스에 기가 막힌 아이디어를 더했다.


해커 랭크는 취업이나 이직을 위해 코딩 테스트를 준비하는 사람들이 알고리즘을 연습할 수 있는 공간을 마련해놓았다. 그런데 기존의 알고리즘 공부처럼 그냥 단순히 정렬 알고리즘, 데이터 구조 등을 나열해 놓은 것이 아니라, 자신들이 가장 자신 있는 형태의 문제풀이로 바꿔놓았다. 이렇게 되면 여기서 공부한 개발자들이 회사에 취업해서, 새로운 개발자들을 뽑을 때 또 이 서비스를 쓰게 될 테니 엄청난 선순환의 고리가 아닌가! 개발자 분들이 모여 기술 창업을 하는 경우라도 이런 바이럴 요소를 고민하는 것이 필요하다고 말씀드리고 싶다.


그리고 단순히 다양한 문제를 푸는 것뿐만 아니라, 공부했던 프로그래밍 문법을 문제를 통해서 좀 더 확실히 다질 수도 있다. 아직도 프로그래밍 처음 공부하면서 책 하나 사서 5 회독, 10 회독하시는 분들이 있는데, 제발 그러지 말라고 말씀드리고 싶다. 영어 문법 책 사서 10번 읽는다고 영어가 술술 나오는 것이 아니듯, 프로그래밍 언어도 하나의 언어다. 영미권에서 프로그래밍 교육을 할 때 가장 중요하게 생각하는 부분이 "Learning by Doing"이다. 심지어 어떤 강사들은 이해하기 전에 익혀야 한다고 주장하기도 한다. 이론을 단단하게 다지는 것이 중요하지만, 코딩은 절대로 눈으로만 읽어서는 숙달될 수가 없다. 반드시 따라 쳐 보시길. 아래는 파이썬 문법으로 문제를 풀 수 있는 페이지 링크이다.



또 하나 소개하고 싶은 기능은 바로 알고리즘 대회이다. 많은 IT 대기업들이 알고리즘과 씨름하고 있다. 알고리즘의 세계에서 하나의 획기적인 기술이 20~30%의 비용 절감으로 이어지기도 하고, 커다란 기업에서 1%만 비용을 줄여도 그건 어마어마한 일이기도 하다. 이렇듯 많은 IT 대기업들은 더 나은 알고리즘을 찾기 위해 고민하는데, 아무렴 10명 보다 1000명이 고민하는 게 더 낫지 않겠나? 그래서 여러 회사들이 자신의 이름을 걸고 문제를 올리기도 한다. 며칠 전에 올라온 19일에 시작한다는 대회는 무려 골드만 삭스에서 올린 문제이다. 이렇게 대회에 참가해서 높은 점수를 받은 개발자들은 여러 IT 회사에서 러브콜을 받는단다. 그래서 이력서를 등록해놓는 기능도 있다. 아래 링크는 코딩 대회 리스트 페이지이다.



요즘은 정말 다양한 개발을 공부할 수 있는 소스가 넘쳐난다. 중고등학교 때 공부하던 방법 말고, 자신에게 더 맞는 재밌고 빠르게 공부할 수 있는 방법을 찾아서 개발 공부하면 좋겠다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari