C++를 공부하는 개발자 사이에서 가장 인기있는 책을 꼽자면 ‘이펙티브 C++(Effective C++)’를 빼놓을 수 없다. 이 책의 저자는 스콧 마이어스. 무려 25년동안 C++ 한 길만을 판 장인이다. 아쉽게도 그는 2015년 12월을 끝으로 더 이상 C++ 관련 출판이나 공식석상에 나서지 않는다고 한다. 거창한 이유는 없다. 그는 인터뷰를 통해 “이젠 나 말고도 영상, 블로그, 출판을 통해 C++에 다뤄주시는 분이 많아졌다"라며 "마침 요즘 C++에 새로운 변화가 많아지는 시기라 은퇴하기 좋은 시점이라고 생각했다"라고 밝혔다. 그는 어떻게 해서 C++에 빠졌을까. C++의 미래를 어떻게 보고 있을까. 직접 스콧 메이어스와 만나 그 대답을 들어보았다.

평범한 대학원생이 C++ 스타 작가가 되기까지

스콧 마이어스의 직업은 프로그래머가 아니다. 그는 “C++공부하고 C++ 개발자에게 새로운 기술을 이해하기 좋게 설명하는 일을 한다”라고 표현했다. 정확히 말하면 C++ 프로그래밍 컨설턴트다.

“소프트웨어를 개발하는 일은 매우 중요한 일입니다. 프로그래머의 가치도 점점 높아지고 있죠. 한편으로 그들은 매우 바쁩니다. 소스코드를 짜고, API도 다 알아야 하고, 오류도 찾아내야 하고요. 그 말은 C++언어 변화와 기능, 도구에 대해 일일이 이해하고 쫓아가기 쉽지 않는 뜻입니다. 그래서 저 같은 사람이 미리 배우고 설명해주는 거죠. 프로그램의 효율성과 성능을 높이기 위한 조언도 하고요. ”

스콧 마이어스는 대학 졸업 후 3년 동안 프로그래머로 잠시 일하고 공부에 대한 열망 때문에 대학원으로 입학했다. 대학 시절에는 주로 파스칼을 이용했다. 포트란도 조금 만질 수 있었는데, 특이하게 C언어를 사용해본 적 없었다고 한다. 1990년, 그는 소프트웨어 엔지니어링 수업에서 조교로 일하면서 처음으로 C++ 언어를 공부하고 지식을 공유했다. 몇 년 뒤 우연히 프로그래밍 트레이닝 업체에서 연락이 오고, 본격적으로 C++ 컨설팅 일을 시작했다. 스콧 마이어스는 “대학원생은 시간도 유동적이고, 1주일 분량의 짧은 강의를 진행하기 좋아 컨설팅 기업에서 선호했다”라고 밝혔다.

1990년대에 C++은 아직 낯선 언어였다. 하지만 많은 기업들에게 관심을 받기도 했다. 당시 C++ 트레이닝 교육을 받는 사람은 대부분이 C 개발자였다고 한다. 두 언어는 얼핏보면 비슷해 보이지만 당장 기업에서 사용려면 아주 깊이 공부해야 했고, 수강생들은 C++이 너무 어려운 언어라고 힘들어했다. 스콧 마이어스는 항상 무언가를 가르칠 때 상대방의 이해도를 우선 생각했다. 그는 “상대방이 이해하지 못하는 이유는 그 사람이 똑똑하지 못해서가 아니다”라며 “나의 설명은 혹은 커뮤니케이션에 문제가 있다고 보고 다른 강의방식을 고민했다”이라고 밝혔다. 그러한 가치관은 지금도 유효하다. 그는 외부 강연을 나갈 때 항상 청중의 입장에서 설명하려 노력하고 있다고 한다.

“그래서 강의 스타일을 바꿔봤어요. 1주일 동안 수업을 들으면서 '딱 10가지만 기억합시다'라는 식으로 가르쳤죠. 그러면 수강생들은 "10가지 중에 그래도 7-8개는 이해한 것 같다"라며 정리가 되거든요. 핵심 내용을 적은 책도 제공했는데 그게 이펙티브 C++의 기초가 됐죠.”

실제로 이펙티브 C++ 시리즈 책은 항상 ‘OO가지 테크닉’같은 목차로 구성됐다. 첫 번째 책은 55가지 원리를 알려주고 있다. 이펙티브 C++가 당시 워낙 많이 팔린 덕에 출판사들은 '이펙티브'라는 단어를 마치 브랜드처럼 활용해 책 제목에 넣곤했다. 스콧 마이어스는 이펙티브 C++ 책의 판매부수는 애초부터 생각도 안했다고 한다.

