본문 바로가기

기타

개발자 채용

최근 개발자 면접을 보면서 느낀점을 기록해본다.

넉두리

내가 소속해 있는 곳은 메이저 회사도 아니고 엄청난 대우를 해주는 회사도 아니다. 회사는 경력개발자를 채용이 불가능하다고 생각하고 항상 신입만을 채용하고 있는 상태이며 그런 신입들 조차도 적절하게 채용되지 않는 현실이다. 애써 채용한 신입들은 어느 정도의 경력이 쌓이면 이직을 준비하고 떠나간다. 여러가지 이유가 있겠지만 현실은 떠나간다는 것이다. 회사는 다시 신입을 채용하고 그리고 다시 이런 반복이 일어난다.

 나의 포지션은 회사의 개발을 총괄하는 CTO 혹은 CIO의 역활이 아니니 이런 정책이나 방향을 정립해나갈 수는 없다. 하지만 현실은 나에게 항상 일어나고 있으며 이것은 지금 내가 속한 조직의 매우 약점이 될 수 밖에 없고 그 약점을 나는 몸으로 느끼고 살아가고 있다. 어디서 이런 부정합이 시작되었는지 모르겠으나 한가지 확실한 것은 이런 문제는 내가 있는 곳만이 겪고 있는 것이 아니고 대부분의 이런 규모 혹은 더 큰규모라도 겪고 있다는 사실이다.

예견된 인력난

 최근들어 플랫폼기업의 엄청난 포식행위가 얼마나 대단한 것이지 모두들 느끼게 되었다. 코로나 시대에 들어서자 실제 자신이나 설비를 가지고 실존하는 서비스나 물건을 만들어내는 회사의 가치보다 그것을 중개하는 회사 혹은 그것의 이용에 다리가 되어주는 회사가 더 주목과 가치를 받고 있다. 이제는 플랫폼기업이라는 용어가 생소한 것이 아니며 우리도 해외와 같이 플랫폼기업의 문제점을 논하는 상황까지 왔다. 1인 1컴퓨터의 시대는 모바일 시대가 되면서 당연하게 되었다. 컴퓨터 장비를 가동하게 하는 소프트웨어의 중요성을 일반인들도 많이 느끼고 있으며 코딩이 교육과정에 기본이 되는 시대에 살고 있다.

 닷컴버블이 꺼지면 우리나라 소프트웨어 관련 학과는 엄청난 정원축소가 일어났지만 현실에서 소프트웨어 개발은 더 많이 발생하여 소프트웨어 개발자 수요의 폭발은 10년전에도 예견되었을 정도이다. 10년전이나 지금이나 항상 하는 말이 어디 개발자 없냐는 이야기이다. 하지만 10년전과 지금의 달라진점은 소프트웨어 개발회사들이 공룡이 되었고 대기업이 되어 자금을 가지게 되니 질 좋은 소프트웨어 개발자를 찾는데 아낌없이 돈을 풀고 있다는 것이다. 이렇게 매이저들이 소프트웨어 개발자의 초봉이 얼마나 된다면서 이야기를 하니 인기없던 컴퓨터공학을 위시한 소프트웨어 관련 학과들의 입학문턱도 높아졌다.

 하지만 매이저들의 연봉인상러쉬를 메이저가 아닌 곳에서는 느낄 수가 없다. 많은 이들이 '네카라쿠베당토' 에서 연봉이 인상하였으니 나도 올라야된다는 달콤한 생각을 가지고 있지만 현실은 개발자라는 옷을 입었다고 갑자기 수준 높은 대우를 해주고 있지는 않다.

 사실 메이저회사들이 수준높은 대우를 해주는 개발자은 A급 개발자로서 개발기본이 잘 갖추어진 개발자에게 그런 수준높은 대우를 해준다는 것이다. 실제 코딩을 조금 할 줄 안다고 무조건 그런 대우를 받는 것은 정말 희박한 가능성이라고 볼 수 있다. 개인적인 사견을 조금 가미하자면 가능성은 제로라고 생각한다. 국비무료 학원등이 개발자의 몸값이 얼마나 하니 6개월 교육과정을 거치면 너희들도 그런 대우를 받으거라고 하지만 현실에서 내가 만난 비전공 국비무료과정 출신들의 수준은 그런 회사들에서 원하는 수준과 매우 동떨어진다. 하지만 이런 분위기는 지속적으로 이어질 것이다. 우리는 컴퓨터를 떠나서는 살 수 없는 세상이 살고 있으며 당연히 일어나야 되는 일이 이제서야 일어나는 것 뿐이다.

