자세히 보기

Paul Krill
Editor at Large

“개발자를 꿈꾸는 이에게…” 거물 프로그래머 5인의 커리어 조언

경력 측면에서 소프트웨어 개발이 그 어느 때보다도 인기다. 프로그래밍 언어에 대한 관심이 고조되고 있다. 미국 노동부 노동통계는 개발자에 대한 수요가 2014년에서 2024년까지 연 17% 증가할 것이라고 예상하는데 이는 모든 업종의 평균값인 7%보다 훨씬 빠른 속도다.

즉 학생과 비 기술 종사자들이 프로그래밍 경력을 고려하는 것은 그리 놀랍지 않은 현실이다. 하지만 지금 개발자 경력에 입문해도 괜찮을까? 입문 프로그래머들이 해야 할 일들에 대해 소프트웨어 거물들에게서 의견을 물었다.

자바스크립트 창조자 브렌단 에치(Brendan Eich), 클로져 창립자 리치 힉키(Rich Hickey), 스프링 프레임워크 고안자 로드 존슨(Rod Johnson) Npm 창립자 아이작 슐루터(Isaac Schlueter) 그리고 파이썬 언어를 만든 구이도 반 로섬(Guido van Rossum)에게서 이야기를 들어보았다. 다음은 교육 기회, 마스터해야 할 언어, 훌륭한 프로그래머가 되는 자질 등에 대해 그들이 공유한 이야기다.

Image Credit : Getty Images Bank

교육 측면
컴퓨터 공학 학위의 가치에 대한 논쟁이 뜨겁지만 프로그래밍 분야의 리더 다수는 균형 잡힌 교육과 컴퓨터 외 영역에의 학습을 강조했다.

에치는 “인생에서 가장 큰 과제는 기술로 해결되지 않는다. 그렇기 때문에 컴퓨터 말고도 역사, 문학, 예술, 다른 여러 종류의 지식을 쌓는 게 중요하다”라고 말했다.

히키는 프로그래밍을 폭넓은 관점으로 놓으며 그 의견에 동의한다. 그는 “프로그래밍은 역사적으로 아주 초창기에 불과하다”라며 “프로그래밍을 잘 해낼 수 있는 방법에 대해 섣불리 가정하기에는 너무 이르다”라고 말햇다.

그 대신 히키는 프로그래밍이 해결할 수 있는 문제 유형들을 이해하는데 도움을 얻기 위해 다른 교육적 흥미를 추구하는 것을 추천했다.

그는 “최고의 프로그래머들은 그들이 속해있는 사회에 대해 이해하고 소통하고 문제를 해결할 수 있는 이들이다. 소프트웨어는 그냥 그런 목적을 위한 도구에 불과하다”라고 말했다.

존슨 역시 미래의 프로그래머들이 컴퓨터실과 수학 이외 과목들을 탐구해서 전반적인 교육을 받아야 한다는데 동의했다. 궁극적으로 “프로그래밍은 수학보다는 사람에 관한 것”이기 때문이다.

한편 컴퓨터공학 학위를 따는데 대해서는 존슨은 “집어치워라”라고 말했다. 그는 “대부분 프로그래머들은 일하면서 배운 것을 쓴다. 훌륭한 컴퓨터 공학 교육도 가치 있지만 컴퓨터 공학 교육을 받지 않은 훌륭한 프로그래머들도 수없이 많이 봤다”라고 말했다.

반 로섬도 동의했다. “영문학과를 졸업하고도 장고 걸(Django Girls) 워크숍에 가고 그 이후 그들은 웹 개발자가 된 이들이 있다. 전통적인 4년간의 대학교육을 통해 컴퓨터공학을 전공한 프로그래머들도 물론 있다”라고 말했다.

물론 이론도 실제 세계에서 당연히 쓸모가 있다고 존슨은 덧붙였다. 그는 “어제 나는 컴퓨터공학 수업에서 배웠던 몇 가지 컴플라이어 이론을 사용했는데 이게 내가 가지고 있던 문제에 대한 깔끔하고 단단한 솔루션을 만드는데 도움이 됐다. 하지만 그런 일이 자주 있지는 않다”라고 말했다.

에치는 컴퓨터공학 이론 공부보다도 수학 공부가 더 가치 있다고 평가했다. 그는 “프로그래밍은 수학에 관한 것이 아니고 전혀 관계없는 경우도 있다. 하지만 수학적 감각이 있다면 젊을 때 수학을 공부하는 게 좋다. 프로그래밍 학습에 지나치게 신경 슬 필요가 없다”라고 말했다. 

