Subscribe

로지스팟의 새로운 소식을 받아보세요!

로지스팟의 소식이 궁금하신가요?
이메일을 통해 로지스팟의 새로운 소식을 받아보세요.

좋은 엔지니어 영입하기

엔지니어는 보통 자신이 가진 공학적 지식과 기술을 이용하여 어떠한 일을 처리하는 직군의 사람들을 의미합니다. 좋은 엔지니어들은 자신이 가진 지식과 기술을 발전시키고 한 단계 성장하고자 끊임없이 노력합니다. 이러한 이유로 많은 소프트웨어 엔지니어들은 본인의 성장에 도움이 되는 회사인가를 무엇보다 중요하게 고려합니다. 즉, 단순히 본인이 잘할 수 있는 일을 수행하고 급여를 받는 것을 넘어서 더 어려운 문제에 도전할 수 있는 가능성이 있는지와 그럴 수 있는 여건이 되는지를 고려합니다. 이러한 이유 때문에 트래픽이 많이 발생하거나 기술적으로 난이도가 높은 서비스를 제공하는 기업을 선호하게 되는 것입니다. 이번 글에 서는 좋은 엔지니어가 왜 필요한지를 구체적으로 알아보고 좋은 엔지니어를 영입하기 위해서 중요하게 고려해야 하는 점을 살펴보도록 하겠습니다.

좋은 엔지니어가 필요한 이유

좋은 엔지니어는 자신보다 더 뛰어난 엔지니어를 영입하고자 노력한다.

일반적으로 뛰어난 엔지니어는 회사 내에서 자신의 위치를 크게 중요하게 생각하지 않습니다. 그렇기 때문에 자신보다 더 경력이 많거나 뛰어난 사람이 들어와 자신의 위치나 영향력이 줄어드는 것에 대해 두려워하지 않습니다. 이러한 특성은 뛰어난 사람과 함께 일하면서 성장하고자하는 특성과 맞물려서 본인보다 더 뛰어난 사람을 뽑으려고 노력합니다. 만약, 회사 내에서 자신의 위치에 불만이 있더라도 뛰어난 엔지니어는 그 이유가 자신의 실력을 알아봐 줄 사람이 없다고 생각하기 때문에 이 경우에도 마찬가지로 자신의 실력을 알아봐 줄 뛰어난 사람을 뽑으려고 노력합니다.

반면, 노력하지 않고 실력이 뛰어나지 못한 엔지니어는 현재 회사 내에서 자신의 위치에 불안감을 느끼고 집착하게 됩니다. 이러한 이유로 자신의 위치에 위협이 될 수 있는 뛰어난 인재가 들어오는 것을 기피하고 자신보다 실력이 부족하거나 자신이 통제할 수 있는 사람을 영입하려고 하는 경향이 있습니다. 즉, 초기에 훌륭한 엔지니어를 영입하게 되면 점점 더 뛰어난 엔지니어들이 많아지게 되며 반대로, 노력하지 않고 실력이 좋지 못한 엔지니어를 영입하 게 되면 점점 더 좋지 않은 엔지니어가 추가로 영입되게 됩니다. 이것이 바로, 초기 훌륭한 엔지니어가 중요한 이유입니다.

기술적 차별화

특정 서비스가 유사한 다른 서비스와 차별화를 갖는 요소는 매우 다양하지만, 그중에서 기술적인 차별성은 경쟁업체가 쉽게 시장에 진입하지 못하는 진입장벽이 될 수 있습니다. 회사의 서비스가 만들어지는 과정에서 개발자는 다양한 서비스와 기능에 대해 프로덕트 담당자, 또는 비즈니스 담당자와 수많은 대화와 협의를 반복하게 됩니다. 이 과정에서 기술적으로 불가능하다고 생각되는 의견들이 제안되면 엔지니어들은 자신의 경험과 실력에 맞게 다음과 같은 반응을 보이게 됩니다.

  • 뛰어나지 못한 엔지니어는 기술적으로 충분히 가능한 제안도 ‘불가능’하다고 판단할 수 있습니다. 반대로, 불가능한 것을 가능하다고 이야기한 뒤 많은 시간을 허비하는 경우도 있습니다. 왜냐하면, 구현의 가능성 유무에 대한 판단은 엔지니어의 경험과 실력을 기반으로 하기 때문입니다.
  • 일반적인 엔지니어는 기술적으로 가능한 것과 불가능한 것을 적절히 잘 판단합니다. 하지만 기술적으로 불가능한 이유를 비(非)기술적인 용어로 잘 표현하지 못하는 경우가 종종 발생합니다. 즉, 본인의 판단을 다른 사람들에게 쉽게 이해시키지 못하는 경우가 발생하게 됩니다.
  • 뛰어난 엔지니어는 기술적인 구현 가능성과 구현에 소요되는 시간과 자원의 양을 적절하게 잘 판단할 뿐만 아니라, 기술적으로 불가능한 이유를 다른 사람들에게 쉽게 이해시킬 수 있습니다. 그러므로 제품 담당자나 비즈니스 담당자는 개발팀을 신뢰하게 되고 불필요한 자원의 낭비를 줄일 수 있습니다.
  • 정말 뛰어난 엔지니어는 기술적으로 불가능하다고 느껴지는 어려운 일을 가능하게 하려고 끊임없이 연구하고 시도합니다. 그리고 도전한 과제를 대게 끝까지 마무리하며, 실질적인 구현 결과물을 만들어내는 것까지가 정말 뛰어난 엔지니어의 특징입니다. 이 과정에서 기존의 다른 서비스에서 구현하지 못했던 기술적 차별화가 만들어지게 되며 대부분의 성공한 스타트업은 이러한 기술적 차별화를 가지고 있는 경우가 많습니다. 물론, 이를 위해서는 뒤에서 얘기하겠지만, 충분히 집중할 수 있는 시간과 환경이 보장되어야 합니다.

