개발자 채용 시 기억해야 할 7지침

InfoWorld
팀에 새로운 개발자를 고용할 때 그들의 코딩 실력을 가장 잘 평가할 수 있는 방법을 고민하고 있는가? 그것만으로는 부족하다. 기술 평가는 분명 구직자 평가에 중요한 부분이지만 후보자, 팀, 조직이 업무와 목표를 성공적으로 달성하는데 있어서 유일한 기준은 아니다. 본 기사에서는 성공적인 개발자 고용을 위한 모든 핵심 기준을 살펴본다.
 
ⓒ Image Credit : Getty Images Bank



채용과 고용은 비용이 높은 프로세스이며 개발자를 채용, 면접, 고용, 합류, 교육하는데 많은 자원이 소요된다. 일자리에 적합하지 않은 사람을 고용하면 비즈니스에 중대한 차질이 발생한다.

개발자를 고용할 때 요구되는 프로세스 조정
모든 경우에 통하는 채용, 고용, 면접 프로세스는 없다. 반드시 기업의 규모, 문화, 위치, 직위의 책임 등에 맞춰 조정해야 한다. 

구글과 마이크로소프트에 효과가 있는 방법이 다섯 번째 개발자를 고용하려는 스타트업, 애플리케이션 합리화를 주도할 소프트웨어 설계자를 구하는 기업, 모바일 애플리케이션을 개발하려는 소기업에는 적합하지 않을 수 있다. 또 채용하는 개발자 수에 따라, 핵심 역할에 따라 방법이 달라져야 한다.

적절한 개발자를 고용하려면 후보자가 자신의 팀에 적합한지 여부를 신속하게 파악하기 위해 개발자의 관심사나 성향을 자극하는 일부 마케팅 및 영업 기법이 필요하다. 개발자를 고용하기 위해서는 개발자가 필요한 경우가 많으며 다른 비즈니스 및 기술 역할을 고용하는 것과 비교하여 전체 채용 과정에 기술 전문가가 직접 참여해야 할 필요성이 높다. 

개발 부문과 협력하는 접근법이 채용을 담당하는 기술 전문가, 자체 채용 담당자, 인적자원 담당자에게 새로운 개념일 수 있지만 꼭 필요한 일이다.

개발자를 고용할 때 취할 구체적인 7가지 조치에 관해 살펴본다.

1 : 고용할 사람을 정의하라
현재 Angular.js로 개발된 여러 고객용 모바일 애플리케이션을 개발 및 유지보수하는 팀을 관리하고 있는 상황이라고 치자. 채용 과정에서 가장 먼저 고려해야 할 사항은 무엇일까?

경영진, 고용 관리자, 개발팀은 고용할 사람, 그 사람에게 할당될 책임, 업무 처리에 대한 기대치, 필요한 주요 기술, 그 사람의 성공적인 역할을 측정하는 방법에 대해 공통 분모를 형성하는 것이 매우 중요하다. 다음과 같은 다양한 문제를 고려해야 한다.

- 이 개발자는 웹 경험을 개발하는 여러 개발자 중 한 명인가? 아니면 교차 기능팀과 협력하고 있는가?
- 개발 표준을 설정할 사람인가? 아니면 기존의 표준을 따르고 그 발전에 기여할 사람인가?
- 첨단 사용자 인터페이스를 개발하고 있으며 고급 기술을 가진 사람이 필요한가?
- 특정 라이브러리와 툴킷을 사용할 예정인가?
- 기존의 대형 코드 베이스를 활용하고 기존의 애플리케이션을 지속적으로 개선하는 것이 주된 업무인가? 아니면 이 개발자가 혁신을 통해 주로 새로운 애플리케이션을 개발할 것인가?

이런 질문에 답하면 이상적인 후보자의 성격 유형, 기술 수준, 주된 기술, 업무 스타일에 맞는 팀을 고용하는데 도움이 될 것이다. 또한 잠재적인 후보자에게 업무, 역할, 업무 환경을 설명하는 방식도 형성된다. 이 모든 것들을 사전에 협의하지 않으면 직업 설명, 채용 과정, 면접이 모호하고 고용 사이클이 길어지고 후보자가 혼란에 빠질 가능성이 높아진다.

이를 조기에 협의하면 개인적인 편견이 일부 해결될 수도 있다. 편견이 반드시 나쁜 것은 아니지만 평가에 고려되고 원치 않는 특정 경로로 이어지는 것을 방지하기 위해서는 반드시 인지해야 한다.