왜 개발자 몸값이 비쌀까?

 현시대는 컴퓨팅 기술이 없다면 제대로 돌아가지 않는다. 손으로 하던 집계 통계 등의 일뿐만 아니라 달나라 화성에 가는 로켓드며 수많은 기계들을 제어하고 통제하는 방버에 컴퓨팅 기술을 떠나서 이야기할 수 있는가? 하다 못해 최근 KT통신장애로 KT회선을 쓰는 곳들이 영업을 못하는 상황까지 벌어졌다. 예전에는 백반집에서는 무관한 일이였지만 이번 장애로 백반집의 카드결제가 안되는 바람에 결재를 못했다는 이야기는 생소한 것도 아니다. 현금이 없는 세상에서 전자지불수단이 막혀버리면 아무것도 되지 않는 것을 온국민이 모두 몸소 느꼈다.(한국은행에서 연구중인 cbdc:'중앙은행디지털화폐' 는 이런 이유에서 오프라인결제까지 가능하도록 설계되고 고안되어 연구되고 있다.) 아무것도 아닌 것 같던 전자지불의 기반에는 컴퓨팅 기술이 자리잡고 있다. 이런 것 뿐만 아니다. 이미 우리의 생활에는 컴퓨팅 기술을 기반으로 움직이는 것들이 하나 둘이 아니다.

 이런 컴퓨팅 기술이 사람과 만나는 지점의 마지막에는 항상 소프트웨어가 존재한다. 물론 중간과정에도 있고 기계와 기계의 사이에도 있지만 사람들이 만나는 소프트웨어라는 것이 예전에는 쓰는 사람만 쓰는 혹은 다룰 줄 아는 사람만 다루는 전문가의 영역이였다면 이제는 그냥 모두가 산소와 같이 쓰는 그런 재화의 모습을 가지게 되었다는 것이다. 컴퓨터라고는 만져본적이 없는 우리부모님도 이제는 모바일을 통하여 동영상을 심심한 시간을 보내는 것이 당연한 세상이 된 것이다. 이런 수요때문에 소프트웨어 개발이 엄청나게 일어나고 있으며 대부분의 기술이나 서비스가 소프트웨어와 믹스가 되어서 스타트업으로 이어지고 있으니 소프트웨어 개발자의 수요부족은 당분간은 계속 될 것이다. 그런데 2000년대초 IT버블이후 인력양성은 줄어들고 수요는 폭발하니 수급의 불균형이 발생하고 있는 것이다.