반 로섬은 한걸음 더 나가서 “논리적 사고를 개발시키는 수학 유형”을 추천했다.

슬류터는 프로그래머가 되기 전 일반적 교육을 받을 필요가 있다는 입장이다. 그는 “인문학 교육은 고등학교 졸업 이후 4년을 훌륭하게 보내는 방법이다, 감당할 수만 있다면”이라고 말했다. 그는 이어 “인생에서 사회적 승인 하에 바보 같은 짓을 하고 놀 수 있는 시간은 다시는 없다”라고 말했다.

그의 이야기에 공감하는 이에게 슬류터는 실용적인 조언을 하나 전했다: “주립 대학은 사립 대학보다 훨씬 저렴하고 학자금 대출도 상당히 부담이 되므로 돈을 절약하기에 좋다”라고 그는 말했다. 놀아야 할 시간을 돈을 버는데 쓰지 말라는 이야기다.

슬류터는 작문 능력이야말로 훌륭한 프로그래머가 되는 핵심 능력이라고 주장했다.

그는 “대학에 가던 안 가던 어릴 때 최대한 많은 문학, 철학을 1차와 2차 소스 모두에서 읽고 최대한 많이 글을 써볼 필요가 있다. 특히 대학에 진학하지 않는다면 숙제를 과외선생을 찾아보라. 글쓰기가 바로 인터넷에서 사람들의 소통 방식이다. 더 효과적으로 글을 쓸 수 있다면 더 좋은 프로그래머가 될 수 있다”라고 강조했다.

프로그래밍 언어에 대해
프로그래밍을 하기로 했다면 어떤 언어를 먼저 고려해야 할까?

에치는 “OCaml, 하스켈(Haskell), 러스트(Rust), C++, 타입스크립트(TypeScript), JS, 래켓(Racket), 아니면 SICP로의 스킴(Scheme)” 등을 제안했다. 그는 “분명 누구도 저 언어 모두를 공부하지는 않을 것이다. 하지만 흥미와 소질을 가진 이라면 알맞은 시간과 장소에 몇 가지만 배워도 좋을 것”이라고 권했다.

히키 역시 다언어 접근방식을 제안하면서도 언어 초합 측면에서 더 철학적인 입장을 취했다.

그는 “컴퓨터가 어떻게 작동하는지를 분명하게 보여주는 언어(C)를 감싸는 언어(하스켈, 프롤로그), 통계적으로 짜인 기능적 언어(하스켈), 그리고 기능이 강조된 훌륭한 역동적 언어. 나는 클로져를 좋아한다”라고 말했다.

존슨은 대조적인 접근방식을 가진 언어들을 공부하라고 제안했다. 그는 “언어들은 프로그래밍에 대한 생각에 영향을 미칠 수 있기 때문에 한가지 이상의 각기 다른 접근방식을 가진 언어를 공부하는 게 중요하다. 그러므로 예를 들어 자바와 C# 이런 식이 아니라 객체지향 언어와 함수형 언어 같은 조합이 좋다”라고 말했다.

반 로섬은 “나는 파이썬이 공부를 시작하기 아주 좋은 언어라고 생각한다”라며 “그러면 어느 파이썬 버전이냐가 궁금할 텐데 나는 파이썬 3을 추천한다”라고 말했다.

그는 이어 “어떤 작업이나 프로젝트가 있다면 파이썬 2를 공부하기 충분히 쉽다. 만약 처음부터 시작하는 거라면 당연히 파이썬 3이 더 나은 언어다”라고 덧붙였다.

존슨은 젊은 개발자들에게 스위프트(Swift)를 공부해보라고 제안했다. 그는 “이는 훌륭한 현대적 언어로 수많은 아이디어를 담고 있다. 스위프트가 iOS에서 다른 플랫폼으로 확산될 것으로 나는 예상한다”라고 말했다.

그는 이와 함께 “자바스크립트는 첫 언어로 아주 적합하지는 않을지언정 아주 유용하다. 자바는 배워둘 만하다. 배우기 특별히 어려운 언어도 아니고 인기도 계속 늘어나고 있다. 그리고 JVM은 어디에나 있다”라고 설명했다.