연구에 따르면 다양성 팀이 더 스마트하고 더욱 혁신적인 것으로 나타났다. 개발 플랫폼 제공사 퀵 베이스(Quick Base)의 CTO 조지 마시니는 이렇게 말했다. 

"우리는 다양한 관점을 제공하기 때문에 다양성에 집중한다. 전통적인 개발 방식과 비교하여 퀵 베이스는 연령, 사용권, 성별 측면에서 훨씬 다양하다. 개발에 창의적이고 미적인 부분이 있기 때문에 다양한 관점(세상을 다르게 보는 다양한 사람들)을 확보하면 팀이 훨씬 나아진다. 인간 측면에서의 다양한 관점은 정말로 혁신적인 소프트웨어를 개발할 수 있는 능력의 핵심이었다."

후보자에게 원하는 것을 정의한 이후 인터뷰 후보를 선발해야 한다. 어떤 역할을 해내야 하는가? 이 팀과 이 프로젝트에서 사람이 필요한 이유는 무엇인가? 자신이 고려 중인 다른 역할과 비교하여 이 역할의 특징은 무엇인가? 자신과 함께 프로젝트를 수행하고 싶어하는 후보자를 확보하는 것은 경쟁적인 직업 시장에서 필수적이다.

구직 사이트 다이스(Dice)의 CTO 클라브스 밀러는 "IT 분야 실업률이 이렇게 낮은 상황에서 후보자는 자신이 필요한 사람이라는 것을 알고 있다. 2019년에는 다시 인간 요소를 도입하여 후보자 경험에 관심을 가져야 한다. 잘 정의된 고용주 브랜드를 통한 활기찬 문화를 전달하고 적절한 채용 마케팅 채널을 이용하는 것 외에도 미래의 후보자가 협력할 프로젝트의 유형, 그들이 이용할 기술, 소속될 팀의 수준에 관해 가능한 많은 정보를 공유하라" 라고 말했다.

2 : 직무 상세(job description) 작성에 유의하라
여러 팀으로부터 역할에 대한 동의, 채용하고 하는 사람의 수준에 대한 더 나은 이해, 최고의 후보자를 영입할 마케팅 메시지를 확보했다면 직무 설명(JD)에 집중할 차례다.

대부분의 기술 전문가들은 업무 설명 작성 기술이 없다. 업무 설명에 편견이 들어가면서 유능한 후보자가 멀어질 수 있다. 또는 너무 모호한 서술 때문에 문의가 폭증할 수 있다. 가능하면 이 작업을 처리하기 위해 업무 설명 작성 기술이 있는 전문가를 고용하고 개발팀이 합의한 상세내용을 제공할 필요가 있다.

참고할 만한 사례들이 있다. 설명이 과하지 않으면서 이상적인 후보자에 대한 표적화된 세부사항이 포함된 이런 최고의 개발자 업무 설명 10종 등이다. 인디드, Dice, 링크드인, 몬스터, 커리어빌더 등의 구직 사이트에서 다른 표현을 찾아볼 수도 있다.

3: 후보자 선별 과정을 마련하라
후보자가 면접에 참가했는데 면접관이 제대로 준비되어 있지 않거나 무의미한 질문을 받거나 일련의 불필요한 기술 평가를 거치게 되면 꽤 당황하게 된다.

면접 과정 수행에는 각 면접관의 역할 정의, 후보자 구별에 도움이 되는 질문 유형 선정, 면접팀과 피드백을 공유하는 방법 결정에 관한 명시적인 전략이 필요하다. 또한 많은 후보자들이 긴 면접 과정 또는 피드백이 시의적절하게 제공되지 않는 면접 때문에 멀어지기 때문에 효율적인 과정을 위해 노력해야 한다.

면접 과정에서 역할을 할당한다. 의사소통과 협업 등의 소프트 스킬은 누가 담당할 것인가? 기업, 역할, 할당되는 프로젝트에 대해 설명할 사람은 누구인가? 여러 사람이 기술적으로 후보자를 평가하고 누가 어떤 기술을 담당할지 그리고 각각의 접근방식이 정당한지, 채용하는 기술 수준에 적합한지, 최고의 후보자를 효율적으로 판단할 수 있는지 검토할 필요가 있다. 


4 : 듣고 배우고 협업하는 인터뷰
역할과 기술 수준에 상관없이 각 면접관은 정답이 없고 시사하는 바가 많은 질문으로 면접자와의 대화를 시작해야 한다.