“저는 처음 책을 낸 작가였잖아요. 그저 출판사가 제안해서 책을 쓴 것 뿐인데 많은 분들이 좋아하실 줄 몰랐어요. 솔직히 말하면 그땐 'C++이 어쩌면 5-6년후에 없어질 수 있겠다'라고 생각했거든요. 사라지는 프로그래밍 언어들이 꽤 많으니깐요. 어쨌든 너무 감사하고 기쁜 마음으로 계속 책을 업데이트했어요.”

Scott_Meyers_02
▲ Scott_Meyers_02

"모바일·데이터센터·금융쪽에서 C++ 더 많이 활용할 것"

스콧 마이어스는 대학원 졸업 이후 20년 넘게 1인 기업 형태로 일해왔다. 회사명은 ‘훌륭한’이란 뜻을 가진 아리스티아이며, 따로 사무실 없이 집에서 일한다. 그동안 그는 다른 회사에 들어갈 생각도, 누군가를 고용할 생각도 전혀 없었다고 한다. 그는 “관리직이 잘 맞지 않고 기본적으로 혼자 일할 때 효율성이 높아지는 타입이다”라며 “컨설팅을 하기 위해서는 기술에 대해 정확히 알고 있어야 하는데 이 부분을 교육하기가 힘들다”라고 설명했다.

그의 기업에서 특이한 점은 고객군이다. 그의 고객은 주로 소프트웨어를 주 제품으로 판매하고 있는 기업들이다. 예를 들어, 항공업계는 많은 소프트웨어를 사용하고 있지만 실제로 소프트웨어를 판매하면서 돈을 벌진 않는다. 하지만 CRM을 판매하고 관리하는 기업이 있다면 이들은 내부에서 소프트웨어를 사용하는 동시에 소프트웨어를 주력 제품으로 둔다. 스콧 마이어스는 “후자의 기업들이 주로 최고 실력을 가진 개발자를 찾고 교육하기 위해 노력한다”라며 “그래서 소프트웨어 기업을 선호한다”라고 설명했다.

스위프트, 고, 러스트, 코틀린. 최근들어 정말 많은 프로그래밍 언어들이 새로 등장하고 관심을 받고 있다. 오랫동안 C++ 업계에서 일해온 그는 C++의 미래를 어떻게 보고 있을까? 혹시 새로운 언어에 밀려 C++는 사라지지 않을까? 그전에 먼저 C++의 한계점과 장점을 살펴보자. 스콧 마이어스는 “C++는 다른 언어에 비해 복잡하고 숙달하는데 시간이 많이 걸리는 언어다”라며 “요즘은 나아졌지만 관련된 툴도 초기에는 찾기 어려웠다”라고 설명했다. 하지만 그는 C++은 '제약이 많은 상황(challenge)’에서 활용하기 좋은 언어라고 강조했다. 예를 들어, 최대한 속도를 빠르게 하거나, 다른 언어의 일부 소스코드만 가져와야 할때, 하드웨어를 포함한 다양한 플랫폼을 고려할 때 등 특정한 상황에 문제를 해결하기 좋은 언어라는 뜻이다.

이러한 이유로 C++은 검색분야, 임베디드, 비디오 게임, 콘솔 게임 기술 등에서 많이 활용되고 있다. 스콧 마이어스는 특히 최근 금융업계가 C++를 주목하고 있다고 설명했다. 그는 "시카고, 런던, 뉴욕의 금융 업계에서 최근 프로그래밍으로 새로운 수익을 찾으려는 곳이 많다”라며 “알고리즘 트래이딩같은 크고 작은 프로젝트에서 C++를 많이 활용하고 있다”라고 설명했다.

“특정 산업 분야와는 별개로 저는 앞으로 C++의 미래는 더 밝을 것이라고 봅니다. 모바일과 데이터센터기술 때문인데요. 모바일 분야에서는 항상 배터리를 어떻게 하면 적게 소비할 수 있을까 고민하는데요. 하드웨어와 잘 어울리고, 기계의 효율을 높여주는 언어는 C++만한 것이 없습니다. 그래서 C++을 모바일 업계에서 활용하려는 노력이 많아질 것이라고 생각합니다. 데이터센터에서도 전력을 덜 소비하면 엄청난 규모의 비용을 절약할 수 있습니다. 데이터센터의 계산을 빠르고 효율적으로 하기 위해 C++이 검토될 확률이 높다고 봅니다. 거기다 시간이 지날수록 모바일 기술과 데이터센터 기술을 결합한 서비스가 많아질 것고요.”

