개발자가 스웨덴으로 이직한 썰 21
한국에서 더 이상 회사 신입이 아니게 된 이후 거의 매년 인턴을 받았으니까 기회가 생기면 빠짐없이 인턴 멘토링을 했고 신입사원 부트캠프도 한 번 가봤다. 운이 좋게 이런 기회가 계속 왔고 할 수 있도록 도와주는 분들이 주변에 있었다. 사실 멘토링을 유별나게 좋아하는 것은 아니다. 누군가에게 좋은 영향을 주고 싶다는 욕망은 항상 존재하나 직접적인 영향력이나 결정권을 가지게 되는 것은 여전히 부담스럽기 때문이다. 멘티라고 이름 붙인 사람에게 느끼는 정은 스위치를 아무리 끄려고 해도 끈질기게 잔상으로 남아서, 피드백을 쓰거나 채용을 결정해야 하는 시기가 오면 정을 밀어내는 것이 매번 곤욕스러웠다.
그럼에도 멘토링은 내게로 미러링 된다는 생각으로 매번 인턴을 받았다. 길을 찾으려는 타인에게 내가 도움을 줄 수 있다면 내게도 비슷한 일을 할 수 있다고 믿기 때문이다. 나를 들여다볼 때 나는 자신이면서도 타인일 수 있기 때문에, 타인의 거리에서 관찰하고 이해하는 방법은 자신에게도 적용 가능하므로.
무엇보다 막 개발자로 시작하는 사람들에 대해 알고 싶었다. 나는 회사에서 나이가 들어간다. 이 작은 사회로 막 들어오는 사람들을 가르치고 평가할 책임을 점점 받게 된다는 뜻이다. 나를 직업으로서의 개발자로 살게 하고 성장시킨 누군가의 시간들을 환원해야 할, 순환의 사이클 반대편에 서기 시작할 시간이 온다. 그래서 어린 개발자들은 어떤 배경을 가지고 있고, 왜 개발을 하고 싶어 하고, 무엇을 어떻게 배우고, 회사를 경험했을 때 어디에서 놀라고 어려움을 겪는가. 그런 내가 미처 듣지 못하는 곳의 이야기가 궁금해서 인턴과 신입사원들에게 귀를 열었다. 이것은 인력 시장(!)에서 내 위치를 점쳐보는 목적도 있지만, 미래의 동료를 알고 같이 일하는 법을 배우려는 의도가 다분하다.
공대생이 아닌데 개발자가 되고 싶어 하는 사람들이 많은 것은 알고 있었는데 내 주변에는 이런 경우가 전무했다. 전공자 또는 복수전공, 최소한 공대 백그라운드가 있는 사람들이다. 내가 백엔드 개발자로만 일해서 인지도 모르겠다. 프로그래밍을 막 배우는 사람들에게 프론트가 훨씬 구체적인 결과를 주고 또 이런 이유로 프론트를 배우는 사람들도 많으니까 말이다. 그리고 백엔드는 코딩 너머의 이해해야 하는 영역이 넓어서 커리큘럼이 없이 취미로 시작하기엔 막막할 수 있을 것 같다.
그러한 이유로 비슷한 사람들과 계속 같이 일을 해왔는데, 올해 만난 인턴은 좀 달랐다. 나의 첫 한국인이 아닌 인턴 J는 컴퓨터와 비지니스를 반반 공부했다고 한다. 엔지니어 인턴으로 왔지만 이 분야에 집중한 것 같지 않았다. 학교에서 들은 과목과 프로젝트는 내 생각보다 훨씬 간단했고 학교 밖에서 핵데이에 나가거나 따로 공부한 적이 없다고 했다. 프로젝트를 하면 거의 프론트를 했는데 가능하다면 회사에서 백엔드를 배우고 싶어 했다.
우리 팀 매니저가 겨울쯤 온콜이 가능할 정도로 팀에 익숙해지는 것을 인턴십의 목표로 제시했을 정도로 인턴 스크리닝에 통과한 사람에게 높은 기대를 걸었으나, 나는 J의 첫 2주를 지켜보면서 기본 지식이 많이 빠져있는 것만 발견하는데 그쳤다. 우리 팀은 데이터 인프라를 제공하는 팀들 중 하나로 백엔드와 데이터 세계에 동시에 발을 걸치고 있다. 그런데 J는 둘 중 어디에도 이해가 부족했고 기본적인 cache, hash, 백엔드란, map-reduce 같은 것을 하나하나 설명해주고 알아야 할 개념을 짚어줘야 했다. 백엔드나 데이터에 대한 이해가 없는데 우리와 일을 하고 싶어 하는 사람은 매니저에게도 나에게도 처음이었다. 매니저는 그간 그가 담당했던 인턴으로 시작해서 채용된 사람들을 떠올리며 행복 회로를 너무 일찍 돌린 거다.
이 기간에 느낀 스트레스는 입사 이래로 최고였다. 어떻게 이런 것도 모를 수가 있는지 조금 충격을 받고, 배우게 도와주면 된다는 생각에 열심히 설명해주다가, 소중한 업무 시간에 수업을 하고 있는 것에 현타가 오고, 그래도 조금씩 쫓아오는 것에 기특함을 느끼기의 반복이었다.
나의 당연함이 과연 모두의 당연함인지 혼란스러웠다. 요즘에는 다양한 배경의 사람들이 개발자로 전향하고 그들이 어떻게 공부하는지 잘 모르니까 내가 너무 높은 기준을 가지고 있는 것이 아닌지 걱정되기 시작했다. 아니면 내가 드디어 꼰대가 된 건가! 라떼는 말이야를 내뱉고 있나! 더군다나 지금 회사에서 인턴 멘토링이 처음이고 아직 면접 경험이 없어서 회사의 기준보다 높은 것도 걱정거리 중 하나였다. 면접을 통과했으면 이미 충분한데 내가 너무 야박하게 구는 게 아닌가 하고.
개발자를 가지고 있는 지식만으로 평가할 수 없다. 잘 알고 있다. 아는 게 많으면 좋은 개발자인가? 아닐 수도 있다. '같이 일하고 싶은 개발자'를 정의하는 다차원의 매트릭스는 전적으로 개인이 채워가기에 달려있다. 컴퓨터를 너무 사랑하는 geek이 아니어도 된다. 그래서 어떤 주제를 모른다는 이유로 J가 뽑을 만한 사람이다, 아니다를 판단할 합리적 근거가 나에게는 없다. 개인적 기준을 '당연'이라는 강력한 말과 함께 남한테 들이댈 수 없다.
개발자에게는 새로운 내용을 계속 받아들여야 하는 직업적 숙명 때문에 모르는 부분을 잘 습득하는 성실함과 센스가 오히려 더 중요한 기준이 되곤 한다. 그래서 J를 가장 가까이서 보는 나의 역할은 self-learner로써의 잠재력을 찾는 것이어야 했다. 내가 기대한 것은 모르는 코드와 인프라에 뛰어들어 물어보고 실수하고 고치면서 아는 영역을 야금야금 넓힐 수 있는 가능성.
하지만 정작 J가 할 수 있는 것이 별로 없었다. 그가 이해하기에는 현업의 추상(abstraction)이 너무 깊었던 거다. 우리 팀이 만들고 있는 추상 레이어를 설명할 때 한 단계나 두 단계 아래까지 보여주면 말이 통하는 것이 보통인데 J에게는 밑바닥까지 보여줘야 했다. cache, hash, ... 이런 것들을. 그래서 현상태의 이해가 우리가 같이 할 수 있는 전부였고, 아이러니하게도 지식의 부재로 이 사람이 미지의 세계를 어떻게 탐험하는지 가능성을 보기가 힘든 상황이 벌어졌다. 지켜보는 나도 스트레스가 엄청났으니 J에게도 힘든 시간이었을 것이다.
내가 멘토링을 하면서 여러 번 생각했던 것들.
회사는 학교가 아니다. 기본이라고 일컬어지는 것들은 기본적으로 알고 있어야 한다. 무엇이 기본인가에 대한 답은... 솔직히 나도 모르겠다.
신입 개발자의 기준은 높다. 간단한 실무 수준의 개발을 미리 해보고 오는 사람들이 많아지고 있고 회사에서도 이것을 잘 알고 있다. 현업을 시작하지 않은 사람에게 향하는 실전 경험 요구는 유독 개발자들의 세계에서 혹독한 느낌인데, 프로그래밍의 접근성이 계속 좋아지는 한 이런 흐름은 쉽게 바뀌지 않을 것 같다.
그래서 혼자 개발해보는 절대적인 시간을 채워야 하고 프레임워크를 써서 작은 서비스를 만들어보는 연습도 조금 필요하다고 생각한다. J에게도 똑같은 피드백을 주었다. 프레임워크를 써서 놀고 완성까지 하면서 문서를 찾고 읽는 법, 디버깅, 추상(프레임워크) 위에 추상(내가 만들고 싶은 것)을 쌓는 법 등을 느껴보고 이 과정에서 '기본'의 물음표를 채울 수 있길.
매니저와 인턴십 프로세스에 대해 많이 이야기했다. 정규직 채용은 회사 차원의 프로세스가 갖추어진 반면 인턴십은 허술한 데가 너무 많다. 인턴이니까. 그러나 인턴에게 업무를 주고 가르치는데 시간은 정규직에 못지않고 어쩌면 허술한 프로세스 때문에 더 많은 시간이 필요할 수도 있다. 인턴에게도 팀에게도 비싼 시간을 서로 의미 있게 쓰려면 인터뷰부터 채용 결정까지 일관된 정확한 목표가 있으면 좋겠다는 것이 나의 피드백이었다.
J는 어떻게 되었냐면 돌고 돌아 결국 다른 팀에 채용되었다. 인턴십이 끝나고 나서야 우리는 서로에게 스트레스를 내려놓고 편한 사이가 되었고 종종 내 자리에 들러 쫑알쫑알 이야기를 하고 간다. 내가 식물을 키우는걸 알고 선물 받은 콜레우스 가지는 J의 이름을 받아 집에서 잘 자라고 있다.
* 학교와 현업 사이의 간극을 다룬 팟캐스트를 추천한다.
The Changelog podcast - Why smart engineers write bad code
19th October 2019
#개발자 #스웨덴 #해외취업