소수의 엘리트를 찾아서 – 업계 최고의 소프트웨어 개발자 찾기 및 고용
게시 됨: 2022-03-11도전
소프트웨어 개발 인재, 즉 진정한 인재를 고용하는 것은 소셜 네트워킹, 기술적 통찰력, 프로세스 관리 및 직관이 교차하는 다면적인 기술입니다. 채용 책임이 있는 사람이라면 채용 문제의 정도와 깊이를 너무나 잘 이해하고 있습니다.
특히 어려운 것은 뛰어난 소프트웨어 엔지니어링 후보자의 특징적인 품질을 평가하기가 극히 어렵다는 사실입니다. 혁신하고 창의적으로 생각하는 후보자의 능력을 어떻게 탐색합니까? 그가 팀 플레이어인지 어떻게 확인합니까? 건설적인 피드백을 받는 그녀의 능력을 어떻게 진단합니까? 누군가의 도덕성을 어떻게 조사합니까?
이러한 "부드러운" 기준을 평가하는 것은 쉬운 일이 아니지만, 그렇게 하는 것은 최고를 고용하려는 사람의 탐구에 필수적 입니다. 그러나 너무나 자주 이러한 중요하지만 파악하기 어려운 속성을 평가하려는 시도는 "정확한" 답변이 대부분의 후보자에게 명백할 만큼 충분히 투명한 질문이나 문제로 구성됩니다. 따라서 그들에게 묻는 것으로는 실질적으로 아무것도 달성되지 않습니다.
일반적으로 발생하는 함정은 문제 해결 능력, 창의적 사고 능력 및 나머지 팀과 호환 가능하게 작업하는 후보자의 능력을 평가하기보다 기술적인 세부 사항에 너무 집중하는 것입니다.
확실히 고급 소프트웨어 개발자의 효과적인 인터뷰 및 고용은 과학만큼이나 예술입니다. 그럼에도 불구하고 소프트웨어 엔지니어의 기술과 능력의 보다 미묘한 차원을 평가하기 위한 접근 방식과 방법론이 존재합니다.
이러한 채용 기술을 집합적으로 사용하면 급여 또는 프리랜스 프로그래밍 인재 채용에 대한 입증된 성공 실적과 함께 매우 효과적인 선별 프로세스가 생성됩니다. 그 과정이 이 포스트의 전부입니다.
시작하기: 파이프라인을 최고로 채우기
소수의 엘리트를 찾고 고용하는 과정은 인터뷰 자체보다 오래 전에 시작됩니다. 사실, 잠재적 자격을 갖춘 후보자를 적절하게 식별하기 위한 체계적인 접근 방식은 전체 채용 프로세스의 효율성을 크게 능률화하고 증가시킬 수 있습니다.
의심의 여지 없이, 자격을 갖춘 후보자의 단일 최고의 소스는 개인 네트워킹 입니다. 우수한 인재는 우수한 인재와 연관되는 경향이 있기 때문입니다. 개인 추천은 성공적인 신규 고용을 위한 가장 생산적인 출처로 지배적입니다(출처).
최고 수준의 기술 인재의 다른 귀중한 소스는 다음과 같습니다.
- 블로그 및 온라인 기술 게시물. 개발자 블로그는 강력한 후보자의 훌륭한 소스가 될 수 있습니다. 기술 게시물은 종종 개발자의 기술적 통찰력, 문제 해결에 대한 접근 방식, 쓰기 기술에 대한 귀중한 통찰력을 제공하며, 이 모두는 최고의 후보를 식별하는 중요한 기준입니다.
- 오픈 소스 코드 기여자. GitHub 및 SourceForge와 같은 사이트에서 오픈 소스 프로젝트를 정독하면 자격을 갖춘 후보자를 얻을 수 있습니다. 이 접근 방식의 추가 이점은 연락을 취하기로 결정하기 전에 후보자의 코드 샘플을 보고 평가할 수 있다는 것입니다.
- 회의. 관련 기술 회의의 회의 연사 및 공동 참석자는 종종 자격을 갖춘 후보자에게 귀중한 리소스를 제공합니다. 참석할 수 없는 경우 온라인 프로그램을 검토하고 발표자에게 연락하는 것을 고려하십시오. 우연히 "적절한 시간에" 그들에게 연락할 수도 있고, 자격을 갖춘 다른 사람에게 당신을 추천할 수도 있습니다.
이러한 리소스의 장점은 인터뷰하기 전에 어떤 방식으로든 조사한 엔지니어링 후보자를 제공한다는 것입니다. 회사의 누군가 또는 당신이 아는 누군가가 그들을 알고 매우 추천합니다. 또는 그들의 오픈 소스 코드를 검토했고 그것에 깊은 인상을 받았습니다. 또는 그들의 블로그 게시물은 성숙한 수준의 기술 전문 지식과 이해를 제안합니다(이상적으로는 유머 감각까지 :-)). 여기서 핵심은 연락을 할 때 후보자는 이미 "또 다른 이력서" 이상이라는 것입니다.
또한 원하는 후보자 유형에 대한 높은 기대치를 설정하는 직무 설명 템플릿(예: SEO, 프론트엔드 웹 개발 및 백엔드 웹 개발)을 사용하는 것이 좋습니다.
소프트웨어 개발자의 기술적 통찰력 평가
기술적 숙련도의 효과적인 결정은 특정 프로그래밍 언어나 기술의 뉘앙스를 훨씬 뛰어넘습니다. 이러한 기술적 세부 사항은 확실히 무시되어서는 안 되지만 일반적으로 평가 프로세스에서 가장 중요한 요소는 아닙니다 .
평가하는 데 중요한 것은 응시자의 근본적인 기술적 강점과 이해, 창의적 사고 및 문제 해결입니다.
최고의 개발자는 언어 사양이나 API 문서에서 쉽게 찾을 수 있는 것을 메모리에 커밋하는 데 시간을 낭비하지 않습니다. 더욱이 새로운 언어, 기술 또는 디자인 패턴을 배우는 것은 강력한 개발자에게 비교적 사소한 연습입니다(그리고 실제로 새로운 기술이 도입되고 시장 점유율을 높이는 속도가 빨라짐에 따라 필수 기술입니다). 따라서 평가하는 데 중요한 것은 응시자의 근본적인 기술적 강점과 이해, 창의적 사고 및 문제 해결입니다.
이를 달성하기 위한 입증된 방법은 언어의 제약이 없는 프로그래밍 문제를 제기하는 것입니다 . 후보자에게 문제를 제시하고 선택한 언어로 솔루션을 코딩하도록 요청하십시오. 유일한 요구 사항은 에지 조건 또는 잠재적 오류를 해결하는 것을 포함하여 솔루션이 철저하고 정확해야 한다는 것입니다. 여기서 목표는 후보자의 (a) 문제 해결 능력, (b) 컴퓨터 과학 지식, (c) 코딩 스타일을 평가하는 것임을 기억하십시오. 당신은 이 시점에서 특정 프로그래밍 언어에 대한 적성을 평가하지 않습니다. (이 접근법의 추가 이점은 부수적으로 면접관이 후보자가 코딩하는 언어의 전문가가 될 필요가 없다는 것입니다.)
인터뷰 프로세스에 통합할 프로그래밍 과제를 선택할 수 있는 수많은 온라인 리소스가 있습니다. 특정 프로그래밍 언어에 대한 지식보다는 알고리즘에 중점을 둔 것들은 후보자의 컴퓨터 과학 기초와 문제 해결 능력에 대한 평가를 용이하게 합니다. 몇 가지 주목할만한 예로는hackerrank.com, projecteuler.net 및 beatmycode.com이 있습니다. 그러나 테스트를 관리 하기 위해 이러한 사이트를 사용할 필요는 없습니다. 그보다는 도전과제를 선택 하기 위한 리소스로 간단히 사용할 수 있으며 후보자가 직접 인터뷰(화이트보드 등) 중에 솔루션을 코딩하게 할 수 있습니다.
즉, 온라인 테스트는 인터뷰 프로세스의 중요한 추가 구성 요소가 될 수 있습니다. 그러나 온라인 테스트 서비스를 사용할 때 솔루션의 세부 사항보다 후보자의 사이트 생성 점수에 너무 집중하는 위험을 피하는 것이 중요합니다. 우선 테스트 서비스에서 사용하는 평가 지표에 동의하지 않을 수 있습니다. 또한 자동화된 평가 프로세스가 완전히 무시할 수 있는 특히 영리하거나 우아하다고 생각하는 솔루션의 측면이 있을 수 있습니다.
또한 온라인 테스트 서비스에서 제공하는 등급에 대해 "거짓 양성" 또는 "거짓 음성" 가능성이 있습니다. 한편, 가양성은 부적격 후보자를 인터뷰하는 데 시간과 자원을 낭비하는 결과를 초래할 수 있고, 가양성은 매우 고려할 가치가 있는 후보자의 자격을 박탈할 수 있습니다. 장기적으로 후자는 더 심각한 결과를 초래하므로 주의 깊게 모니터링해야 합니다.
일반적으로 직접 실시하는 테스트는 속임수의 가능성을 줄이기 때문에 온라인으로 실시하는 테스트보다 본질적으로 더 신뢰할 수 있습니다. 또한 대면 테스트를 통해 소프트웨어 엔지니어 후보자가 압력을 받는 상황에서 어떻게 작동하는지 관찰할 수 있습니다. 그럼에도 불구하고 온라인 테스트 서비스의 사용은 사기 또는 자격이 부족한 후보자를 제거하는 데 도움이 되는 다른 기술을 통합하는 여기에서 옹호하는 보다 포괄적인 유형의 심사 프로세스의 효과적인 구성 요소가 될 수 있습니다.
온라인 개발 테스트는 기술 능력이 기준보다 훨씬 낮은 후보자의 엄청나게 높은 비율을 제거하는 귀중한 예비 필터 역할을 할 수도 있습니다. 흥미롭게도 그러한 응시자들 중 많은 사람들이 자신감 부족으로 시험에 응시하지도 않고 과정을 포기합니다. 그렇긴 하지만 자신감이 더닝-크루거 효과(Dunning-Kruger effect)에 의해 입증된 것처럼 항상 태도의 가장 좋은 지표는 아닙니다.
기술적 통찰력을 평가하는 또 다른 매우 유용한 기술 은 후보자에게 GitHub 및 SourceForge와 같은 사이트에서 작성했거나 최소한 기여한 오픈 소스 프로젝트 목록을 제공하도록 요청하는 것입니다 (기고자일 경우 그들이 개인적으로 작성한 코드 부분을 알려줍니다). 그런 다음 인터뷰에 참석하여 코드를 검토하고 특정 디자인 결정, 코딩 스타일, 사용된 패턴 등에 대해 질문할 준비를 할 수 있습니다. 그러한 토론은 단순히 언어의 기술적 세부 사항에 대해 후보자에게 퀴즈를 푸는 것보다 훨씬 더 가치가 있을 수 있습니다.
언어로 말하면…
소수의 엘리트 구성원은 기술에 정통할 뿐만 아니라 구두 및 서면으로 명확하고 효과적이며 간결하게 의사 소통하는 유능한 소프트웨어 개발 전문가입니다.
구두 의사 소통 기술은 대면 또는 전화 인터뷰 과정에서 쉽게 평가할 수 있습니다. 구두 기술은 사용자 접촉을 포함하지 않는 특정 "백룸" 기술 역할에서 덜 중요하지만 그럼에도 불구하고 효과적인 팀 상호 작용 및 아이디어 교환을 최대화하는 데 여전히 중요합니다.