▲  스콧 마이어스 이펙티브 C++ 작가(사진:블로터 스카이프 통화 촬영)
▲ 스콧 마이어스 이펙티브 C++ 작가(사진:블로터 스카이프 통화 촬영)

프로그래밍 언어를 공부하고 있다면…

스콧 마이어스는 최근 C++ 외에 한 언어를 관심있게 보고 있다. 파이썬이다. C++가 달리 하이레벨 언어이고, 풍부한 라이브러리 덕에 적은 코드로 쉽게 원하는 프로그램을 만들수 있기 때문이다. 그는 파이썬으로 개인적인 프로젝트를 관리하는 중이다.

“기술적인 내용과 별개로 파이썬 커뮤니티가 가진 특유의 개방성이 좋습니다. 저는 파이썬을 정말 0부터 시작하는 초보자인데요. 파이썬 커뮤니티는 굉장히 초보자에게 열려있고, 친절한 문화가 발달돼어 좋더군요. 파이썬 커뮤니티를 보면 C++ 커뮤니티의 아쉬운 점도 하나 느낍니다. 어느샌가 C++커뮤니티에 여성 개발자가 너무 적어졌거든요. 제가 처음 C++를 시작했던 1990년대만 이렇지 않습니다. 그때 강의를 나가면 40%정도가 여성이었어요. 요즘 C++ 업계에 여성 개발자가 줄어들었다는게 너무 마음이 아픕니다. 다양성이 주는 혜택과 가치를 여러 커뮤니티에서 느꼈으면 하거든요.”

라이브코딩으로 배우는 QT와 Boost C++ 애플리케이션 개발
▲ 라이브코딩으로 배우는 QT와 Boost C++ 애플리케이션 개발
최근과 같이 여러 언어가 마구 쏟아져나오는 상황에서 개발자는 여러 언어를 공부해야할까 아니면 한 가지 언어만 깊게 파야 할까? 스콧 마이어스는 두가지 모두를 추천했다. 스콧 마이어스같은 경우 과거부터 루비, 파이썬 같은 새로운 언어들과 관련된 책을 꾸준히 보고 있다고 한다. 꼭 해당 언어로 소스코드를 작성하지 않아도 문제해결 방법에 대한 아이디어를 얻을 수 있기 때문이다. 하지만 동시에 한 언어에 관해서는 아주 자세하고 깊게 공부하고 연구한다. 그렇게 되면 그 언어만이 가진 특징을 잘 살려서 프로그래밍하고 훨씬 좋은 결과가 나올 수 있다고 한다.

하지만 프로그래밍을 한번도 배우지 않았던 사람에겐 C나 C++를 추천하지 않았다. 이때는 조금 더 하이레벨 언어나 시각적인 결과물을 즉각적으로 볼 수 있는 프로그래밍 언어를 추천했다. 모바일이나 웹쪽 언어도 여기에 포함한다. 그는 "프로그래밍 원리에 대해 대략적으로 이해하고 그 이후에 콘솔창에 소스코드를 입력하라"라고 권유했다.

“저는 C++를 공부할 때 원리를 정확하게 이해했는지 반복해서 생각했습니다. 바로 소스코드를 작성하는 것 보다는요. 책이나 관련 자료를 먼저 읽고, 머리속에서 책에서 읽은 내용을 정리해보는거죠. 그리고 실습을 하면 머리속에서 생각했던거와 다른 부분이 나옵니다. 그러한 이유를 생각하고 문제를 고치면 좀 더 정확하게 프로그래밍 언어를 이해할 수 있었죠. 이렇게 이해할려면 수 백시간 어쩌면 수천시간이 걸리기도 합니다. 일반적인 프로그래머라면 언어가 가진 원리의 80%정도만 이해해도 충분히 훌륭한 결과를 만들어낼 수 있을거라고 봅니다.”

앞으로 그는 컨설팅 업무는 계속 진행하는 동시에 출간한 책 6권에 대해 피드백을 반영하고 수정할 예정이다. 참고로 그는 블로그도 꾸준하게 운영하고 있다. 스콧 마이어스에 대한 소식을 듣거나 소통하고 싶은 사람이라면 그의 블로그에 방문하면 된다.


**헤더사진 출처 : channel9.msdn의 스콧 마이어스 발표 영상

저작권자 © 블로터 무단전재 및 재배포 금지