이처럼, 뛰어난 엔지니어 한 명을 그렇지 못한 엔지니어 여러 명으로 대체할 수 없는 이유는 그들이 단순히 개발 생산성이 좋다거나 더 많은 일을 하는 개발자가 아니기 때문입니다.

비즈니스 시각

애플리케이션의 특정 부분을 구현하다 보면 대부분의 사람은 해당 기능이 정상적으로 동작 할 수 있도록 구현하는 것에만 집중하게 됩니다. 그러나 훌륭한 엔지니어는 비즈니스 관점을 가지고 애플리케이션을 바라보며, 장기적으로 회사 운영에 도움이 되는 시스템의 개선 방향 등을 제안합니다. 이러한 사람들의 특징은 주어진 일만 하지 않고, 스스로 역할을 만들어나간다는 것입니다. 또한, 현재 주어진 일과 장기적으로 비즈니스에 도움이 되는 일의 우선순위와 일정을 스스로 적절하게 조정할 수 있으며 끊임없이 시스템을 개선하기 위해서 노력합니다.

개발 문화

훌륭한 엔지니어는 언제나 자기 생각이 틀릴 수 있음을 인정합니다. ‘벼는 익을수록 고개를 숙인다’는 말과 마찬가지로 경험이 풍부하고 실력이 뛰어난 엔지니어일수록 더욱 겸손해지기 마련입니다. 이러한 성향은 좋은 개발 문화를 만들어나가는 데에 필수적인 부분이며 열린 마음을 갖지 못하는 사람이 있는 경우 좋은 개발 문화를 유지하는 것이 너무나도 어렵습니다.

또 다른 훌륭한 엔지니어를 영입하기 쉽다

앞에서도 설명했지만, 뛰어난 엔지니어는 자신보다 더 뛰어난 엔지니어와 함께 일하고 싶어 합니다. 다시 말해, 엔지니어들은 내가 입사하려는 회사에 훌륭한 엔지니어가 있는지를 중요하게 생각한다는 것을 말합니다. 즉, 뛰어난 엔지니어는 업무나 개발 문화적인 부분뿐만 아니라, 지속해서 뛰어난 엔지니어를 영입하는 데에 좋은 영향을 미칩니다.

좋은 엔지니어를 영입하는 방법

좋은 엔지니어를 영입하기 위해서는 어떻게 노력해야 할까요? 물론, 서비스가 비약적으로 성장하거나 유명해지면 많은 지원자들이 직접 찾아올 수도 있습니다. 그러나 대부분의 경우, 아직 알려지지 않은 회사에서 좋은 인재를 영입하는 것은 정말로 어려운 일입니다. 그렇기 때문에 주변 지인의 추천이나 직접 발품을 팔아서 적합한 인재를 영입하는 것이 일반적입니다. 주변 인맥이 약하거나 아직 서비스의 인지도가 높지 않은 상황에서 좋은 인재를 영입하기 위해서 기본적으로 알아야 하는 몇 가지 내용들을 살펴보겠습니다.

기술적으로 도전할 만한 과제를 만들자

앞에서도 설명했지만, 대부분의 뛰어난 엔지니어는 스스로의 성장을 위해서 기술적으로 도전할 만한 과제를 선호합니다. 그러나 대부분의 초기 스타트업은 기본적인 서비스의 틀을 구현해야 하며 어려운 일 뿐만 아니라 다양한 일들을 함께 수행하게 됩니다. 그럼에도 엔지니어를 영입할 때는 서비스가 지향하는 모습과 이 과정에서 어떤 기술적 도전과제들이 있는지를 보여주어야 합니다. 그 과정에서 개발자는 자신이 할 수 있는 역할이 있는지, 도전해보고 싶은 분야를 시도해 볼 수 있는 가능성이 있는지를 판단하게 됩니다.

