요즘 기술 트랜드에 맞고 경쟁력이 있는 글로벌 기술 스택을 계속 추가하자
https://brunch.co.kr/@nashorn74/39
필자는 8비트 컴퓨터 시절부터 BASIC으로 컴퓨터 프로그래밍을 시작한 세대였고, 당시 좀 한다는 형님들은 기계어나 어셈블리어로 프로그래밍을 하던 시절이었다. 물론, 필자는 기계어나 어셈블리어와 같은 저수준 언어에는 관심이 없었던 초등학생이었기에 고등학교 시절까지 BASIC으로만 여러가지 프로그램을 만들었었다. 그러다가 대학교 1학년때 부터 C언어를 사용하기 시작했고,(전공 과목으로 배우기 전부터 개인적으로 시작함) 그때부터 C언어가 주력 프로그래밍 언어가 되었다. 첫번째 직장에서 C++을 사용하면서 C/C++을 실무에서 10년이 넘는 기간 동안 사용해왔었다. 그러나 다들 아시다시피 2000년을 기점으로 웹 개발이 대세가 되는 시기가 도래했고, 어렸을때부터 16년 이상을 응용 프로그램 개발에 매달렸던 필자에게는 과도기적인 시기가 다가왔다. 물론 여전히 응용 프로그래머를 필요로하는 업종은 많았지만, 슬슬 위기감 같은 것이 느껴지던 시절이었다. 열악하던 피쳐폰용 소프트웨어 개발이나 당시 웹 기술을 사용한 개발은 개인적인 적성에 맞지 않았기 때문이다. 그러다가 2007년 경에 윈도우 모바일 프로그래밍을 시작하면서 모바일 단말에서의 프로그래밍에 입문하였고, 2009년부터는 안드로이드와 아이폰 개발을 시작하게 되면서 2010년부터 불어닥친 스마트폰 붐에 편승할 수 있었다. 레이 쥔의 말처럼 "돼지도 태풍을 만나면 날수있다"라는 것을 실제 체험하던 시기였다.
어찌보면 필자는 2010년부터 아주 좋은 기회를 얻은 셈이다. 기술적인 면에서 안드로이드/아이폰 개발은 기존 응용 프로그램 개발과 큰 차이가 없었지만, 새로운 패러다임을 가진 기술들이 빠르게 나와서 접목되고 사라지는 좋은 시장을 가지고 있었기 때문에 필자의 인생에서 그 어떤 때보다 많은 정보를 흡수하여 내것으로 만들던 시기가 되었다. 그 이전까지만 해도 별다른 매력을 느끼지 못했던 웹 개발의 경우에도, Javascript와 Ajax를 이용하여 SPA 형태로 만드는 개발 방식에 대해서 접할 기회가 늘면서 조금씩 사용하게 되었고 그러한 경험이 Node.js와 AngularJS를 이용한 프론트앤드/백앤드 프로그래밍을 하게 되는 결과로 이어졌다. 또한 스마트폰 앱이나 서비스들은 자연스럽게 클라우드나 빅데이터, 사물인터넷 등으로 확장을 해야했기 때문에 그에 대한 경험도 쌓을 수 있는 기회가 많았다. 즉, 새로운 기술들을 최전방에서 직접 부딪치면서 사용해보고 내 것으로 만들 수 있는 혜택을 누린 셈이다. 현재 필자는 독일에서 Python과 Vue.JS를 사용하여 프론트앤드/백앤드 프로그래밍을 하면서 데이터 로깅을 위한 빅데이터 시스템을 만드는 "풀 스택 개발자"이다. (회사 계약서와 비자에 명시된 공식 직책임) 한국에서 풀 스택 개발자란 개발자들이나 관리자들 모두에게 환영받지 못하는 경우가 많은데, 그와 달리 독일 스타트업들은 "시니어" 풀 스택 개발자를 많이들 찾는다.
앞서 언급한 것처럼, 필자는 현재 사용하고 있는 프로그래밍 언어나 도구가 상당히 다양하고 많은 편이다. 웹 서버와 웹 클라이언트(SPA), 모바일 클라이언트(안드로이드/아이폰)는 물론 빅데이터나 사물인터넷 등을 구현하기 위한 서비스 설계 및 구축이 가능하기 때문에 동시에 다양한 개발 환경을 사용하는 경우가 많다. 그래서 "풀 스택 개발자"란 환상이라고 치부하는 사람들 입장도 이해는 간다. 왜냐하면 대부분의 경우, 몇가지 이상의 기술이나 언어를 동시에 사용하는 개발자가 (다행히도!) 흔하지는 않기 때문이다. 필자 역시 사람이라 지금 사용하는 모든 기술을 완벽하게 이해하고 있다라고는 할 수 없겠지만, 최소한 이들 기술을 융합해서 다양한 분야에 응용해본 경험과 지식을 가지고 있기 때문에 충분한 경쟁력을 가지고 있다고 생각한다. 또한, 이렇게 많은 기술을 사용할 수 있게 되는 것에 대해서, 한국의 IT 업계에서 일하는 개발자 입장에서는 무조건 환영할 만한 일은 아니다. 할 줄 안다고 하면 더 많이 시키면서 더 빨리 하기를 원할테니까 그렇지 않아도 착취당하는 개발자들 입장에서는 설령 자신들이 할 수 있다고 하더라도 숨기는 것이 현명한 선택일 수 있다. 실제로 필자 역시, 어디 가서 안드로이드와 아이폰을 둘 다 개발할 수 있다라고 이야기를 하면 대부분 동시에 만들어질 것이라고 기대하는 꼴을 많이 보아 왔다. 사람은 몸이 한 개라 한 번에 물리적인 일 한 가지만 하도록 태어났다는 것을 잊은 사람들이 한국에는 꽤 많다.
필자가 장황하게 이야기를 꺼낸 이유는, 20년이 넘는 개발 경력을 가진 필자가 이런 히스토리를 가지고 있었기 때문에 독일에서 구직을 하는 것이나 취업하는 것에 큰 도움이 되었다는 이야기를 하기 위해서이다. 만일 10년전에 모바일 단말에서의 개발을 준비하지 않고 계속 C/C++이나 Java 프로그래머로 머물러 있었다면, 단언컨데 독일에서의 취업은 더 쉽지 않았을 것이다. 물론, 그건 한국에서도 마찬가지였을 것이다. 필자와 같은 40대 이상의 사람들이 마음은 굴뚝같아도 외국으로 이민이 쉽지 않은 가장 큰 이유는, 한국과 동일한 수준의 직업이나 직장을 구하는 것이 사실상 거의 불가능하기 때문이다. 한국에서 아무리 잘나가는 의사라고 하더라도, 독일에서 의사로 일을 하려면 언어를 배우고 시험 준비를 다시해서 독일의 의사 면허를 따야 한다. 이미 한국에서 돈을 잘 벌고 있고, 가족까지 있는 40대 의사가 그렇게까지 하면서 이민을 가려고 하는 것은 정말 쉽지 않은 선택이다. 대부분 한국에서의 자기 커리어를 인정받고 독일에서 그대로 이어나갈 수 있는 직장을 구하는 것이 힘들어서, 상대적으로 취업이 쉽다는 분야를 찾아서 도전하기도 한다. (배관공이 취업도 잘되고 돈도 많이 번다고 카더라) 하지만, 소프트웨어 엔지니어는 다르다! 여러분이 적절하게 준비만 잘해왔고, 앞으로 새로운 변화에 정면으로 맞서서 돌파할 의지만 있어도 충분히 좋은 직장을 구할 수 있고 쉽게 비자를 취득할 수 있다. 독일에서 40년 넘게 사신 분들 입장에서는, 필자 처럼 쉽게 직장을 구하고 비자를 구하는 경우를 본 적이 별로 없어서인지 이 부분이 정말 신기하신 모양이다. 물론 필자 입장에서만 보면 결코 쉬운 일이 아니었지만 말이다. 확실한 것은 소프트웨어 엔지니어는 남들에게는 없는 "특혜"를 받을 수 있다는 것이다.
한국 개발자들이 독일 회사에 취업하기 위해 문의하는 글을 종종 볼 수 있는데, 대부분 이런 식으로 질문을 한다. 독일에서 JAVA 개발자 많이 구하나요? PHP 개발자는 취업이 잘되나요? 한국은 좋은 의미로 말하면 SI 형태의 소프트웨어 하청 시스템이 잘 갖춰져 있다보니 소프트웨어 개발자의 구인/구직 패턴이 나름 만들어져 있다. 그래서 Java 개발자라면 대충 어떤 종류의 일을 하게 되는지, 어느 정도의 급여 수준을 받을 수 있는지 쉽게 예측이 가능하다. 따라서 이런 시스템에 익숙한 개발자라면 저런 식의 질문을 하는 것도 이해는 된다. 하지만, 한국 외 지역에서 특정 언어나 특정 도구에 한정을 하게 되면 그만큼 취업이 힘들어질 수 있다는 것을 감안해야 한다. 예전에 독일 IT 회사에 취업하신 분의 블로그 글에서도 보았는데, 그 분은 오퍼를 받은 회사의 업무가 기존에 자신이 했던 업무와는 상관이 없는 일이었지만 받아들이고 일을 시작했다는 것이다. 필자가 말하고 싶은 것은 바로 이러한 열린 태도가 필요하다는 것이다. 한국과 전혀 다른 곳으로 와서 취업을 하고 살아갈 각오를 할 정도라면 자신이 기존에 사용하던 몇몇 기술이나 도구에 집착하고 한정을 할 필요는 없다. 한국에서는 한국 시장에 맞는 커리어를 관리해야 했다면, 독일에서는 독일 시장에 맞는 커리어로 변화를 주어야 하는 것은 당연한 일이다. 처음에는 쉽지 않고 힘들어보이지만, 막상 해보면 그다지 어렵지 않다는 것을 곧 느낄 수 있을 것이다. 독일 회사 뿐만 아니라 한국 회사에서도 개발자에게 원하는 것은 특정 언어나 기술에 대한 경험과 스킬도 있겠지만, 그것을 바탕으로 그 회사에서 필요한 기술을 이용하여 좋은 제품을 그들이 원하는 기간에 맞춰서 만드는 것이다. 따라서, 그깟 특정 개발 언어나 도구 때문에 자신의 한계를 낮게 설정하지는 말자. The sky is the limit.
필자에게 이런 질문을 하는 분들이 가끔 있다. "회사에서는 C/C++이나 Java를 사용하여 지루한 소프트웨어 개발을 하고 있는데, 최신 기술에 대해 접해볼 기회가 없고 이대로 가다가는 계속 뒤쳐질 것 같아서 불안하다. 어떻게 하면 좋을지 모르겠다." 아마도 대부분의 현업 개발자들이 하는 고민이고, 이것을 위해서 스터디를 열심히 나가거나 강의나 강연을 듣기도 할 것이다. 필자의 경험 상 가장 좋은 것은 자신의 업무를 통해서 실제 일로써 경험을 하는 것이 가장 빠르고 확실한 방법이다. 하지만, 회사에서 원하는 소프트웨어 개발이란 개발자 개인의 관심사나 의지와는 상관없는 방향으로 가기 마련이기 때문에 어떤 회사를 다니든 그 모두를 해결할 수는 없다. 즉, 새로운 기술을 접하기 위해서 이직을 하는 경우도 많은데, 이런 것들은 몇번의 이직으로도 해결되지 않을 수 있다는 이야기이다. 그래서 필자가 하는 조언은 "현재 다니는 직장(메인잡)을 열심히 다니면서, 가능하다면 새로운 기술을 사용할 수 있는 사이드 잡을 찾아서 해라"이다. 대부분의 회사는 근무외 시간에 다른 일을 하는 것을 허용하지 않거나, 암묵적으로 용인하지 않을 수 있다. 하지만, 여러분이 자신의 미래에 대한 준비를 위해서 또는 현재 하고 있는 메인잡을 더 잘하기 위해서는 꼭 필요한 부분일 수 있다. 그것이 개인적인 프로젝트이든 아니면 아는 지인을 도와주는 일이든, 또는 가능하다면 아무것도 없는 신규 스타트업을 도와서 프로토타이핑을 하는 것이든 말이다. 필자가 제일 싫어하는 말 중에 하나는 "회사를 위해 내 인생을 다 바쳤는데 이제와서 나를 이렇게 내칠 수 있느냐"라는 것이다. 어느 회사이든 당연히 개인의 인생을 책임져 주지 않고 책임질 수도 없다. 따라서, 항상 스스로가 최악의 상황에 대비를 해야하는 것은 기본이다. (그래서 보험을 드는 것 아닌가?) 따라서, 회사가 허락을 하든 안하든 상사가 뭐라고 하든, 주변에서 뭐라고 딴지를 걸든 개의치 말고 자신의 미래를 위한 기술적인 보험을 들어야 한다.
여기서 중요한 것은 필자가 말하는 "사이드 잡"은 일반적으로 말하는 "투잡"과는 성격이 다소 다르다. 투잡은 생계를 위해 더 많은 소득을 올리는 것에 포커스가 맞춰진 단어라면, 사이드 잡은 반드시 자신이 관심이 있는 분야에서 실전 경험과 경력을 쌓을 수 있는 것이 무엇보다 중요하고 그에 따른 소득은 "덤"이어야 한다. 여러분도 잘 알고 있다시피 대부분의 회사들은 한 회사에 오래 다니면서 다양한 경험을 쌓은 검증된 인재를 원한다. 하지만, 대부분의 경우 한 회사를 오래 다니면 절대로 다양한 경험을 쌓을 수 있는 기회가 존재할 수가 없다. 다양한 경험을 쌓으려면 다양한 분야의 회사를 다녀봐야 할 수 있는 것이지만, 이것은 한 회사를 오래 다닐 수 없는 모순을 가지고 있다. 즉, 대부분의 회사들은 불가능한 일을 개발자들에게 요구하고 있는 것이다. 하지만, 적절하게 사이드 잡을 잘 활용하면 한 회사를 오래 다니면서 (메인잡) 다양한 분야의 경험을 쌓은 (메인잡+사이드잡) 인재가 될 수 있다. 이것은 개발자 개인적으로 중요하고 꼭 필요한 일이지만, 회사 차원에서도 당장 큰 도움이 되는 일이다. 기본적인 급여 수준이 높지 않아서 궁여지책으로 투잡을 허용하기 시작한 일본의 기업들처럼, 개인의 기술 발전과 더불어 추가 소득을 올릴 수 있는 사이드 잡에 대한 허용은 반드시 필요하다고 생각한다. 고인물은 썩을 수 밖에 없고, 우물 안 개구리는 세상 밖을 모르는 것이 당연하다. 회사에만 쳐박혀 있는 개발자를 원하는 회사나 경영진은 고인물이나 우물 안 개구리 같은 개발자들과 일을 할 수 밖에 없다.
그렇다면, 어떻게하면 현재 핫한 기술 스택이 무엇인지 알 수 있을까? 생각보다 쉽다. 한국이라면 "로켓펀치"라는 스타트업 전문 사이트에 올라 온 구인 공고를 보면 되고, 독일이라면 "BerlinStartupJobs.com"에 올라온 구인 공고를 보면 된다. 스타트업들의 구인 공고에는 자신들이 필요한 기술 스택을 친절하게 잘 설명해주고 있고, 이런 스타트업들에서 필요로 하는 기술 스택이 지금 시기에 우리가 준비하고 사용해야 하는 것들이다. 반대로 특정 스타트업에서 사용하는 기술 스택을 보면, 그 스타트업의 개발팀 스타일을 예측할 수 있다. 한국의 스타트업 중에서 굳이 Java나 PHP를 사용하는 업체가 있다면, 그것은 Java나 PHP 전문가인 CTO나 개발 핵심 인력이 있다는 의미이다. (또는 외부 개발업체가 그렇게 만들어 놓았거나) 필자는 Java나 PHP가 나쁘다는 이야기를 하는 것이 아니니 오해 없기 바란다. 필자 역시 최근에 사용해본 Spring Boot를 무척 마음에 들어하고 있고 필요하다면 언제든 사용할 의사가 있으며, 안드로이드 경우에는 10년 가까이 Java로 개발해오고 있다. 하지만, 스타트업에서는 때에 따라서 가장 적합한 기술을 선택해서 신속하게 사용하는 것이 가장 중요한데, 자기가 써본 유일한 기술이라거나 오랫동안 사용했다는 이유만으로 관성적으로 특정 기술을 고집하는 경우를 종종 본다. 이런 개발자들은 최소한 스타트업에는 맞지 않는 인재라고 본다. 자신이 이전에 무엇을 사용해왔는지와 상관없이 고객이나 시장에 가장 적합한 제품 또는 서비스를 만들기 위해 어떤 기술과 도구를 선택할 것인가를 고민하고, 연구하고 직접 실행에 옮길 수 있는 개발자가 되어야 한다. 몇분이면 끝낼 수 있는 일을 몇시간 또는 며칠 걸려서 이쁘게 완성하는 것이 자랑은 아니다.
만일 여러분의 현재 실력이나 가치에 대해서 객관적인 평가를 받기를 원한다면, 이직 의사가 없더라도 잡코리아나 로켓펀치에 올라온 구인 공고 중에 본인이 관심있는 분야의 회사들에 지원을 해보고 면접을 보면 금방 알 수 있다. 그 회사들이 여러분에게 제시하는 평균 연봉이 현재 여러분의 수준이다. 골방에 쳐박혀 있기를 좋아하고 대인 관계의 폭이 넓지 않은 대부분의 개발자들은 주변의 이야기만 듣고 자기 자신에 대해서 과대 평가를 하거나 과소 평가를 하는 경우가 많다. 그래서 무책임한 주변인들의 말만 듣고 의사 결정을 했다가 낭패를 보는 경우도 허다하다. 같이 일하는 동료나 선배/후배, 친구, 가족 등은 여러분의 개발자 인생에 도움을 줄 수 없는 사람들이며, 그들의 의견은 미안하지만 객관적일 수 없으며 대개 아무도 책임질 수 없는 무책임한 의견에 불과하다. 하지만, 여러분에게 직접 돈을 지불할 사람들이 하는 의견은 상대적으로 객관적일 수 밖에 없으며 여러분들이 무엇보다 주의깊게 들어야 하는 말이다. 그 회사들에게 미안한 이야기지만, 필자는 정기적으로 이런 식으로 올바른 방향으로 나아가고 있는지를 항상 체크해왔고 필자의 연봉 수준이 적절한지를 확인해왔다. 그러다가 괜찮은 회사나 대표를 만나게 되면, 나중에 이직해야 할 때 최우선적으로 고려를 하기도 했었다. 어쩌다 보니 필자는 했던 것을 계속하기보다는 항상 새로운 분야에서 새로운 일을 하는 것을 선택했었는데, 이 또한 필자의 개발 스코프를 확장하는데 큰 도움이 되었다. 새로운 기술이나 도구에 대한 두려움을 버리고, 기술적으로 배울만한 상대가 있다면 나이나 경력에 상관없이 최대한 친밀한 유대 관계를 쌓아서 배워라. 그것만이 우리가 앞으로 펼쳐질 험난한 세상에 살아남을 수 있는 유일한 방법이다. 아쉽게도 일반인들은 얻지 못하는 특별한 혜택임을 잊지 말자.
다행히 지원할 수 있는 분야가 많았던 필자는 BerlinStartupJobs.com를 통해서 다양한 분야의 회사에 지원을 해보고 반응을 볼 수 있었다. 우선 안드로이드와 아이폰의 경우, 굳이 시니어가 아니어도 충분히 필요로 하는 제품을 만들 수 있기 때문에 경쟁이 치열하다는 느낌이 든다. 한국에서는 안드로이드 개발자에 비해 아이폰 개발자가 훨씬 적기 때문에 구직에 좀 더 유리하지만, 여기에서는 그런 차이는 느껴지지 않는다. 그리고, 어느 한쪽이든 깊이 있게 파고들어서 완벽하게 이해를 하고 프로그래밍 하는 것을 원하는 것 같아서, 굳이 양쪽 모두를 다 할 수 있다는 것이 큰 장점이 되는 것 같지도 않다. 따라서, 안드로이드가 되었든 아이폰이 되었든 경력 5년 정도의 탄탄한 기본기와 완벽주의자 성격을 가진 경력 개발자라면 (영어는 기본) 충분히 경쟁력을 가질 수 있을 것이다. 마찬가지로 프론트앤드 개발자도 앱 개발과 비슷한 것 같지만, 백앤드 개발자나 백앤드에 비중을 둔 풀 스택 개발자라면 확실히 독일 스타트업 취업에 유리하다고 생각한다. 특히 백앤드는 사용할 수 있는 개발 환경이 다양하고, 회사마다 조합이 저마다 다르기 때문에 본인이 사용해왔던 개발 환경과 유사한 회사를 찾을 확률이 높고, 다소 차이가 있다하더라도 쉽게 적응해서 일을 할 수 있는 여건이 될 수 있기 때문이다. 어찌보면 스타트업은 한국이나 독일이나 비슷한 양상을 띄는 것 같다. 물론, 독일의 스타트업이 고용 안정성 측면에서 좀 더 나은 것 같지만 한국의 스타트업에서의 근무 경험은 그런면에서 독일 뿐만 아니라 미국이나 다른 나라의 스타트업으로 이직할 때 확실히 도움이 된다고 판단한다.
새로운 기술 스택을 하나씩 추가할 때마다 고통스럽고 힘들며, 때로는 오랜 시간과 노력이 필요하다. 하지만, 그렇게 하나 둘씩 쌓이는 기술 스택이 한국 뿐만 아니라 독일에서도 통하는 무기가 되어준다는 사실이 그러한 인내의 과정을 기꺼이 받아들일만한 가치가 있다는 것을 증명해주고 있다. 일부 분야를 제외하고는 하나의 기술을 깊게 파고 오랜 기간 써먹는 시대는 이미 지나갔다. 변화하는 시대의 흐름을 따라갈 것인가, 역행할 것인가 아니면 그대로 주저 앉을 것인가는 여러분의 선택이고 여러분이 책임져야할 미래이다.