왜 좋은 개발자를 구하려 하는가?

 현실 업계에 들어가면 이런 수요의 덕분에 개발자를 구하는게 상당히 어려운 상황이 되어가고 있다. 솔직히 내가 소속되 회사에서는 컴퓨터관련학과를 전공한 좋은 학교에 좋은 학점의 학생은 일단 만나볼 수가 없다. 우리의 여건이나 대우가 그런 친구들에게는 매력적이지 않으니 어쩔수 없을 것이다. 그리고 그 다음이 학교생활을 그렇게 열심히 하지 않았으나 취업시장을 뛰어나가보려니 현실을 마주하게되었고 기억을 되돌려 공부를 하는 것 보다. 국비무료과정이라는 곳을 통해서 다시 도전을 하게 되는 분류가 있다. 그런 국비무료의 분류에는 비전공도 있고 여러가지 많은 사연을 가진 사람들이 취업의 진입점으로 들어오고 있다.

 소프트웨어 개발은 엔지니어링 분야이다. 엔지니어 분야는 엔지니어 마다의 실력이라는 것이 명백히 존재하는 세상이다. 우리는 학원선생님을 고를 때도 잘 가르치는 실력있는 선생님을 찾고, 어딘가 아프면 그분야에서 잘 치료하는 실력있는 의사선생님을 찾고, 맛있는 음식을 먹고자 할때에도 맛있는 음식을 만드는 실력있는 식당 혹은 요리사를 찾는다. 생활 하나하나에서 우리는 그 분야에 능력있는 사람을 찾는다. 능력있는 사람을 찾는 이유는 그 방명에 확실한 결과를 보장하기 때문이다. 그로서 우리는 시행착오를 줄이고 좋은 만족감을 느낄 수 있기 때문에 능력자들을 찾는다.

 하지만 기초적인 수학을 배우기 위해서 꼭 대단한 선생님을 찾지 않아도 기본은 배울 수 있으며, 감기정도의 아픔에 대학병원에만 있는 높은 수준의 명의를 찾지 않아도 치료가 가능하다. 꼭 맛집이 아니어도, 한끼 식사를 하는데 문제가 없다면 평소 대충의 맛을 보장하는 식당도 문제가 없을 것이다.

 소프트웨어도 간단한 기능을 구현을 한다면 어느정도의 실력자를 구해도 원하는 수준의 소프트웨어를 만들 수 있을 것이다. 하지만 소프트웨어 개발의 경우 대충의 기능이 어느 정도인지 어떻게 알 수 있는가? 1부터 100까지 덧셈을 하는 기능을 대충의 기능으로 볼 것인가? 한 회사의 업무를 처리할 수 있는 통합시스템을 간단한 기능으로 볼 것인가? 아니면 우리가 흔히 보며 접하고 쓰는 메신저의 메세지를 보내는 수준을 간단한 기능으로 볼 것인가?

 다시 다른 측면으로 봐서 우리가 흔히 보는 간단한 메세지를 서로 주고 받는 기능이 유명한 카카오톡의 기능처럼 화려할 필요도 없이 메세지만 보낼 수 있으면 된다고 하더라도 그 메세지의 보관 방법이나 메세지를 주고 받을 수 있는 사람의 수나 환경에 따라서도 구현하는 방법이 어마어마하게 많다. 국민메신저 카카오톡의 경우 메세지자체를 보내는 기능은 처음에나 지금이나 변함이 없지만 그외 추가적인 기능과 전국민이 사용함에도 문제 없이 버틸 수 있는 인프라까지는 지탱하기 위해서는 얼마나 매우 많은 개발자들이 투입이 될 것이다. 우리가 가끔 개발자를 떠올릴 때 차가운 골방에서 오타구적인 한명이 무엇인가를 완성하는 그런 상상속의 인물 하나가 모든 것을 다할 수 있는 시대는 매우 오래전에 저물었다.

 소프트웨어는 한번 만들어진다고 끝나는 것이 아니고 계속 변화를 한다. 무엇인가 처음의 환경과 다를 경우 수정을 통해서 그 생명을 연장할 수 있는 것이 다른 여타의 기술과 다른 특징이다. 그래서 명칭도 소프트웨어이며, 그렇기 때문에 처음개발을 끝내고 매번 생명연장을 하며 사용을 할 수 있도록 개발자들이 투입이 된다. 우리가 흔히 보는 서비스들은 중단 없이 그런 환경을 사용자들에게 제공하기까지 하고 있다.

 그러니 당연히 기업은 좋은 개발자를 구하여 좋은 소프트웨어를 통한 서비스를 제공하고 그것으로 이윤을 창출하려고 하는 것이다. 좋은 소프트웨어 개발자가 좋은 소프트웨어를 개발을 하는 것이다. 그냥 작동만 하는 것으로 좋은 소프트웨어가 아니라는 것을 이제는 알만한 사람들은 다 아는 시대가 된 것이다. 하물며 소프트웨어 개발을 주업으로 하는 플랫폼 회사들은 어떻겠는가? 좋은 소프트웨어 개발자가 가지는 가치를 명확하게 알고 있기 때문에 코딩테스트 등을 통하여 좋은 소프트웨어 개발자를 뽑기에 혈안이 되어있는 상황이다.