비기술적 비전도 함께 보여주자

엔지니어라고해서 항상 기술적인 부분만을 고려하는 것은 아닙니다. 회사의 구성원으로서 함께 일하기 위해서는 회사 자체의 비전이 매우 중요합니다. 뛰어난 엔지니어를 영입하려면 언제나 일관되고 명확한 회사의 비전을 설명할 수 있어야 합니다. 본인이 스스로 회사의 비전을 명확하게 설명하지 못한다면 상대방의 마음을 움직이지 못합니다. 훌륭한 엔지니어를 영입하려면 언제나 기술적인 비전과 비(非)기술적인 비전을 함께 보여주어야 합니다.

내부 추천을 적극적으로 활용하자

외부에서 뛰어난 엔지니어로 널리 알려진 사람이라도 실제 함께 일해보기 전에는 그 사람을 정확하게 판단하기가 어렵습니다. 반대로, 뛰어난 실력을 잘 표현하지 못해서 잠재력이 드러나지 않는 실력자들로 너무나 많이 존재합니다. 내부 추천은 실제로 함께 일해본 직원들의 추천을 통해서 인재를 영입할 수 있기 때문에 회사에 맞지 않는 사람을 영입한다거나, 좋은 인재를 놓칠 수 있는 가능성을 줄여줍니다.

내부 추천은 회사 입장에서뿐만 아니라, 지원하는 사람에게도 좀 더 신뢰할 수 있는 판단의 근거가 됩니다. 즉, 회사의 속 사정을 정확하게 알지 못하는 상태에서 위험을 감수하고 스타트업을 선택하는 것보다 실제로 이 회사에서 일해본 지인의 추천으로 입사를 결정하는 것이 지원자 본인에게도 좀 더 위험을 덜 감수하는 결정입니다. 그렇기 때문에 내부 직원의 추천을 통해서 뛰어난 엔지니어를 영입하는 것이 좀 더 쉽게 당사자를 설득할 수 있는 좋은 방법 입니다.

급하게 채용하지 말자

만약, 사람이 부족해서 급하게 엔지니어를 충원해야 하는 경우, 여러 명의 지원자 가운데 상대적으로 좋은 사람을 선택하기 마련입니다. 물론, 그 과정에서 정말로 뛰어난 인재를 만날 수도 있지만, 그렇지 못하더라도 현재 상황이 급하기 때문에 차선책으로 영입하게 됩니다. 회사의 개발팀에 정말 필요하고 적합한 인재를 찾으려면 충분한 시간과 노력, 그리고 기다림이 필요합니다. 이를 위해서는 수개월 뒤의 상황을 미리 예측하고 인재 영입을 준비하는 것이 좋습니다. 또한, 기존 직원들에게 충분한 양해를 구해서 적합한 인재를 찾을 때까지 함께 노력할 수 있도록 설득하는 것도 매우 중요합니다.

대외적으로 꾸준히 홍보하자

서비스 자체에도 홍보와 마케팅이 중요하듯이 회사의 기술적 요구 수준이나 좋은 개발문화 등 역시 꾸준한 홍보가 필요합니다. 그래서 엔지니어들이 각종 모임(meetup)과 컨퍼런스 등의 행사에 참여하는 것을 적극 권장해야 하며 대외 기술 발표나 집필 활동 등도 자유롭게 보장되어야 합니다.

지금까지 언급한 내용들은 좋은 엔지니어를 영입하기 위해서 항상 기억하고 노력해야 하는 내용들입니다. 다음 절에서는, 실제로 엔지니어 인터뷰는 어떻게 진행해야 하며 어떠한 점들을 주의 해야 하는지에 대해서 알아보도록 하겠습니다.

 


엔지니어 인터뷰

좋은 엔지니어를 놓치지 않기 위해서는 인터뷰에 대한 노력이 필요합니다. 인터뷰는 좋은 엔지니어를 놓치지 않기 위함은 물론이고 회사와 맞지 않는 엔지니어를 구별하기 위한 과정입 니다. 하지만, 많은 회사들은 엔지니어를 뽑는 인터뷰 과정을 대수롭지 않게 생각하여 인터뷰에 대한 교육이 없음을 물론이고 인터뷰를 시작하기 직전까지 일만 하다가 인터뷰 장소에 들어와서야 처음으로 지원자의 서류를 훑어보는 경우가 허다합니다. 이번 장에서는 좋은 엔지니어를 영입하고 그렇지 않은 엔지니어를 잘 구별하기 위한 기본적인 내용들을 설명합니다. 먼저, 엔지니어뿐만 아니라 일반적인 모든 인터뷰에 해당하는 기본적인 사항을 알아보도록 하겠습니다.

