All Articles

프로그래머스 인터뷰 회고 (?)

갑작스러운 요청으로, 마음의 준비도 없이, 미국에서의 인턴십에 관심이 있는 엔지니어를 대상으로 인터뷰를 하게 되어 뭘 어떻게 해야하나 고민하다가, 막상 인터뷰어 분을 만나봤더니 그냥 아무말이나 하셔도 된다고 하셔서 아무말을 하고 났더니 양심에 찔려서 스스로 보충할 겸, 회고할 겸, 인터뷰 편집본을 확인하면서 써 보는 글.


실제 인터뷰는 꽤 길었고 아무말대잔치성 발언도 꽤 많았는데, 그래서인지 편집을 했어도 이야기가 여기저기로 새는 느낌입니다. 더군다나, 스스로는 제일 중요하다고 생각하지 않았던 이야기 - 친구를 만듭시다 - 가 결론처럼 되어버려서 약간 의아하기도 하고요. 뭐 물론 중요하다고 생각하긴 하는데, 그건 사람마다 다르게 받아들일 문제니까요. (물론 인생 길게 가져가시는 분들은 당연히 친구 있으면 좋죠. 말할 것도 없지만) 전반적인 톤 자체가 아무말에 가까웠으므로 딱히 심각하게 받아들일 부분이 있었다고는 생각하지 않지만, 그냥 가볍게 봐 주시면 매우 감사하겠습니다.

이야기 흐름에 크게 관계없는 디테일한 부분들(예를 들면, SI 시절에 했던 일들. 지금 생각하면 매니악한 것들도 많이 다뤘는데 인터뷰할 당시에는 기억이 안 떠올라서 생략;;)은 그냥 넘어가더라도, 사실관계가 다르거나 아예 평소 생각과 좀 다르게 말이 나온 것, 혹은 빼 먹은 이야기를 나열해 볼게요.

  • “내가 어떤식으로든 세상에 영향을 미친다. 사람들한테 유용한 어떤것을 만들고 싶다.”

이 부분에 대한 고민을 가끔 합니다. 최근 넷플릭스에서 Great Hack(한국어로는 “거대한 해킹”이란 타이틀이 붙었습니다)라는 다큐멘터리를 봤습니다. 많은 서비스가 사람들에게 유용한 서비스를 넘어서, 최대한 효율적으로 사람들의 시간을 뺏는 쪽으로 (나쁘게 말하면 중독시키는) 진화하고 있는데다, 심지어는 개인정보의 수집 창구 역할을 하기도 하죠. 사람들의 삶에 영향을 미치는 것을 넘어, 어떻게 좋은 영향을 미칠 것인가도 함께 고민해야 하는 부분이라 생각합니다.

  • “그 때 이제 한국에 iPhone이 발매가 되죠.”

한국에 아이폰 3GS가 발매된 것은 2009년 11월이었습니다. 저는 2009년 여름부터 아이팟 터치로 앱을 개발하고 있었어요.

  • “근데 이걸 ASP.NET으로 하려니까 생산성이 높진 않았어요.”

그 당시(2010년;)라면 모를까 지금의 .NET Core는 그렇지 않아요. ASP.NET의 생산성에 대해 의심을 하고 계시다면 여러분 그것은 크나큰 오해입니다.

  • “은퇴하기 직전까지 계속 새로운 기술을 공부하고, 기존에 알고 있던 걸 버려가면서, 계속 공부를 하고”

제가 뱉은 말이지만 (…) 컴퓨터 공학에 있어서의 학습의 개념을 상당히 잘못 표현한 말입니다. 개인적으로, 컴퓨터 공학에는 (실제로 명확한 경계를 정의하기는 어렵지만) 기초의 영역과 응용의 영역이 있다고 생각합니다. 제가 생각하는 응용의 영역에 대한 기준은 “실세계의 문제를 해결하기 위한 것들”입니다. 그리고 대부분의 소프트웨어 엔지니어들이 하는 일이 이러한 응용의 영역에 있고요.

소프트웨어 엔지니어는 문제를 해결하기 위해서 다양한 지식을 쌓습니다만, 응용의 영역에 있는 지식들은 때로는 자기들끼리 경쟁을 하거나, 서로를 대체하거나 하는 일들이 왕왕 일어납니다. 이유 또한 다양하죠. 성능, 편의성, 재사용성, 확장성, 보안, 생산성 … 시장에 서로 대립하는 기술이 있으면, 보통 어떤 한 기술이 압도적으로 우위를 갖지 않는 한 (심지어 압도적으로 우위에 있다고 하더라도) 나머지 기술이 시장에서 순식간에 사라지는 일은 잘 일어나지 않습니다. 기존 시스템의 유지보수가 이유가 될 수도 있고, 시장에서 당장 구할 수 있는 엔지니어의 수에 따라 기술이 결정될 수도 있으니까요. 이런 이유로, 응용의 영역에 존재하는 기술의 스펙트럼은 상당히 넓고, 이 스펙트럼을 따라서 새로운 지식을 계속해서 쌓아야 할 필요성 또한 높은 영역이 있고 적은 영역이 있습니다.

하지만 좀 더 세부적으로 들어가면, 기술은 특정한 문제에 대한 해법이기도 합니다. 요즈음 각광받는 주제 중 하나인 머신 러닝을 예로 들 수 있을 것 같은데요, 신경망 모델링과 그동안 축적된 컴퓨터의 성능 개선은 데이터 분석을 아예 다른 영역으로 만들어 버렸습니다. 머신 러닝을 필요로 하는 데이터 프로젝트는 많지만, 이러한 머신 러닝을 활용하는 방법에 대해서 잘 알고 있는 소프트웨어 엔지니어는 시장에 많지 않고, 이는 데이터 사이언티스트의 몸값에 반영되고 있죠.