소프트웨어 개발자는 어떻게 태어나고 성장하는가?

 초기 소프트웨어는 정식의 과정을 통해서 배출되지 않았다. 관심있는 사람들만이 접근하여 구현하는 어쩌면 우리가 머리속에 상상하는 소프트웨어 엔지니어의 모습이 그런 초기의 모습을 어디선가 보여주는 바람에 굳어진 것이 아닐까 한다. 요즘은 마에스트 고등학교 등을 통해서 고등학교 시절부터 직업으로서 소프트웨어 개발자가 양성되고 있으며 초중고 교육과정에 코딩이라는 과목이 교과과정에 들어가고 있다. 앞으로는 바뀔 것이지만 아직 까지 길러지는 소프트웨어 개발자는 대다수가 대학교 전공과정으로서 배움을 통해서 길러진다. (물론 자신의 관심으로 별도로 길러지는 경우는 예외로 두겠다.) 4년 혹은 2년의 컴퓨터 관련학과에서 배움을 통해서 소프트웨어 개발자가 길러진다.

 높은 수준의 대학을 나오거나 자신이 적성에 딱 맞아서 소프트웨어 관련 내용을 배우는데 문제가 없는 사람은 소프트웨어 개발자로서 가는데 아무런 문제가 없다. 이런 케이스는 그 학습이 대학이 되었든 학원이 되었든 문제가 되지 않는다. 하지만 대다수의 소프트웨어 개발자가 양성되는 과정에서는 모든 사람이 좋아해서 진입을 한다고 그런 사람으로 길러지지 않는다.

 대다수의 대학전공이 그렇겠지만 소프트웨어 관련 전공과정에서 100명이 입학을 하면 실제 자신의 전공을 살려서 취직을 하는 경우는 그렇게 높지가 않다. 매우 높은 수준의 4년제 대학의 경우 어떨지 모르겠지만 그냥 입학자체가 쉬운 학교도 있으니 전체 평균이 통계적으로 나오지 않아서 모르겠지만 나의 경험으로 30%로 안된다는 느낌을 받고 있다. 실제 소프트웨어 관련 교과과정을 배워보면 이론적인 과정은 두고서라도 실제 프로그램을 짜기 위한 가장 기본이라고 하는 C언어를 배워보면 절반이상이 포인터에서 갈길을 잃어버리는 양이 된다. C++로 넘어가게 되면 객체지향에서 다시금 한숨을 쉬게 된다. 이런 한숨이 쉬어지는 단계는 거의 벽처럼 단단하여 왠만해서는 뚫기가 어렵다. 생전 처음 듣는 컴퓨터의 구조니 이런 이야기를 들을 떄도 머리가 아픈데, 실제 구현을 해보면 우리는 손쉽게 보는 어떠한 프로그램의 1%도 구현이 만만한 것이 아님을 느끼는 벽을 느끼게 된다. 물론 탁월한 두뇌로 문제 없이 그 과정을 넘기는 학생들도 많지만 대다수가 저 부분에서 소프트웨어 개발자로서 앞으로 나가는 것에 대해서 상당히 주춤하게 된다.

  다음으로 소프트웨어 개발자가 길러지는 곳이 학원이라는 곳이다. 특히 우리의 경우는 국비무료과정이라고 해서 소프트웨어 직업군의 인력 부족을 국가에서 해소하고자 5~6개월 과정을 통해서 인력을 길러내는 과정이 있다. 때로는 이런 과정이 아니라 개인이 직접 비용을 들여서 사설과정을 통해서 길러지는 곳이 있기도 하다.

 국비과정의 경우 입학당히 면접을 본다곤 하지만 대다수의 사람이 전공이든 비전공이든 불문하고 합격이 된다. 그리고 5~6개월의 짧은 과정 동안 소프트웨어 개발을 위한 언어를 중심으로 프로젝트 구현을 중심으로 배우게 된다. 대략의 통계를 보자면 10명이 과정을 듣게 되면 그중에서 과정의 마지막까지 정신줄을 놓지 않고 따라와서 나름 프로젝트를 완성하는 사람은 2~3명 정도가 된다고 할 수 있다. 그것도 전공을 하였던 학생이 그 자리를 차지하는 경우가 대다수이다. 나머지는 중간에 포기를 하게 된다. 물론 국가에서 진행하는 과정이라 과정자체를 포기하지 않지만 수업을 따라갈 수 없거나 프로젝트 팀원으로 프로젝트에 참여를 하지만 도움이 거의 되지 않는 그런 상태가 된다.

 이런 과정을 통해서 실제 소프트웨어 개발자로 양성되고 우리가 말하는 메이저회사에 코딩테스트를 통과하지 않으면 지금 내가 있는 정도의 회사에서 소프트웨어 개발자로 채용되어 근무를 하게 된다. 실제 실전 개발로 넘어오게 되면 그렇게 소수만이 통과할 수 있는 취업의 문턱을 넘었음에도 불구하고 3~5년이 지나보면 그중에 이길이 내길이 아니라고 생각하는 사람이 50% 이상 속출한다. 실전 개발에 투입해보면 성과도 미미하고 발전도 더디는 개발자는 부지기수로 늘어난다.

 더불어 직업개발자가 된 사람들의 대다수도 실력을 갈고 닦지 않는 시점에 진입하게 되고 그런 자세로 경력만 쌓이게 된다. 경력만 쌓여서 생기는 노하우는 실력이라고 말하기 어렵다. 세월이 흐르면 쌓이는 것이기 때문에 아무나 쌓이는 것이고 아무나 당연히 알게 되는 것이다. 실력이라는 것은 그것 쯤은 상회해야 되는 것이다. 그냥 세월이 흘러서 쌓이는게 아니라 의문을가지고 이유를 알고자하는 열정에 기반한 학습과 고뇌 뒤에 쌓이는 것이다.

 그런데 세상에는 그냥 그렇게 세월만 흘려버린 개발자들이 너무나 많다.