프로그래밍의 실제
몇 가지 프로젝트를 거쳤다면 능력을 어떻게 높일 수 있을까? 에치는 훌륭한 코드를 분석함으로써 초기(그리고 현재)대가들로부터 배울 것을 제안했다.

에치는 “고품질 코드를 종이 인쇄물로라도 읽어보고 색깔 펜으로 메모를 적고 체크해보라. 고품질 코드에 있어서 여전히 커닝한(Kerninghan)과 리치(Ritchie)의 C 프로그래밍 언어(The C Programming Language)가 고전이라고 생각한다. 좀 오래된 생각일 수도 있지만 그렇다. 유닉스 프로그래밍 환경(The Unix Programming Environment) 역시 마찬가지다. 최근 읽을만한 코드로는 ‘모든 스도쿠 퍼즐 풀기(Solving Every Sudoku Puzzle)’와 함께 ‘norvig.com’에 있는 모든 것들이 꽤나 읽을만하다”라고 말했다. 

히키는 인내와 대비를 조언했다. 그는 “프로그래밍의 가장 중요한 부분은 컴퓨터에서 동떨어져 발생한다. 일할 무언가 나타날 때까지 키보드만 두드리지 말고 시작 전에 무엇을 할지 확정하라”라고 말했다.


하지만 키보드 앞에 앉았다면 에치는 그대로 앉아있으라고 조언했다. “켄 톰슴(Ken Thompson)의 ‘의심가면 브루트포스를 써라’(When in doubt, use brute forc)라는 조언이 유용하다고 아직도 생각한다. 멈추지 말라!”라고 그는 말했다.

존슨은 이 외에도 오픈소스 공부를 제안했다. 그는 “좋은 오픈소스 프로젝트의 코드에서 많은 것을 배울 수 있고 공헌할 수많은 기회가 있다. 이는 또한 협업 능력을 키우는데도 도움이 된다. 나는 이게 학교에서 현업으로 가는 가치 있는 다리 혹은 지루한 작업에서 잠재적으로 훨씬 재미있는 일을 할 수 있는 잠재성으로 생각해왔다”라고 말했다.

미래 경력을 계획하는 젊은 프로그래머들에게 흥미 있을 만한 작업들에 대해서 에치는 “우주, 3D프린팅, 3D 렌더링, 바이오인포매틱스, 웹”을 제안했다.

반 로섬은 일 선택에 있어서 한곳에 머무르지 말라고 조언했다. 그는 “재미있을 것 같지 않다면 받아들이지 말라. 프로그래머들이 할 일이 너무나도 많다. 실제로 즐길 수 있는 일을 찾아야 한다. 그래서 더 생산적이고 더 일하면서 즐거울 테고 이게 모두에게도 더 좋다”라고 말했다.

히키도 동의했다. 그는 “프로그래밍의 훌륭한 점 중 하나는 소프트웨어가 거의 모든 영역에서 필수라는 점이다. 당신에게 가장 흥미로운 분야를 선택하라”라고 말했다.

무엇을 선택하던 슬류터는 시야를 넓게 가지라고 강조했다.

“프로그래밍은 침착하고 계속 배운다면 상당히 쉬운 일이다. 하지만 점차 모든 경력 경로는 막다른 길이거나 일종의 경영직으로 이어진다. 기술에 집중해 있더라도 점차 사람들을 이끌게 되면 더 영역이 넓어지고 많은 것을 달성할 수 있게 된다”라고 그는 말했다.

그런 점에 있어서 슬류터는 리더십, 커뮤니케이션, 비즈니스에 대한 책을 지속적으로 읽으라고 조언했다. 그는 “보기보다 더 복잡하며, 중요한 주제다”라고 말했다.

dl-ciokorea@foundryco.com

Paul Krill

Paul Krill is editor at large at InfoWorld. Paul has been covering computer technology as a news and feature reporter for more than 35 years, including 30 years at InfoWorld. He has specialized in coverage of software development tools and technologies since the 1990s, and he continues to lead InfoWorld’s news coverage of software development platforms including Java and .NET and programming languages including JavaScript, TypeScript, PHP, Python, Ruby, Rust, and Go. Long trusted as a reporter who prioritizes accuracy, integrity, and the best interests of readers, Paul is sought out by technology companies and industry organizations who want to reach InfoWorld’s audience of software developers and other information technology professionals. Paul has won a “Best Technology News Coverage” award from IDG.

이 저자의 추가 콘텐츠