좀 더 풀어서 말하면, 1. 특정한 문제를 해결할 수 있는 기술이 가끔 시장에 등장한다. 2. 초기에 이 기술을 습득한 사람은 많은 보상을 얻을 수 있다. 3. 이 기술을 습득해서 몸값을 높이려는 사람들이 늘어난다. 4. 시장이 점점 커진다. 5. 시장이 충분히 커지면 인력의 포화상태가 일어나 몸값이 떨어진다, 와 같은 과정이 시장에서는 끝없이 반복되고 있습니다. 그렇기 때문에 소프트웨어 엔지니어들이 시장에서 자신의 가치를 인정받으려면, 어느 정도의 학습 수준을 계속 유지해야 하는거죠.

그렇다면 뭔가 새로운 기술이 쏟아져 나올 때마다 그걸 배우느라 자료를 뒤적거려야 하는 걸까요? 컴퓨터 과학을 전공한 사람이라면 알겠지만, 위에서 언급한 머신 러닝도 핵심 개념은 등장한지가 오래 되었습니다. 신경망의 경우, 수학적인 모델은 19세기 말엽에 등장했고, 디지털 컴퓨터에서의 모델은 1950년대에 제시되었죠. 20여년 전에 인공지능은 “뭔가 그럴 듯 하지만 속알맹이는 아무것도 없는 사기 같은” 무언가를 의미했지만, 오늘날의 인공지능은 그야말로 모든 산업 분야를 갈아엎고 있죠. 어떤 기술이 어떻게 위력을 발휘할지 예측하는 것은 쉽지 않은 일입니다.

정리하자면, 소프트웨어 엔지니어에게 뭔가를 공부한다는 것은 투자에 가까운 행위입니다. 현재 시장에서 널리 쓰이는 기술과 아직은 널리 쓰이지 않지만 향후에 폭발할지도 모르는(?) 분야 사이에서 선택을 하는 과정이라고 할까요. 특정 분야를 깊게 탐구하는 엔지니어가 있고, 여러 분야를 넓게 탐구하는 엔지니어도 있습니다. 개인적인 흥미 때문에 분야를 선택하는 엔지니어가 있고, 시장 가치를 염두에 두고 분야를 선택하는 엔지니어도 있습니다. 이런 선택의 과정을 “기존에 알고 있던 것을 버리는” 과정이라고 말하긴 어려울 것 같습니다. (사실, 전문직이라 불리는 영역이라면 어떤 분야에서든 지식 습득의 양상은 비슷하리라 생각합니다) 겉보기에 컴퓨터 산업 분야의 변화 속도가 빨라 보일지는 몰라도, 그 산업을 유지하는 기본 원리는 그렇게 쉽게 변하지 않으니까요.

  • “그러니까 내가 언제 잘릴지 모른다라는 막연한 스트레스도 존재할 수 있죠.”

미국에는 at-will employment라는 고용 계약 유형이 있습니다. 주별로 예외 조항이 있긴 합니다만, 기본적인 개념은 “무슨 이유로든, 아무 때나 고용계약을 해지할 수 있는” 고용 계약입니다. 실리콘밸리의 IT 회사 대부분이 고용 계약서를 쓸 때 이 유형을 택합니다. 인터뷰 상에서는 “현실은 냉혹하다”라고 말하긴 했지만, 사실 회사 입장에서는 뚜렷한 이유가 없다면 해고 결정을 쉽게 내리지 않습니다. 다른 직원들의 사기, 직원을 새로 채용하고 적응시키는데 들어가는 비용, 이런 것들을 고려하면 신중하게 결정을 내릴 수 밖에 없죠.

고용 형태의 차이가 문화의 차이를 만들어 내는 것 뿐이지, 냉혹하다는 표현은 좀 더 나간거 아닌가 싶습니다 ‘ ‘)>

※ 물론 짤려서 상자 들고 집에 가는 일이 벌어지면 … 기분은 더럽겠죠

  • “별의별 주제에 대해서 다 밋업을 해요.”

이 이야기를 하면서 Hacker Dojo (https://hackerdojo.com)를 소개한다는 걸 깜빡했네요. 해커 도조는 일종의 커뮤니티 센터로, 실리콘 밸리에서 성공한 사람들이 기부를 해서 만든 장소입니다. 여기는 365일 무료로 개방되고, 특정한 공간을 점유해서 사용하고 싶으면 약간의 비용을 더 지불하는 형태로 운영됩니다. 탁구대라든가 뭐 이런저런 장난감도 굴러다니고, 커다란 대학 동아리방 같은 분위기에요.

그러다보니 동네에서 온갖 사람들이 몰려들어 이상한 걸 만들고 있습니다. 뭔가 눈에 띄는게 있으면 가서 이건 뭐야 하고 말을 걸면 신나서 자기 작업에 대해 설명하는 사람도 흔히 볼 수 있어요. 밋업도 자주 열리는데, 어떤 테마를 정하고 정기적으로 강의가 열리기도 합니다.


그럼 여기까지. 다음 번에는 (기회가 있을런지 모르겠지만) 좀 더 정제된 내용으로 뵙겠습니다 (?)