해커의 길

전문가 칼럼입력 :2015/12/14 08:50    수정: 2015/12/14 09:47

임백준 IT칼럼니스트
임백준 IT칼럼니스트

백혈병 때문에 죽음의 문턱까지 갔다가 돌아온 에릭 마이어(Erik Meijer)가 코펜하겐에서 열린 고우투(GOTO) 컨퍼런스를 통해서 다시 무대에 섰다. 이제 겨우 50줄에 접어든 그가 자기에게 남은 생이 앞으로 몇 년일지 모른다고 말하는 대목은 가슴이 찡하다. 하지만 그는 유머를 잃지 않는다. 여러분도 내일 당장 가비지 컬랙트(Garbage collect)될지 모르는 일입니다. 그는 이렇게 익살을 부리며 평소와 다름없는 열정을 담아 One Hacker Way(어느 해커의 방법)이라는 제목의 강연을 했다.

C#을 사용하는 개발자라면 링큐(LINQ)의 우아함을 통해서, 자바를 이용하는 개발자라면 RxJava 라이브러리의 아름다움을 통해서 마이어의 명성을 접했을 것이다. 오랫동안 몸담았던 마이크로소프트를 나와서 회사를 차린 그는 페이스북의 핵 구글의 다트, 타입세이프의 스칼라 등에 비동기성이라는 영양분을 주입했고, edX나 코세라 같은 무크(MOOC)를 통해서 전 세계의 개발자들을 대상으로 함수 프로그래밍을 강연했다.

어두운 밤의 해커로서 명성을 떨치던 그가 하스켈 언어를 만나면서 정파(政派)의 길로 접어든 일은 유명하다. 마이크로소프트의 채널9에서 볼 수 있는 그의 하스켈 강의는 지금도 열렬히 시청이 되고 있고, 그의 SNS 계정은 수많은 팔로워를 거느리고 있다. 프로그래밍을 누구보다 사랑하고, 프로그래밍의 본질에 해당하지 않는 일이면 거침없이 혐오하는 그는 병마에게 빼앗기기 아까운 존재다.

그는 최근 페이스북에 입사했다. 아직 인터넷을 사용하지 못하고 있는 전 세계의 많은 사람들을 값싼 인터넷으로 연결하려는 마크 주커버그의 원대한 포부에 동감했기 때문이다. 무엇보다도 살아있는 1분 1초가 아까운 마이어는 앞으로 세상 사람들에게 실질적으로 도움이 되는 일을 하고 싶었기 때문에 저커버그의 프로젝트에 참여하게 되었다고 설명한다.

근황을 설명한 그의 강연은 비동기성의 중요성에 대한 이야기로 이어졌다. 지금까지 프로그래밍 언어는 “동기성(synchrony)”과 “블로킹(blocking)”을 기반으로 하는 방식에 익숙해왔다. 하지만 이러한 방식은 한계에 도달했으며 프로그래밍 언어는 이제 C#의 async, await 키워드로 대표되는 비동기적 방식을 보편적으로 채택해야 한다고 말한다. 대부분의 현대 언어는 이미 그러한 방법을 문법적으로 지원하고 있다. 주류언어 중에서 그러한 기능을 지원하지 않는 언어는 자바 하나일 뿐이다.

“이보게, 브라이언 괴츠, C#, 파이선, 자바스크립트는 물론, 심지어 PHP도 async, await를 지원하고 있다네. 그런 기능이 없는 언어는 자바일 뿐이야. 람다를 이용해서 콜백callback 함수를 사용하면 된다고? 천만에. 콜백은 최악이야. 도움이 안 된다고. 자바 9 버전에 담으려고 하는 걸 다 내려놓고 지금 당장 async, await부터 넣으라고. 그래야 모두가 행복해질 수 있어.”

자바 개발을 진두지휘하는 브라이언 괴츠에게 짓궂은 조언을 던진 그의 이야기는 마침내 애자일에 대한 이야기로 넘어갔다. 마이어는 오래 전부터 애자일과 스크럼이 프로그래밍에 전혀 도움이 되지 않을 뿐 아니라 업계 전체를 병들게 하는 암적 존재라고 말하며 무자비한 비판을 해온 것으로 유명하다. 애자일을 현대적인 방법론으로 이해하고 있는 사람들에게 마이어의 이야기는 충격적이다. 그가 이야기하는 “해커의 길”은 결국 “애자일”의 반대말이다. 여기에서 말하는 해커가 “밤의 해커”가 아니라 컴퓨터를 능숙하게 다루는 열혈 개발자 일반을 의미함은 물론이다. 그에 의하면 해커의 길은 옳고, 애자일은 틀렸다.

