구독자님, 안녕하세요. 2주간 건강하고 평안하셨나요?
지난 레터에서는 제가 생각한 채용의 다섯 단계를 소개드리면서, 좋은 후보자를 늘리는 방법에 대해 얘기했습니다. 그에 이어 이번 레터에서는 더 좋은 후보자를 잘 가려내기 위해 면접 이전 단계에서 쓸 수 있는 방법에 대해 공유합니다(계획보다 분량이 길어져 면접 중/면접 후 단계에 대한 이야기는 다음 레터로 옮겼습니다).
0. 면접 전에는 어떤 준비를 해야 할까
서류 평가를 포함한 전체 면접 과정에서는 항상 ‘이 사람이 장기적으로 우리 회사, 팀, 제품에 좋은 영향을 미칠 것인가?’에 답하기 위한 재료를 모은다고 생각해야 합니다. 고백하자면 저 또한 이 원칙에 대해 잘 몰랐던 초보 면접관으로서, 흥미로운 주제에 빠져들어 대화하다 보니 어느새 계획했던 시간을 다 써버렸던 경험이 종종 있었습니다. 대화는 재밌었는데 그래서 이 사람을 다음 단계로 보낼 것인가 말 것인가를 판단하기에는 정보가 부족하여 ‘일단 다음 단계 가보자’로 결정해버린 것이죠.
특히 스타트업에서는 채용 면접에 참여하는 인원들이 중요한 실무자일 가능성이 높으므로, 이런 애매한 상황이 덜 발생하고 채용 담당자들의 시간과 에너지를 최대한 아끼도록 면접 전 준비 단계부터 많은 노력을 들이는 게 좋습니다. 의사결정을 위한 정보 수집에 초점을 맞춰야 더 일찍 더 좋은 판단을 내림으로써 면접관과 후보자 모두의 시간을 절약할 수 있습니다.
저는 면접 전에 해볼 만한 가장 효과적인 노력이 ‘구조적 인터뷰 설계'라고 생각합니다. 김창준님의 인터뷰 스킬에 대한 교육에서 배워 XL8에서 잘 이용하고 있는 이 구조적 인터뷰 설계는 세 가지 질문으로 이루어집니다. 지난 뉴스레터에서 언급했던, ‘채용 페이지에 담겨야 하는 구체적이고 매력적인 정보'도 여기서 뽑아온 것입니다. 첫 두 질문은 후보자를 받기 전부터 이미 내부 구성원들끼리 충분히 토론하고 고민했어야 하는 내용이기 때문입니다.
1. 어떤 문제를 풀기 위해 사람을 뽑고자 하는가?
회사가 거시적으로 푸는 문제, 즉 비전과 미션은 대부분 이미 정해져있겠지만 팀이나 제품 단위로 들어가면 구성원마다 생각하는 바가 다를 수 있습니다. 풀고자 하는 문제를 좁히려면 팀과 제품의 어디에서 병목이 생기는지 면밀히 관찰하고, 팀 구성원들의 의견을 잘 취합해야 합니다. 예를 들어 저는 이런 문제들을 겪어봤습니다.
- 지엽적이고 반복적인 문제가 많아서 근본적 개선을 할 시간이 부족하다 → 손발이 되어줄 주니어 개발자 필요
- 세일즈 팀과 의사소통이 원활하지 않다 → 중간 다리 역할을 해줄 세일즈 엔지니어 필요
- 프론트엔드 리드가 프론트엔드 개발, 팀 관리, 제품 관리까지 하려니 버겁다 → 제품을 함께 책임질 PM 필요
- 새로운 사업 영역으로 확장하고 싶은데 관련 경험이 부족하다 → 해당 영역의 도메인 전문가 필요
우리의 돈과 시간은 한정적이니 이중에서도 우선순위를 정해야겠죠. 신규 채용을 통해 해결하려는 문제를 명확히 정하면 그에 맞는 좋은 후보자를 가려내기도 수월해지고, 팀 안에서 새로운 사람에게 기대하는 역할도 뚜렷해지고, 뽑은 뒤 서로 만족할 가능성도 높아진다고 생각합니다.
2. 그 문제를 푸는 데 어떤 역량이 중요한가?
어떤 문제를 해결할, 어떤 직군의 사람을 뽑을지 명확해졌다면 이제 그 문제를 풀기 위해 어떤 역량이 중요한지 논의할 차례입니다. 역량에 대한 가설을 세우는 것이죠. 이 때 ‘해당 직군의 경험이 몇 년 이상은 되어야 한다', ‘해당 도메인의 프로젝트를 몇 개 이상 수행해봤어야 한다' 같은 단순한 기준은 크게 도움이 되지 않습니다. 제게 유용했던 방법은 다음 두 가지였습니다.
상향식: 우리가 당면한 문제를 잘 풀려면 후보자가 어떤 일들을 잘 해야 하는가?
얼마 전까지만 해도 XL8에는 공식적인 Product Manager(이하 PM)가 한 명도 없었습니다. 제가 XL8에서 프론트엔드 개발 리드뿐 아니라 Skroll이라는 B2B 기계번역 제품의 임시 PM 역할도 맡고 있었어요. 두 역할을 모두 맡는 게 버거워서 PM을 채용하고자 했습니다.
제가 버거워했고 XL8 프론트엔드 팀이 당면했던, 그래서 PM이 풀어주길 기대했던 문제는 ‘내외부 고객에 대한 구체적인 이해가 부족하다’였습니다. 여기서 파생된 문제가 ‘의사결정 비용 증대'였고요. 외부 고객이 미시적으로 어떤 문제를 가졌는지, 내부 고객(세일즈 팀)이 영업할 때 어떤 지점에서 어려움을 겪고 있는지, 경쟁 제품의 UI/UX는 우리와 어떻게 다른지 등에 대한 정보가 충분치 않아서 의사결정 비용이 커졌습니다. 그래서 PM 채용에 참여하는 사람들끼리 토론 끝에 다음과 같은 역량 가설을 세웠습니다. (레터를 쓰면서 다시 보니 좀 가설이 엉성한데 당시 이렇게 했다 정도로 생각해주세요 😅)
- ‘고객에 대한 구체적 이해를 늘릴 줄 아는 PM’은 내외부 고객으로부터 효과적으로 정보를 수집하고, 이를 기반으로 가설 설정/실험/검증하여 사용자 경험을 향상시킬 수 있는 사람이다.
- ‘의사결정 비용을 줄일 줄 아는 PM’은 고객에 대한 이해를 바탕으로 의사결정 과정에서 생기는 갈등을 효과적으로 해결할 수 있는 사람이다.
이렇게 가설을 세우고 나니 이 기준에 맞는 좋은 PM을 판단하기 위한 면접 질문도 잘 도출해낼 수 있었습니다.
하향식: 그 직군에서 일을 탁월하게 잘 하는 사람들은 어떤 공통 역량을 가지고 있는가?
그런데 개발 직군에서는 ‘우리가 당면한 문제를 잘 풀어본 경험이 풍부한 개발자'로 타겟을 좁히자, 개발자 품귀 시대에 안그래도 어려운 채용이 더 어려워지더군요. 그래서 개발자 채용시에는 당장의 경험은 부족해 보일지라도 성장 가능성이 있는 사람을 판단하고자 했습니다. 탁월한 개발자로 성장할 가능성이 있는 사람들을 알아내려면, 탁월한 개발자가 어떤 사람들인지 먼저 이해해야겠죠.
다음은 What Makes a Great Software Engineer? 라는 논문에 나오는 ‘탁월한 개발자의 5가지 주요 역량’을 요약하여 제 의견을 덧붙인 것입니다.
- 좋은 코드를 짠다(Be a competent coder): 가장 기본적인 부분입니다. 탁월한 개발자는 좋은 코드를 짭니다. 저는 ‘좋은 코드를 짠다’는 것을 1) 코드 품질에 대한 자신만의 일관된 관점을 갖고, 2) 고객 요구사항을 만족하는 코드를 3) 빠른 속도와 4) 적은 버그로 5) 가독성 있게 작성한다는 뜻으로 사용합니다. 다만 이건 커트라인이라서, 일정 수준을 넘어가면 이후에 언급하는 다른 역량이 더 중요하다고 생각합니다. 즉 주니어 개발자라면 일단 좋은 코드 짜기를 목표로 삼는 게 좋다는 뜻이기도 합니다.
- 작업의 가치를 극대화한다(Maximize current value of your work): 스타트업에서는 기술부채를 쌓으면서 빠르게 구현하는 것이 능사라는 관점이 있습니다. 저 또한 ‘기본’을 지킨다는 가정 하에(특히 적은 버그), 빨리 출시하여 고객 반응을 확인하여 수정하는 게 아주 유효한 전략이라고 생각합니다. 그러나 분명 어느 순간부터는 기술부채가 발목을 잡아 전진하지 못하게 되는 경우가 생깁니다. 따라서 탁월한 개발자는 어디서 어떤 문제가 생길지, 나중의 요구사항 변화가 어디에 올지 예측하여 시스템적 사고를 통해 유지보수 비용을 줄이는 식으로 천천히 실행할 줄도 알아야 합니다. 즉 빨리 실행하는 능력과 멀리 볼 줄 아는 능력을 둘 다 기르되 언제 무엇을 얼마나 사용할지 결정할 수 있어야 현재 본인이 하는 일의 가치가 극대화됩니다. 이는 다음 역량으로 이어집니다.
- 데이터에 기반하여 의사결정한다(Practice informed decision-making): 제품 개발은 수많은 의사결정의 연속입니다. 제품이 출시된 이후에도 의사결정은 끝없이 이어집니다(제품의 지표가 이렇게 나오는데 그건 이런 이유인가, 그건 이렇게 개선하면 나아질까, 다음 기능은 뭘 우선해서 넣을까 등). 탁월한 개발자는 직관이 아닌 데이터에 기반해 합리적 의사결정을 하는 사람들입니다. 따라서 양질의/다양한 정보를 얻기 위한 환경을 구축하고, 주변에 도움을 요청하고, 열린 마음을 가져야 합니다. 직관에 반하는 정보가 수집되었다면 그걸 무시하기보다는 좋은 학습의 신호로 받아들여야 합니다. 구성원의 다양성이 확보된 커뮤니티에 속해 있는 게 그래서 중요합니다.
- 동료의 효과적 의사결정을 돕는다(Enable others to make decisions efficiently): 탁월한 개발자는 본인이 확보한 유용한 정보와 경험을 공유하여 다른 사람을 성장시키고, 팀의 생산성을 높이고, 결과적으로 본인이 속한 조직이 더 나은 의사결정을 할 수 있도록 돕습니다. 이렇게 하려면 본인과 조직 모두 투명성이 높아야 하는데, 저는 투명성이 높으려면 본인의 취약성을 드러내는 마음가짐이나 문화가 갖춰져야 한다고 생각합니다.
- 꾸준히 학습한다(Continuously learn): 마지막으로, 탁월한 개발자는 끊임없이 배우고 끊임없이 본인을 개선하려고 노력합니다. 이 업계가 워낙 빠르게 변하기 때문에, n년 전에 유효했던 지식이 지금도 유효하리라는 보장이 없습니다. 좋은 의사결정을 위해 정보를 습득하는 태도는 달리 말하면 꾸준히 학습하려는 태도이기도 합니다. 지식이 그저 지식으로 남지 않고, 그걸 배워서 어떤 역량을 어떻게 키워나갈 것인가 고민하면서 배워야 합니다. 요즘 핫하다는 프레임워크나 도구의 사용법만 파기보다는, 당장의 쓸모가 덜할지라도 좀 더 근본적인 원칙이나 설계에 대한 고전을 읽고 적용해보는 것도 좋습니다.
저는 이 다섯 가지 관점에서 탁월한 개발자로 성장할 가능성이 있는 사람을 찾기 위한 평가표 및 간단한 질문 목록을 만들어 XL8에서의 개발자 채용에 써먹고 있습니다. 단어 몇 개만 바꾸면 꼭 개발자뿐 아니라 어떤 직군의 역량으로든 적용할 만한 특징이라서, 응용하여 타 직군에 활용해볼 여지도 있고요.
이렇게 상향식과 하향식을 조합하여 특정 직군의 역량 기준을 만들어두면 신규 채용뿐 아니라 구성원의 역량 발전과 성과 평가에도 이용할 수 있으니 최소 일석삼조가 될 만한 활동이라고 생각해요. 그러니 시간이 들더라도 이런 역량 모델을 만들기 위해 구성원들끼리 깊게 논의해보시길 추천드립니다. 물론 이렇게 정한다고 끝이 아니라 회사, 팀, 제품, 그리고 사람들이 성장함에 따라 지속적인 업데이트가 필요하겠지만요.
참고로 특정 사안에 대해 구성원들끼리 의견이 갈린다면 성과를 내는 데 별로 중요하지 않은 항목일 가능성이 있습니다. 공통적인 부분에 대해서는 더 구체적으로 파고들어야 하고요. 예를 들어 ‘의사결정에서 생기는 갈등을 효과적으로 해결'하는 게 중요하다는 데 모두가 동의했다면, 어떤 갈등이 있을 수 있고 어떻게 해결해야 효과적인 것인지 한번 더 들어가는 것이죠. ‘개발자는 디버깅을 잘 해야지’라고 하면 디버깅을 잘 하는 게 뭔지, 그걸 잘 하려면 어떻게 해야 하는지 한번 더 들어가고요.
3. 그 역량을 확인하기 위해 어떤 질문을 할까?
구성원들끼리 토론을 거쳐 문제를 풀기 위한 핵심 역량 가설을 만드는 과정에서 해당 역량에 대한 공통된 이미지는 어느정도 형성됐을 것입니다. 하지만 후보자가 어떤 질문에 어떻게 대답할 때, 또는 어떤 행동을 보여줄 때 그 역량을 가졌다고 판단할 수 있을지는 여전히 의견이 갈릴 수 있습니다. 특히 열려있는 자리보다 후보자가 훨씬 많은 (행복한) 상황이라면 모든 후보자에게 동일한 질문을 해야 더 정당한 평가를 할 수 있습니다. 그렇다고 대본을 다 짜놓은 상태에서 인터뷰를 하라는 게 아니라, 예를 들어 ‘적어도 이번 인터뷰 들어갔다가 나왔을 때 이거 다섯 가지는 확인해야 한다'를 정해두는 게 좋다는 뜻입니다.
질문을 정했다면 이제 시뮬레이션을 해봅니다. 이 질문이 정말 그 역량을 확인하는 데 변별력이 있을까를 테스트해보는 것이죠. 시뮬레이션은 실제로 동료나 지인과 함께 해볼 수도 있고, 혼자 사고실험을 거칠 수도 있습니다.
지금까지의 전체 과정을 묶어서 예를 한번 들어보겠습니다.
문제: 지엽적이고 반복적인 문제가 많아서 근본적 개선을 할 시간이 부족하다. 성장 가능성이 있는, 손발이 되어줄 주니어 개발자를 채용해야겠다.
역량 가설: 성장 가능성이 있는 개발자는 꾸준히 효과적인 학습을 하고 있을 것이다.
역량 확인 질문 및 관찰 포인트:
- 당신이 지금까지 협업해본 분들 중 이 사람은 정말 탁월한 개발자다, 싶은 사람은 어떤 특징을 가지고 있었나요? → ’뛰어난 개발 역량'에 대한 본인만의 모델이 있는지 관찰
- 본인의 개발 역량이 큰 폭으로 향상됐다고 느꼈던 순간을 떠올려보세요. 당시 중요한 사건이나, 중요한 사람에 대해 들려주세요. → 위 질문에서 이런 얘기가 나오지 않는다면 직접 유도
- 지난 2주를 돌이켜볼 때, 스스로의 개발 역량을 의도적으로 향상시키기 위해 했던 활동이 무엇이었나요? → 본인이 이야기한 역량 모델에 기반하여 어떤 노력을 하고 있는지, 역량 향상에 유리한 환경을 어떻게 조성해두었는지 관찰
- 지난 2주를 돌이켜볼 때, 개발하다가 봉착한 어려운 문제는 무엇이었고 어떻게 해결하셨나요? 그와 유사한 문제를 다음 번에는 애초에 만나지 않거나, 만나더라도 더 쉽게 해결하기 위해 어떻게 하셨나요? → 후보자가 문제 해결 능력을 언급했다면 문제 해결 능력을 어떻게 키우고 있는지 관찰하기 위해 질문
질문 변별력 테스트: 내가 협업해본 개발자를 떠올려본다. 그들에게 실제로 질문을 해볼 수도 있고, 혼자 할 수도 있다. 혼자 사고실험한다고 가정해보면,
- (나)는 ‘성장 가능성 있는 개발자'라는 역량 축에 대해 어느 정도 수준인가? → 탁월함 / 평균 이상 / 평균 / 평균 이하
- (나)는 위 질문에 대해 어떻게 대답할 것인가?
- 대답만 봤을 때 (나)의 ‘성장 가능성 있는 개발자' 역량이 어느 정도 수준인지 판단해본다. 그게 (나)에 대한 실제 역량 평가와 얼마나 일치하는가?
- 이렇게 여러 사람에 대해 반복해보고, 이 질문이 그 사람의 실제 역량 평가를 얼마나 잘 예측해주는지 통계를 낸다. 탁월한 사람과 평균인 사람의 대답에 명백한 차이가 있다면 좋은 질문일 가능성이 높다.
인터뷰 스킬에 대한 교육을 들으면서 가장 충격적이고 유용했던 프레임이, 이렇게 채용을 하나의 거대한 실험 과정으로 여기는 것이었습니다. ‘조직 내에서 함께 토론하여 역량 가설을 세우고, 역량 가설별로 질문을 만들어 변별력 테스트를 하고, 채용 면접에서 질문의 효과에 대한 실제 테스트를 해본다’. 이런 실험 프레임으로 채용을 바라본다면 당장 좋은 후보자를 회사에 입사시키지 못하더라도 그 과정에서 학습하는 게 많아지고, 점점 더 채용을 잘 하는 조직이 될 거라고 생각합니다.
요약
채용 의사결정권자는 대부분의 조직에서 큰 책임을 가지고 중요한 역할을 하는 사람입니다. 면접은 이들의 시간과 에너지가 무척 많이 들어가는 사건이므로, 면접을 최대한 효과적으로 만들기 위해 미리 준비해두면 좋습니다. 면접 전에 할 수 있는 가장 좋은 노력 중 하나가 구조적 인터뷰 설계입니다.
- 어떤 문제를 풀기 위해 사람을 뽑고자 하는지 정의합니다.
- 그 문제를 잘 풀려면 어떤 역량이 필요한지, 상향식(우리가 당면한 문제를 잘 풀려면 후보자가 어떤 일들을 잘 해야 하는가?)과 하향식(그 직군에서 일을 탁월하게 잘 하는 사람들은 어떤 공통 역량을 가지고 있는가?)을 조합하여 역량 가설을 세웁니다.
- 누군가가 그 역량을 가졌는지 판단할 만한 질문을 뽑습니다.
- 그 질문이 얼마나 변별력 있게 그 역량을 판단해줄 수 있는지 확인합니다.
- 역량 가설별로 반복합니다.
조직이 꾸준히 성장하려면 당장 좋은 사람 한두명을 더 입사시키는 것에만 집중할 게 아니라, 현 구성원들의 채용 역량이 점진적으로 향상되는 구조를 만들어 채용이라는 문제를 점점 더 잘 푸는 조직이 되어야 합니다. 구조적 인터뷰를 제대로 설계하는 데 많은 시간과 노력이 들테지만 신규채용뿐 아니라 구성원들의 실무 역량과 채용 역량을 모두 향상시킬 수 있는 기회로 보고 투자해보는 것도 좋겠습니다. 시간이 부족해서 설계를 일부만 하더라도 괜찮습니다. 실제로 XL8에서도 모든 채용에 대해이 모든 과정을 정교하게 진행했던 것은 아니지만, 이전보다 만족스러운 채용을 하는 데는 충분히 효과가 나타났다고 자부합니다.
아무리 실험 프레임으로 채용을 바라보더라도, 열심히 만든 역량 가설과 질문을 실제 면접에서 잘 써먹지 못하거나 실제 입사까지 이어지지 못하면 무척 아쉽겠죠. 다음 레터에서는 면접 중, 그리고 면접 후 오퍼 단계에서 써먹을 만한 팁을 공유하겠습니다. 2주 뒤에 봬요.
당신의 생각을 들려주세요
현재 구독자님이 속한 조직의 열려있는 자리와 채용 프로세스가 구성원들의 채용 역량이 점진적으로 향상될 수 있는 구조로 짜여져있는지 궁금하네요. 다음 질문을 보면서 점검해보시면 어떨까요? 또는, 만약 구독자님이 채용 담당자보다는 구직자에 가까운 위치라면, 지원하고자 하는 조직의 JD를 보면서, 또는 실제 면접 과정을 거치면서 이들은 어떤 역량 모델을 가지고 있는지 분석해봐도 재밌을 것 같습니다.
Q. 구독자님이 속한 팀에 현재 열려 있는 자리가 있나요? 그 자리는 어떤 문제를 풀기 위해 열렸고, 그 문제를 푸는 데는 어떤 역량이 중요한가요?
Q. 어떤 질문을 해서 어떤 정보를 수집해야 그 역량을 확인할 수 있을까요? 생각난 질문을 현재 구독자님의 동료들에게 던져본다면, 그 답변을 역량 판단의 근거로 삼을 수 있을까요? 물론 그들에게 실제로 질문을 해보셔도 좋습니다.
의견을 남겨주세요