서면 의사 소통 기술은 후보자에게 쓰기 샘플을 제공하도록 요청함으로써 가장 잘 평가될 수 있습니다. 기술 작문 샘플은 작문 기술뿐만 아니라 기술적인 명확성을 보여주기 때문에 강력하게 선호됩니다. 인터뷰 전에 이러한 샘플을 요청하는 것이 특히 유용할 수 있습니다. 우선, 사전에 그들의 글을 검토하고 분석할 수 있는 기회를 제공하여 인터뷰에 참석하여 그들의 글을 토론하고 비평할 준비를 할 수 있습니다. 또한 일부 기술 후보자는 자체적으로 귀중한 필터 역할을 할 수 있는 샘플 작성 요청으로 인해 "연기"됩니다.
도덕적 딜레마
아들에게 윤리를 가르치고 싶어하는 아버지에 대한 오래된 농담이 있습니다. 아버지는 아들에게 그와 그의 파트너가 드라이클리닝 사업을 하고 있다고 말합니다. 어느 날 한 고객이 드라이클리닝을 받으러 우리 가게에 찾아온다고 아버지는 말합니다. 고객이 떠나려고 돌아섰을 때 나는 그녀가 10달러를 초과 지불했다는 것을 깨달았습니다. 자, 여기 윤리가 옵니다... 파트너에게 말해야 할까요?
대조적으로, 실제 윤리적 딜레마, 즉 도덕적 딜레마는 종종 모호하고 복잡할 수 있으며 비즈니스에서 가장 확실하게 나타납니다. 가장 강력한 소프트웨어 개발자는 적절하게 조정된 도덕적 나침반이 없으면 프로젝트에 막대한 피해를 입힐 수 있습니다. 따라서 후보자의 이 차원은 평가하는 데 중요합니다.
이를 달성하기 위한 매우 효과적인 기술 은 후보자에게 가상의 도덕적 딜레마를 제시하고 그 상황에서 무엇을 할 것인지 묻는 것입니다. 이것이 효과적이려면 딜레마에 명확한 답이 없어야 합니다. 이상적으로는 가능한 모든 답변이 불완전하고 다소 문제가 있어야 합니다. 그러한 질문에 대한 후보자의 답변은 그들이 생각하는 방식, 윤리적 기준 및 우선 순위에 대한 엄청난 통찰력을 제공할 수 있습니다.
다음은 예입니다.
당신이 일하는 회사는 다른 회사의 프로젝트에 고용되었습니다. 프로젝트에는 특정 하도급업체를 사용해야 합니다. 당신은 이전에 그 하청업체에서 일했고 따라서 그들이 종종 시간을 채우고 그들의 시간에 대해 고객에게 과도하게 요금을 부과한다는 것을 직접적으로 알고 있습니다. 그러나 이 프로젝트에서 이 작업을 수행하면 해당 비용이 회사의 고객에게 전달되기 때문에 회사에 피해를 주지 않습니다. 당신은 상사에게 이것을 언급했고 그는 당신에게 고객에게 아무 말도 하지 말라고 조언했습니다. 특히 프로젝트에서 하청업체의 부분은 전체 예산의 작은 부분만을 차지하기 때문입니다. 하지만 고객을 위해 일하는 아주 친한 친구가 있습니다. 어느 날 점심 시간에 친구가 당신이 그곳에서 일한 적이 있다는 것을 알고 있기 때문에 이 하청업체에 대해 아는 것이 무엇인지 묻습니다. 당신은 어떻게 대답하고 그에게 무엇을 말합니까?
여기서의 아름다움은 명확한 "정답"이 없으며 상황이 실제 생활과 비즈니스 세계의 도덕적 복잡성을 반영한다는 것입니다. 적절하게 묻는다면 그러한 "도덕적 딜레마" 질문에 대한 대답은 소프트웨어 개발자를 고용하기 위한 인터뷰 과정에서 가장 중요하고 중요한 부분 중 하나가 될 수 있습니다.
당신을 알아가기 (당신은 정말로 누구입니까?)
인터뷰 프로세스의 고유한 결함 중 하나는 실제로 함께 일할 때까지 그 사람과 함께 일하는 것이 어떤 것인지 알 수 있는 방법이 없다는 것입니다. 그럼에도 불구하고 후보자의 성격과 기질에 대한 현실적인 느낌을 얻는 것은 성공적인 채용에 매우 중요합니다.
기술 엘리트는 기술적으로 우수할 뿐만 아니라 고도로 전문적입니다. 따라서 이들에 대한 검색은 엄격한 기술 평가에 국한되지 않습니다.
이를 염두에 두고 다음은 후보자의 성격과 전문성을 평가하는 데 도움이 될 수 있는 몇 가지 인터뷰 기술입니다...
그 중 하나 는 비기술 직원(예: 행정 보조원)이 사전 심사를 통해 인터뷰 프로세스를 의도적으로 시작하는 것 입니다. 그런 다음 이 직원에게 후보자가 기술적인 것이 아니라는 것을 깨달았을 때 후보자가 그들을 어떻게 대했는지 물어볼 수 있습니다. 그들은 품위를 떨어뜨리고, 참을성이 없고, 겸손했습니까, 아니면 유쾌하고, 참을성 있고, 존경스러웠습니까? 직원이 당신에게 전달하는 것은 실제로 매우 말할 수 있습니다. 후보자가 누구인지에 관계없이 다른 사람을 존중하는지 알고 싶습니다.
인터뷰 내내 후보자에게 건설적인 피드백을 제공할 기회를 찾으십시오. 이것이 유발하는 반응을 주의 깊게 관찰하십시오. 피드백을 높이 평가했습니까? 아니면 후보자가 방어적으로 보입니까?
후보자의 성격에 대한 통찰력을 얻기 위한 수단으로 인터뷰의 처음 5분 또는 10분 동안 비기술적인 "잡담"에 참여 하십시오. 후보자는 이것이 단순히 실제 인터뷰의 서곡이라고 생각할 수 있으며 따라서 "머리를 숙일 가능성이 더 높을 것입니다." 그렇게 함으로써 이 시기에 그들의 성격에 대해 놀라운 양을 분별할 수 있을 것입니다. 그리고 물론 그들이 유머 감각을 보인다면 그것은 항상 좋은 징조입니다. :-)
엔지니어를 고용하기 위한 이러한 일반적인 기술 외에도 후보자의 성격, 자신감, 정직성 및 전문성을 평가하는 데 도움이 되는 몇 가지 샘플 질문이 있습니다 .
- 당신의 경력을 돌이켜 볼 때, 당신이 직면했던 특정한 어려운 상황이 무엇이었습니까? 도전과제에 대해 자세히 설명하고 어떻게 대처했는지 설명하십시오. 무엇을 특히 잘 처리했다고 생각합니까? 다시 할 수 있는 기회가 주어진다면 어떻게 다르게 하시겠습니까?
- 당신이 당신의 경력에서 저지르고 있다고 생각하는 가장 큰 실수는 무엇입니까?
- 소프트웨어 개발에서 가장 보람을 느끼는 것은 무엇입니까? 가장 적게 즐기는 것은 무엇입니까?
- 자신의 이상적인 자세를 그릴 수 있다면 무엇을 하고 싶나요? 귀하의 역할과 책임, 회사의 규모와 유형, 근무 환경 등의 측면에서 어떻게 보십니까?
- 당신의 가장 큰 장점은 무엇입니까? 당신을 고용함으로써 우리가 얻을 수 있는 것은 무엇입니까?
- 우리 중 누구도 완벽하지 않습니다. 개선하기 위해 노력하고 있는 성격의 일부 측면은 무엇입니까?
- 내가 당신의 현재 상사에게 전화를 걸어 당신에 대해 묻는다면 그는 나에게 무엇이라고 말할까요?
- 우리는 당신을 고용할 때 무엇을 걱정해야 합니까?
종합적으로, 이러한 질문과 기술은 성공적인 채용 결정을 내리는 데 필수적인 후보자가 누구인지에 대해 훨씬 더 강력하고 심층적인 이해를 촉진하는 것으로 입증되었습니다.
감정은 상호적인가?
그래서 A+ 후보를 찾았습니다. 고도로 숙련된. 긍정적이고 낙천적인 성격. 우수한 문화적 적합성. 대단해! 하지만…
대답해야 할 한 가지 중요한 질문이 있습니다 . 후보자가 귀하의 가능한 직책과 회사에서 일하는 데 구체적으로 어느 정도 관심이 있습니까? 이에 대한 대답은 성공적인 고용을 보장하는 데 가장 중요합니다. 일방적인 관계는 우리 삶의 다른 측면에서보다 비즈니스에서 더 잘 작동하지 않습니다.
다시 한 번 말하지만, 면접 과정의 맥락에서 그러한 질문에 대답하는 후보자의 솔직함을 의심해야 하기 때문에 단순히 질문을 직접 하는 것은 최소한의 가치가 있습니다. 오히려 이것은 덜 직접적인 다른 수단을 통해 확인하려고 시도해야 하는 것입니다.
우선, 후보자가 처음부터 당신에게 접근하는 방식은 상당히 신뢰할 수 있는 관심 척도입니다. 후보자가 귀하의 회사와 가능한 기회에 특히 관심이 있는 이유에 대해 설득력 있고 설득력 있는 설명을 제공합니까? 그렇다면 이것은 진정한 관심뿐만 아니라 전문적인 성숙도와 정교함의 수준을 나타내는 것입니다. 그러한 후보자는 귀하에게 연락하기 전에 귀하의 회사와 기회에 대해 최소한 일정 수준의 사전 조사를 분명히 완료했습니다(단순히 "시내에서 이력서를 쏘는 것"이 아니라).
회사와 회사의 제품 또는 서비스에 대한 숙제를 마치고 개발자 채용 프로세스에 진입한 후보자는 자신의 관심과 지식 모두에 대한 유용한 지표를 제공합니다. 면접관에 대한 사전 조사(예: 자신의 약력, LinkedIn 프로필, 블로그 게시물 등)를 수행한 후보자는 특히 주목할 만합니다. 보다 정교한 후보자는 인터뷰 과정에서 이 정보를 공개하는 것을 강조할 것입니다. 다른 사람들의 경우 "당신은 우리 회사에 대해 무엇을 알고 있습니까?" 와 같은 단순한 개방형 질문입니다. "우리 회사와 이 직위에 대해 특별히 관심이 있는 것은 무엇입니까?" 실제로 매우 설득력 있는 반응을 이끌어 낼 수 있습니다.
마지막으로, 진정으로 관심이 있는 후보자는 면접 과정 전반에 걸쳐 질문을 할 것입니다. 그럼에도 불구하고 항상 후보자에게 질문이 있는지 묻는 것으로 인터뷰를 마무리하는 것이 좋습니다. 질문이 전혀 없다는 것은 위험 신호가 될 수 있습니다. 그렇지 않으면 A+ 후보자로 간주될 사람과도 마찬가지입니다.
마무리
여기에 설명된 기술은 업계 최고의 소프트웨어 개발자를 찾고 고용하기 위한 귀중한 핵심 프로세스 역할을 할 수 있습니다. 그러나 효과적인 고용은 목적지가 아니라 여정이라는 것을 기억하는 것이 중요합니다. 정적 프로세스는 데드 프로세스가 될 운명이므로 지속적으로 프로세스를 재평가하고 조정해야 합니다.
모든 회사의 여정은 고유한 문화와 우선 순위에 따라 다릅니다. 조직에 적합한 경로를 찾아 실행하십시오. 성공도 있고 실패도 있겠지만 후자로부터 배우기만 하면 올바른 길을 가고 있다는 확신을 가질 수 있습니다.