현실적인 채용에 대한 가이드라인

 소프트웨어는 무형이라고 말을 한다. 눈에 보이지 않기 떄문에 그것을 측정하기가 어렵다고 말을 한다. 그래서 개발자의 능력을 측정하는 것에도 기준을 마련하기가 쉽지 않다고 보는 시각이 많다. 하지만 현실을 그렇지가 않다. 소프트웨어 자체의 형태는 실물세계에 존재하지 않지만 소프트웨어는 코드라는 것으로 작동하도록 되어있다. 개발자가 만들어내는 코드로서 소프트웨어가 작동하게 되는데, 이 코드는 무형이라고 말 수 없다. 분명히 눈으로 볼 수 있으며 그 성능의 측정이나 테스트는 충분히 가능하다. 하지만 아직도 능력있는 개발자가 주를 이루어서 채용에 앞장서고 있지 않거나 분명 측정이 가능함에도 측정을 하지 않고 채용으로 이어지는 경우가 많아서 뽑아놓고 후회를 하는 경우가 많이 발생하게 된다. 그래서 좋은 회사는 코딩테스트를 통해서 기본적인 능력을 검증하여 걸러내는 것이다.

 현시점의 대한민국에서 대다수의 기업은 좋은 소프트웨어 개발자를 뽑는데 노력하는 것 보다 자질이 부족한 소프트웨어 개발자를 걸러내는 것을 기본으로 채용에 임해야된다. 만들 줄 안다는 이야기만 듣고 그렇게 기대할 것이 아니라 면접과정을 통해서 검증을 해야되는 것이다. 검증의 기본은 말로만 할 줄 아는 사람이 아니라 실제 실천해봤는지를 물어봐야 하며 실천과정에 느낄 수 밖에 없는 경험이 나오는지 확인을 해야되는 것이다. 가장 쉬운 방법으로는 코딩테스트를 할 수도 있지만 코딩테스트를 일반 소프트웨어회사에서는 하기가 어렵다. 그렇기 때문에 숙력된 개발자나 CTO( 이 역활은 당연히 숙력된개발자의 경험을 기본으로 한다)가 검증을 해서 아닌 사람부터 걸러내는데 집중을 해야 한다.

 정말 애석하게도 좋은 개발자를 뽑으면 좋다. 그러면 엄청난 파워가 생기는 것은 당연하다. 하지만 능력없는 개발자를 뽑으면 까딱하다 제로 혹은 마이너스가 된다. 그래서 좋은 개발자를 찾는것도 중요하지만 아닌 개발자를 걸러내는 것도 그것 못지 않게 중요하다. 현실에서는 좋은 개발자를 찾는데 집중하기보다 최소한 자격미달이 개발자를 걸러내는 것에 집중하는 것이 더 좋은 결과를 가져올 가능성이 높다.