그의 논지는 이렇다. 맥도널드와 같은 패스트푸드 업체는 교육수준이 낮은 직원들을 고용하기 때문에 음식과 서비스의 품질을 획일적으로 보장하기 위한 절차가 필요하다. 그런 절차와 규칙의 집합이 애자일이고 스크럼이다. 마이어는 말한다. “평균적인 수준 혹은 그 이하의 개발자라면 그런 절차가 필요한 것이 사실이다. 어쩔 수 없다. 하지만 우리는 평균 이상을 추구한다. 우리는 해커다.”

맥도널드 직원들에 비해서 미슐랭(Michelin) 스타를 받는 레스토랑의 셰프는 일하는 방식이 정반대다. 그들은 미리 정해진 매뉴조차 사용하지 않는다. 시장에서 신선한 생선이 눈에 뜨이면 생선요리를 기획하고, 좋은 당근이 들어오면 당근을 사용한다. 그들은 미리 정해진 절차에 따라서 일하는 것이 아니라 매순간 최선을 추구하며 자유분방하게 창조한다. 아무렇게나 일하는 것처럼 보이지만 최종적인 음식의 품질은 맥도널드의 햄버거와 비교할 수 있는 수준이 아니다.

마이어가 보기에 애자일과 스크럼은 관리자가 개발자를 통제하기 위한 수단에 불과하다. 진정한 개발자는, 혹은 해커는, 통제를 거부하고 가장 중요한 문제를 해결하기 위해서 코딩에 전념하는 사람이다. 개발자를 ‘관리’하는 일을 마치 양떼를 모는 일처럼 생각하는 관리자는 해커의 적이다. 개발자는 양처럼 온순한 존재가 아니기 때문이다. 그런 관리자는 복장에 신경 쓰거나, 출퇴근 시간을 고민하거나, 필요 이상으로 회의(스크럼!)에 참가하거나, 상사의 눈치를 보면서 아무 말도 하지 못하는 ‘양’을 꿈꾼다.

관련기사

하지만 해커는 꿀벌이다. 개발자를 ‘관리’하는 일은 양봉장에서 벌을 키우는 것과 비슷하다. 관리자는 멋대로 날아다니는 개발자를 통제할 수 없다. 오히려 어설프게 행동하다가 침에 쏘이는 일을 걱정해야 옳다. 그들이 하고 싶은 일을 하도록 내버려두면 어쨌든 꿀은 생산된다. 관리자의 목적은 꿀벌을 통제하는 것이 아니라, 꿀을 얻는 것이다. 관리자가 꿀을 가져가면, 꿀벌은 더 많은 꿀을 만들어낸다. 해커는 꿀을 만들어내는 과정 자체를 즐기고 사랑한다. 어떤 종류의 통제나 절차도 그들과 어울리지 않는다. 다른 사람의 눈치를 보는 것은 해커의 본분이 아니다. 해커의 머릿속엔 코드만 들어있다. 그게 해커의 방식이다. 마이어는 말한다. “그런 꿀벌들에게 회사는 더 많은 돈을 지불해야 한다.”

마이어가 이야기하는 ‘해커’는 소수의 엘리트 개발자를 지칭하는 것처럼 들리지만 그건 사실이 아니다. 교육수준이나 가방끈은 해커의 자격과 아무런 상관이 없기 때문이다. 중요한 것은 열정이다. 그리고 그에 수반하는 실력이다. 그렇기 때문에 그가 말하는 해커의 길은 프로그래밍을 사랑하는 모든 개발자가 염두에 둘 필요가 있는 열정적인 조언이다. 유쾌하고 소탈하지만 깊은 통찰을 담고 있는 그의 이야기를 나는 앞으로도 계속 듣고 싶다. 당쿠(Dank u) 미스터 마이어.

*본 칼럼 내용은 본지 편집방향과 다를 수 있습니다.

임백준 IT컬럼니스트

한빛미디어에서 『폴리글랏 프로그래밍』(2014),『누워서 읽는 퍼즐북』(2010), 『프로그래밍은 상상이다』(2008), 『뉴욕의 프로그래머』(2007), 『소프트웨어산책』(2005), 『나는 프로그래머다』(2004), 『누워서 읽는 알고리즘』(2003), 『행복한 프로그래밍』(2003)을 출간했고, 로드북에서 『프로그래머 그 다음 이야기』(2011)를 출간했다. 삼성SDS, 루슨트 테크놀로지스, 도이치은행, 바클리스, 모건스탠리 등에서 근무했고 현재는 맨해튼에 있는 스타트업 회사에서 분산처리, 빅데이터, 머신러닝과 관계된 업무를 수행하고 있다.