필자에게 중요한 면접 질문은 후보자에게 현재 하고 있는 일에 대해 묻는 것이다. 필자의 목적은 그들이 편안하게 대화할 수 있도록 하는 것이다.

전략적인 후보자라면 면접이 요구하는 역할에 맞는 영역을 선택해 이야기할 것이다. 그러나 필자는 이야기를 할 수 있는 능력 그리고 자신이 하는 일을 설명할 수 있는지 여부를 본다. 기존 고용주의 기밀 정보를 누설하지 않도록 주의하면서 기술적인 세부사항과 문제에 관해 이야기하는지 살펴본다. 이 질문은 필자가 앞에 앉아 있는 사람을 이해하는데 도움이 되는 다른 많은 질문과 논의로 이어질 수 있는 대화를 시작할 수 있게 해준다. 

다른 좋은 질문도 많다. 데이터 통합 벤더 마크로직의 국제 컨설팅 및 교육 서비스 수석 부사장 줄리 푸르트는 '구직 활동은 어떻게 되어가고 있는가?'라는 질문을 제안하곤 한다. 

이를 통해 후보자의 리서치 과정이 얼마나 성숙됐는지 파악할 수 있다. 궁극적으로 그들의 지원 동기를 파악하여 우리의 기술 업무와 그들의 기술 업무 및 포부 사이에 연결점이 있는지 평가할 수 있다고 그는 설명했다.

퀵 베이스의 조지 마시니는 이렇게 제안했다. "그들의 관심과 지적 호기심을 파악하면 좋다. 그들이 조직에 얼마나 적합한지 파악하는데 도움이 되며 이와 관련된 질문 측면에서 면접을 유리하게 시작할 수 있다."

또한 후보자의 업무 스타일과 활동을 논의하는 것이 좋다. 일례로 워터폴 개발만 수행해본 사람은 애자일 개발 활동에 적응하기 위해 많은 노력을 기울여야 한다. 재택으로 근무하는 후보자는 얼마나 성공적이었는지 그리고 중앙의 팀과 협업할 때의 문제점을 공유해야 한다. 멘토링이 필요한 개발자도 있고 멘토링을 좋아하는 개발자도 있으며 혼자 일하는 것을 선호하는 개발자도 있다. 

후보자가 그들이 합류할 팀의 업무 스타일에 적합하며 이를 개선할 수 있는지 여부와 이런 후보자가 배워야 할 변화의 영역이 있다면 무엇인지 평가하기 위해 질문을 고안해야 한다.

5 : 기술 평가에서는 후보자의 문제 해결 방식에 집중
기술을 평가할 때는 팀과 면접관이 활용할 수 있는 툴과 기법이 많다.

면접자가 1개 이상의 코딩 문제를 코드바이트(Coderbyte), 코드워(Codewars), 코드파이트(CodeFights) 등의 사이트를 이용해 완료하도록 하는 접근방식을 이용하면 개발자가 문제를 공격하는 방식 그리고 코드가 작동하며 이행 표준을 준수하고 이해 가능한지 여부를 파악할 수 있다. 

일부 개발자는 공개 기트 저장소가 있거나 잠재적인 고용주와 애플리케이션 및 코드를 합법적으로 공유할 수 있는 탑코더(TopCoder) 대회에 참가했을 수 있다. 자신의 자격 증명을 공유할 수 있는 코더바이트(CoderByte)나 해커랭크(HackerRank) 등의 학습 플랫폼을 사용한 개발자도 있을 수 있다.

단 이런 툴을 사용하는지 여부에 상관없이 후보자가 직접 기술에 참여하는 것이 중요하다. 필자는 후보자가 자신이 개발한 것이 실제로 어떻게 작동하는지 보여주기를 요청하곤 한다. 후보자에게 그 과정을 화이트보드에 적어보고 자신이 참여한 구체적이 영역에 대해 설명하도록 하는 것이다.

그리고 코딩 활동, 사용한 툴, 버전 관리, 개발 환경에 대한 심오한 대화를 통해 후보자의 경험이 팀과 협력할 방식과 가까운지 파악한다.

퀵 베이스는 코딩 문제를 제공하고 후보자에게 이를 완수할 시간을 제공한 후 동료들에게 해결책에 관해 발표하도록 요청하고 있다. 마시니는 "우리는 단지 기술적인 역량만을 파악하는 것이 아니라 창의적인 부분과 피드백을 수용하는 방식도 본다"라고 말했다. 