인터뷰를 준비하는 기본자세

인터뷰에 참석하는 면접관은 반드시 참석 전에 지원자의 지원 서류를 정독하여 읽어봐야 합니다. 그러면서 지원 서류를 기반으로 질문할 내용들을 미리 고민하고 그 대답에 따른 다음 순서에 대해서도 고민해야 합니다. 대부분의 지원자들은 면접관이 하는 질문을 통해서 면접관이 자신의 서류를 제대로 읽어보았는지 그렇지 않았는지를 쉽게 짐작할 수 있습니다. 만약, 지원 서류만 제대로 읽어보았어도 알 수 있는 내용을 질문한다면 좋은 인재는 회사에 대해서 좋지않은 인상을 느끼게 되며 합격 이후에도 입사를 거부할 수 있게 됩니다.

또한, 인터뷰에서는 너무 고압적이거나 추궁하듯 질문하는 태도를 지양해야 합니다. 면접관이라는 자리는 일반인이 경험할 수 있는 몇 안 되는 ‘갑’의 위치입니다. 그러므로 자칫 잘못하면 자신도 모르는 사이에 ‘갑’의 횡포를 부릴 수 있게 됩니다. ‘어떻게 이런 기본적인 내용도 모르고 있지?’ 라던가 ‘피식’하고 웃는 등의 행동은 지원자에게 매우 좋지 않은 인상을 줄 수 있습니다. 지원자는 인터뷰가 끝남과 동시에 고객이 될 수 있다는 사실을 항상 명심해야 합니다.

엔지니어 인터뷰에서 주의해야 할 점

엔지니어의 실력을 정확하게 확인하려면 질문부터 명확해야 합니다. 많은 경우 지원자가 질문의 의도를 정확하게 판단할 수 없는 추상적인 질문으로 지원자를 당황하게 하는 경우가 있습니다. 질문하는 면접관 입장에서는 본인이 이미 원하는 답을 생각하고 있기 때문에 질문이 명확하다고 느껴질 수 있지만, 지원자는 질문이 아주 명확하지 않으면 이미 알고 있는 내용도 정확하게 답할 수 없다는 점을 명심해야 합니다. 질문 자체에 오류가 있는지, 질문이 모호 하지는 않은지 확인하는 가장 좋은 방법은 사전에 그 질문에 대해서 직원들과 함께 이야기를 나누어보는 것입니다. 그 과정에서 지원자의 역량을 판별할 수 있는 정확하고도 구체적인 질문을 가려낼 수 있으며 불필요한 오해로 지원자의 역량을 잘못 판단하는 실수를 줄일 수 있 습니다.

코딩 인터뷰

코딩 인터뷰에 대해서는 아직도 다양한 이견들이 존재합니다. 과연 코딩 인터뷰가 면접자의 실력을 판별하는 데에 도움이 되는지 그렇지 않은지에 대해서는 의견이 분분합니다. 어떤 쪽의 의견이 옳고 그르다고 말할 수는 없지만, 확실한 점은 의미 없이 진행되는 코딩 인터뷰는 안 하는 것보다 못하고 철저하게 연구되고 체계화된 코딩 테스트는 기본적인 업무 수행 능력을 판단하는 데에 도움이 된다는 점입니다. 코딩 테스트는 지원자의 개발 능력이 어느 정도 인지 정확히 판단하기에 무리가 있습니다. 하지만, 아주 가벼운 테스트로 시작하여 지원자의 능력에 따라서 조금씩 질문을 추가해 나가는 방식의 테스트는 지원자의 기본적인 능력을 가늠하는 데에 매우 유용합니다. 실제로 많은 인터뷰를 하다 보면 (인터뷰 상황이라는 특수성을 고려하고도) 아주 간단한 프로그래밍에서도 자신의 코드를 써 나가지 못하는 경우를 자주 목격할 수 있습니다. 이러한 경우 대부분 실제 입사 후에도 스스로 하나의 프로젝트나 서비스를 시작해 나가는 데에 어려움을 겪게 됩니다. 하지만, 이러한 판단을 할 수 있는 코딩 인터뷰를 하기 위해서는 실제 인터뷰에 적용해 보기 전에 조직 내부의 인력들이 수많은 테스트와 시행착오를 겪어 보아야 합니다. 본인들도 처음 접했을 때 쉽게 풀어낼 수 없는 문제를 낸다거나, 쉽게 문제를 풀었을 때 다음 단계로 진행할 수 없는 문제를 낸다면 지원자에 대한 그 어떤 정보도 얻을 수 없습니다.

코딩 인터뷰를 진행하기 전에 주의할 점은 사전에 지원자에게 가장 익숙한 환경과 편집기 등을 미리 물어보고 준비하는 것입니다. 코딩 인터뷰의 목적은 긴장되고 극한 상황에서의 대처 능력을 파악하는 것이 아니라 말 그대로 프로그래밍을 통해 문제를 어떤 식으로 접근하고 해결하는지를 파악하는 것이기 때문입니다. 코딩 인터뷰는 반드시 모든 지원자에게 수행할 필요는 없습니다. 상황에 따라 코딩 인터뷰가 불필요하다고 판단된다면 이를 적절하게 조정할 수 있습니다.

서류는 참고만 할 뿐

엔지니어를 선발할 때 서류의 내용은 지원자의 마음가짐과 그동안 했던 일에 대한 참고 정도로만 생각하는 것이 좋습니다. 물론, 자신이 해왔던 일에 대해서 명확하게 설명할 수 있고 강점이 부각 되도록 이력서를 작성하는 것도 개인의 역량이 될 수 있지만, 지원 서류에 나와 있는 내용을 절대적으로 믿는 것은 매우 위험합니다. 화려한 지원서에도 불구하고 실제 업무 수행 능력이 현저히 떨어지거나, 지원서류에는 나타낼 수 없지만 실제로 함께 일했을 때 뛰어난 능력을 보여주는 엔지니어들이 너무나도 많이 존재하기 때문입니다. 물론, 자신이 해왔던 일과 경력을 정확하게 표현하고 강점을 부각하는 것도 지원자의 역량 중 하나라고 볼 수 있습니다. 그러나 엔지니어는 무엇보다 실제 업무 수행능력을 갖추고 있어야 하며 이러한 업무 수행 능력은 서류에서 정확하게 판단하기 어렵습니다.

서류의 내용을 맹신하거나 이로 인한 선입견을 배제해야 하는 이유는 과대 포장된 엔지니어를 찾아내기 위함이 아니라, 역량을 들어내지 못한 숨은 진주를 발견하기 위함입니다. 본인이 직접 수행하지 않은 부분도 마치 자신이 스스로 구현한 것처럼 과대 포장한 경우는 인터뷰를 통해서 어느 정도 판단을 할 수 있습니다. 그러나 서류에서 강점을 부각하지 못한 엔지니어의 경우 실제로 업무 수행 능력이 뛰어나더라도 선입견으로 제대로 알아보지 못하는 경우가 많습니다. 이러한 실수를 줄이기 위해서는 과거에 했던 일에 대한 선입견을 줄이려고 노력하고, 현재 우리가 필요로 하는 기술과 그에 대한 이해도를 묻는 것에 초점을 맞추는 것이 좋습니다.

입사 후 하고 싶은 일과 우리에게 필요한 일이 유사한가?

많은 엔지니어들은 회사를 지원할 때 자신이 입사해서 하고 싶은 일이나, 기여하고 싶은 부분을 가지고 있습니다. 그러나 채용을 진행하는 입장에서는 해당 지원자가 입사했을 때 맡아 주기를 바라는 업무와 지원자의 생각이 다름에도 불구하고 일단 합격 통보를 하게 되는 경우가 많습니다. 운이 좋다면 해당 지원자가 오랫동안 회사에 필요한 역할을 충실히 수행하면서 조금씩 본인이 원하는 역할로 영역을 확장해 나가는 경우도 있습니다. 그러나 많은 경우 본인이 하고 싶었던 일과 회사에서 해야 하는 일이 어긋나는 경우 지원자나 회사 모두 만족스럽지 못한 경험을 하게 됩니다. 특히, 헤드헌터 또는 추천을 통해서 입사한 경우 본인이 속았다는 생각을 하게 될 가능성이 높습니다. 그렇기 때문에 좋은 엔지니어가 오랫동안 함께 일 할 수 있으려면 당사자가 하고 싶은 일이 무엇인지, 회사에서 그 일을 언제쯤 맡길 수 있는지를 명확하게 이야기하고 공감대를 형성하는 것이 중요합니다.

합격자보다 불합격자를 더 신경 쓰자