주니어 개발자를 면접하는 경우에 대해 마크로직의 줄리 푸르트는 다음과 같이 전했다. "우리는 후보자가 키보드로 코딩 문제를 해결하도록 하며 그 방 안에는 멘토/면접관이 필요 시 있어 문제를 제시하고 답변하며 코칭을 제공한다."

기술 책임자 에드 피더스톤은 개발자 후보자가 개발, 지원, 운영 역할을 어떻게 생각하는지에 대해 질문하라고 제안했다. 

그들이 가장 자랑스러워하는 개발 프로젝트, 이유, 아쉬운 점에 대해 설명하도록 한다. 후보자가 기술 부채에 접근하는 방식에 관해 논의하도록 유도하고 운영팀과 사고 및 결함에 대해 협력한 것에 대한 경험을 공유하도록 요청한다. 

그는 이어 숙련된 개발자의 경우 운영이 안정적이고 안전한 코드를 작성하는 것을 제대로 이해하고 있으며 지원 및 운영 부서와의 협업을 중시하는지 파악해야 한다고 덧붙였다.

기술 평가에 대한 접근방식과 툴에 상관없이 다음의 지침을 참고하자.

- 시험을 모든 후보자에게 공정하게 적용하고 대상 기술에 합리적인지 확인하자.
- 코드를 보고 싶다면 후보자에게 문제를 해결할 충분한 시간과 툴을 제공하자.
- 코딩 및 문제 해결 기술을 파악할 수 있도록 더욱 창의적인 사고가 필요한 문제를 선택하자.
- 개발자가 코딩 표준을 알고 적용하는지 파악하자. 개발자가 장치 시험을 추가하고 경계 조건을 확인하며 메시지를 기록하고 합리적인 명명 관례를 적용하며 다른 우수사례를 적용했는가?
- 대부분의 개발 작업에서는 사람들이 팀으로 협력하고 동의를 얻어내는 과정이 필요하다. 따라서 후보자가 면접 과정의 후반부에 발표하도록 하는 것이 좋다.

6 : 유능한 후보자라면 접촉을 유지하라
조직에서는 보통 수 차례의 면접에 걸쳐 여러 명의 후보자를 평가한다. 한 후보자가 면접 과정 전체를 완료하는데 수 주가 소요될 수도 있다. 그 과정에서 후보자는 당신의 기업에 대한 정보와 다른 고용 기회를 찾아볼 가능성이 높다.

고용 관리자는 영업팀의 전략을 적용하여 후보자의 열정과 관심을 유지하는 것이 중요하다. 이메일을 통해 면접 대화를 지속하는 것이 하나의 방법이다. 더 나은 후보자가 면접 후 면접자에 대한 감사 이메일에 답장을 보낼 것이다. 이 메시지를 무시하는 대신에 이를 활용하여 대화를 지속하면 좋다. 

면전의 질문을 이어갈 수도 있다. 내용을 공유하고 면접관의 의견을 묻을 수 있다. 조직에서 최근에 뉴스를 공유했거나 팀이 중요 단계에 도달한 경우 이를 후보자와 공유하는 것도 바람직하다. 

7 : 세부 정보를 전달하라
후보자 목록을 추리거나 제안을 하면서 후보자에게 역할에 관해 알려주는 것이 중요하다. (1에서 ‘장점’을 파악했어야 한다.) 관심이 가는 후보자라면 다른 고용주와도 경쟁할 가능성이 높다.

성과가 가장 높은 사람에게 보상하고  개발자에게 여러 동기를 부여하는 것처럼 그 후보자를 설득할 접근방식을 적용할 만하다. 물론 재정적 제안과 다른 유인 측면도 중요하지만 후보자는 자신의 노력이 인정받을 수 있는지, 성장과 승진의 기회가 있는지, 개인이 학습할 열정과 툴이 있는지, 조직이 실험에 개방적이며 계산된 위험을 감수하는지 등의 문화적인 유인에 관해 알고 싶어한다.

또한 후보자는 조직과 팀의 목표 및 목적을 이해하고 싶어한다. 대부분의 개발자는 단지 문제를 해결하고 코드를 작성하기 위해 계약을 체결하지 않는다. 그들은 자신의 노력과 성취 뒤에 의미와 가치가 있는지 알고 싶어한다. 특히 경쟁력 있는 개발자가 이런 마음가짐을 갖도록 노력할 필요가 있다. 

* Isaac Sascolick은 애자일, 데브옵스, 데이터 과학 분야의 저작을 집필해온 저술가이자 스타CIO의 대표다. ciokr@idg.co.kr