앞에서도 이야기했지만, 면접을 보러온 지원자는 면접을 마치고 돌아가는 순간 바로 우리 서비스의 고객이 된다는 것을 명심해야 합니다. 불합격자에게 부정적인 경험을 주지 않기 위해서는 몇 가지 원칙을 지키면 됩니다. 우선, 면접 과정에서 해당 지원자가 부적격하다고 판단되었다는 느낌을 지원자에게 주어서는 안됩니다. 예를 들어, 한두 가지 질문 이후에 더이상 할 질문이 없다며 딴청을 부린다거나 바쁘다며 자리를 비우는 행위는 지원자에게 매우 불쾌한 인상을 남길 수 있습니다. 또한, 해당 지원자가 회사에 맞지 않다고 생각되었을 때는 최대한 빠르고 정중하게 그 사실을 알려줄 필요가 있습니다. 모두가 그런 것은 아니겠지만, 일반적으로 회사를 지원하는 사람에게 면접 결과를 기다리는 시간만큼 힘들고 고통스러운 기다림도 없기 때문입니다. 마지막으로, 지원자에게 불합격 통보를 할 때는 구체적으로 어떤 부분이 우리 회사에 맞지 않았으며, 어떤 부분이 긍정적이었는지를 명시하여 지원자가 스스로 좋은 면접 경험을 했다는 느낌을 주는 것이 좋습니다.

입사 이후의 관리

당연한 이야기이지만, 뛰어난 엔지니어는 언제나 다른 곳의 입사 제의를 받게 되며, 만약 현재의 회사가 자신에게 맞지 않는다고 생각되면 언제든지 다시 회사를 떠날 수 있다는 점을 명심해야 합니다. 즉, 뛰어난 인재는 영입했다고 끝나는 것이 아니라 지속적으로 만족도를 유지하기 위해서 관리가 필요합니다. 또한, 모든 사람이 자신이 가진 불만을 직접 표출하는 것은 아니기 때문에 눈치채지 못하는 사이에 이미 되돌릴 수 없는 상황에 이르는 경우도 많습니다.

뛰어난 엔지니어들이 회사에 만족을 느끼면서 최고의 성과를 발휘하기 위해서는 현재 개발팀의 상황이 어떤지 지속해서 진단하고 관리해야 합니다. 그럼, 뛰어난 엔지니어들을 관리하기 위해서 주기적으로 점검해야 하는 내용들을 살펴보도록 하겠습니다. 훌륭한 엔지니어들이 최고의 역량을 발휘하기 위해서 어떤 점들을 진단하고 관리해야 하는지는 조직과 회사의 특성에 따라 조금씩 다르겠지만, 여기에서는 일반적으로 필요한 몇 가지 체크 리스트 예시를 살펴보도록 하겠습니다. 이 내용들은 너무나도 일반적이고 당연한 것들이기 때문에 이 중 하나라도 제대로 지켜지지 않는다면, 훌륭한 엔지니어가 회사를 그만두는 것이 전혀 이상하지 않을 것입니다.

집중할 수 있는 환경을 제공하고 있는가?

누구나 회사에 입사하면 본인이 가진 역량을 최대한 발휘해서 제품, 또는 서비스에 기여하고자 합니다. 이 과정에 엔지니어들은 집중할 수 있는 환경이 필요하게 됩니다. 집중할 수 있는 환경의 중요성은 여러번 강조해도 지나치지 않습니다. 그만큼 소프트웨어 엔지니어들에게 집중할 수 있는 환경은 그 무엇보다 중요합니다. 만약, 사무실 여건이나 상황이 여의치 않아서 좋은 환경을 제공하지 못한다면 최소한 외부의 카페나 도서관, 또는 집에서 원격 근무를 할 수 있도록 제도적 장치를 마련하거나 메신저로 이루어지는 실시간 양방향 커뮤니케이션의 수준을 적절히 제한하는 것이 좋습니다.

원하는 사양의 장비와 도구를 제공하고 있는가?

사람에 따라 장비와 도구에 크게 연연하지 않는 사람과 고사양의 장비, 다양한 도구를 잘 활용하는 사람들이 있습니다. 모든 엔지니어에게 고사양의 장비와 각종 도구를 제공해야 한다는 의미는 아닙니다. 다만, 본인이 판단하고 요청했음에도 원하는 장비나 도구를 사용하지 못하게 되면 많은 엔지니어들은 큰 실망을 하게 됩니다. 왜냐하면, 그것이 회사가 개발자를 바라보는 태도를 반영한다고 생각하기 때문입니다. 개발자가 사용하는 장비와 도구에 투자하는 것은 정확한 수치로 환산하기는 어렵지만 가장 투자 대비 이익이 높은 선택이 될 수 있습니다. 물론, 회사의 여건상 불가피하게 원하는 장비와 도구를 지원하지 못하는 경우도 있습니다. 이러한 경우, 반드시 정확한 상황을 설명하고 양해를 구하는 것이 중요합니다.

대외 컨퍼런스 발표와 집필 등의 활동을 장려하는가?

회사에서 엔지니어의 대외 컨퍼런스 발표나 집필을 제한하는 이유는 보통 회사에서 사용된 기술의 공유를 두려워하거나 그로 인해 실제 업무시간이 부족할 것을 염려하기 때문입니다. 먼저, 기술의 공유에 대해서 알아보도록 하겠습니다. 현존하는 모든 IT 기술 기반의 서비스들은 오랜 시간 동안 많은 사람이 공유하고 축적해 온 기술이 없었다면 존재하기 어려웠을 것입니다. 지금 본인의 회사에서 사용되는 기술 중에 오픈소스가 얼마나 많은지를 생각하면 서비스를 개발하면서 알게 된 지식과 경험을 공유하는 것이 얼마나 당연한 일인지 알 수 있을 것입니다. 이보다 더 중요한 것은 컨퍼런스 발표나 집필 등으로 해당 서비스에서 얼마나 많은 기술적 고민과 도전을 했는지를 공유하는 것은 좋은 엔지니어를 채용하기 위한 가장 좋은 방법입니다. 앞서 설명하였지만, 좋은 엔지니어들은 특정 회사에 입사했을 때 본인이 도전할만한 기술적 과제가 있는지를 중요하게 생각합니다. 서비스 자체만으로 많은 기술적 차별화를 보여줄 수도 있지만, 지속적인 대외 활동이 없다면 많은 엔지니어들에게 기술적인 부분을 쉽게 보여주기가 어렵습니다.

두 번째로, 업무시간의 부족에 대해서 알아보도록 하겠습니다. 우선, IT 기술을 기반으로 하는 서비스 회사에서 대외 컨퍼런스 발표를 하거나 준비하는 시간은 업무시간의 연장이라고 보는 것이 맞습니다. 물론, 그 내용에 따라 회사와 무관하게 개인적인 발표를 하게 되는 경우도 있지만, 이를 제외한 대부분의 기술 발표는 기술팀에서 누군가는 반드시 해야 하는 업무의 연장입니다. 오히려, 그렇게 할 수 있는 역량이 있는 엔지니어가 팀과 회사에 있다는 것에 감사해야 합니다. 물론, 기본적으로 본인이 해야 하는 업무를 소홀히 하고 대외활동에만 치중하는 경우 적정한 수준에서 조율할 수는 있지만, 기본적으로 엔지니어의 대외활동은 회사와 개인 모두에게 도움이 된다는 사실을 인식해야 합니다.

개발이 아닌 연구(research) 시간을 보장하는가?

스타트업의 일반적인 정의는 ‘혁신적인 기술이나 아이디어를 바탕으로 성장 가능성이 매우 큰 비즈니스’를 말합니다. 즉, 혁신적인 기술은 스타트업이 장기적으로 경쟁사와 차별화되고 후발주자가 쉽게 시장에 진입하지 못하게 하는 장벽 역할을 하는 데에 매우 중요한 요소입니다. 그러나 이러한 기술적 차별화는 단순히 열심히 일한다고 해서 얻어지지 않습니다. 대부분의 기술적 차별화는 끊임없는 연구와 시행착오 끝에 조금씩 조금씩 축적되는 자산입니다. 이를 위해서는 기간이나 일정의 부담 없이 연구를 진행할 수 있는 시간과 분위기가 반드시 보장되어야 합니다. 만약, 업무에 필요한 기술 논문 이나 서적을 보는 것이 부담스러운 환경이라면 좋은 엔지니어들은 좀 더 자유롭게 연구와 개발을 동시에 진행할 수 있는 곳으로 떠나게 됩니다.

물론, 뛰어난 엔지니어가 회사를 그만두는 이유에는 급여를 비롯하여 매우 다양한 요인들이 복합적으로 작용합니다. 그렇기 때문에 몇 가지 방법만으로 훌륭한 엔지니어들을 오랜 기간 동안 함께 일할 수 있도록 강제하는 것은 매우 어려울 수도 있습니다. 그러나 여기에서 이야기하고자 하는 것은 좋은 엔지니어를 영입하기 위한 노력만큼이나, 입사 이후에 지속해서 만족하며 최고의 성과를 낼 수 있도록 관리하는 것 역시 매우 중요하다는 점입니다. 특히나, 평생직장이라는 개념이 점점 사라지고 있고 이직률이 상대적으로 높은 엔지니어 직군들에 대해서는 꾸준하고 지속적인 관심과 노력이 필요합니다.


맺음말

이번 글에서는 좋은 엔지니어가 서비스 발전에 왜 중요한지와 그들을 영입하려면 어떻게 해야 하는지에 대해서 살펴보았습니다. 서두에서 언급했듯이, 이 내용은 기술적인 내용이 아니기 때문에 개인적인 경험과 주관적인 의견이 포함될 수 있습니다. 이 글의 내용은 각 회사에 맞는 기준을 정하기 위한 참고용으로 생각하시는 것이 좋습니다.

좋은 엔지니어는 기본적으로 회사 내에서 자신의 위치에 대한 집착이나 불안감이 적고 오히려 본인보다 더 뛰어난 동료와 일하기 원하므로 초기 훌륭한 엔지니어는 지속해서 더 훌륭한 엔지니어를 영입하려고 노력합니다. 또한, 비즈니스 시각을 가지고 기술적으로 어려워 보이는 도전을 즐기며 이를 통해 서비스의 기술적 차별화를 얻고자 노력합니다. 이는 회사가 경쟁사와의 비교우위를 선점할 수 있게 하며 경쟁사의 진입 장벽을 높이는 데에 매우 중요한 역할을 합니다. 그뿐만 아니라, 좋은 엔지니어는 좋은 개발문화의 정착과도 밀접한 관련이 되어있습니다. 만약, 좋은 개발문화가 자리 잡지 못한다면 아무리 좋은 엔지니어를 영입한다 고 하여도 쉽게 회사를 떠나게 됩니다.

좋은 엔지니어를 영입하려면 먼저 기술적으로 도전할 만한 과제들을 끊임없이 만들고 대외적으로 홍보해야 합니다. 또한, 기술적인 부분뿐 아니라, 비기술적인 비전도 함께 제시해야 합니다. 좋은 엔지니어를 영입할 수 있는 가장 적합한 방식은 내부 추천을 적극적으로 활용 하는 것입니다. 내부 추천은 해당 지원자의 역량과 조직 친화도를 사전에 검증할 수 있는 가장 좋은 방법임과 동시에, 지원자 역시 회사를 더욱 신뢰하고 입사를 결정할 수 있도록 하는 방법입니다. 그러나 모든 엔지니어가 언제나 이직을 준비하고 있는 상태가 아니므로 상황에 따라서 오랜 시간이 필요할 수도 있습니다. 이러한 이유로 엔지니어는 필요할 때 급하게 채용하는 것보다 기술과 비즈니스 로드맵에 따라 미리 예측하여 충분한 시간과 노력을 들여 영입하는 것이 좋습니다.

좋은 엔지니어를 내부 추천으로 영입할 수도 있지만, 여의치 않은 경우 채용 공고를 통해 지원자를 받고, 인터뷰를 통해 영입하는 경우도 발생합니다. 이러한 경우 인터뷰 과정만으로 좋은 엔지니어를 선별해야 하기 때문에 충분한 준비와 연습이 필요합니다. 많은 경우, 인터뷰를 대수롭지 않게 생각하여 별다른 준비과정 없이 인터뷰를 진행하게 되는데, 이러한 경우 자칫 잘못하면 좋은 엔지니어를 놓칠 수 있을 뿐만 아니라, 지원자에게 좋지 않은 인상을 심어줄 수도 있습니다. 인터뷰를 통해 좋은 엔지니어를 선별하려면 지원자에 대해 기본적인 예의를 지키는 것은 물론, 사전에 지원자의 서류를 꼼꼼히 읽어보고 준비하는 것이 중요합니다. 또한, 사전에 지원자의 역량을 판단할 수 있는 명확한 질문을 잘 준비하고, 지원자가 원하는 일과 현재 우리가 필요한 역할이 잘 맞는지도 확인해야 합니다.

코딩 인터뷰에 대해서는 다양한 의견들이 존재합니다. 이 글에서 코딩 인터뷰가 옳은 방식인지 그렇지 않은지는 설명 하지 않았습니다. 다만, 확실한 것은 코딩 인터뷰를 진행하기로 하였을 때는 철저한 준비가 필요하다는 점을 설명하였습니다. 많은 경우, 인재를 영입하는 것에는 최선을 다하지만 입사 이후에 지속적인 관리에는 소홀한 경우가 많습니다. 아무리 뛰어난 인재라도 회사에서 본인의 역량을 최대한 발휘하려면 일정 기간의 적응과 학습 기간이 필요합니다. 만약, 충분히 본인의 역량을 발휘하기 전에 회사를 그만두게 된다면 회사 입장에서 매우 큰 손실이 될 수 있습니다. 이 때문에 입사 이후의 관리 에도 지속적인 관심과 관리가 필요합니다.

이번 글에서는 스타트업에서 뛰어난 엔지니어의 중요성, 영입 방법, 그리고 입사 이후의 관리에 대해서 설명하였습니다. 그렇다고 해서 회사를 구성하는 많은 직원 중에서 엔지니어가 제일 중요하다거나 특별하다고 말하 는 것은 아닙니다. 다만, 엔지니어의 특성에 맞게 필요한 내용을 설명한 것이므로 오해가 없기를 바랍니다.