과제 전형하니까 생각나는 일화
한 10년 정도된 것 같네요. 어느 헤드 헌터가 외국에서 일해보고 싶지 않냐며 facebook 메신져로 연락이 오더라구요. 그래서, 궁금하기도 하고 해서 진행을 했는데, 호주에 있는 프롭테크 회사를 소개시켜주면서 “네가 짠 코드중에 가장 잘 짰다고 생각되는 코드 3~5개를 보내라”라더군요. 이력서나 자기 소개서는 그 전에 헤드 헌터에게 전달된 상태였고요.
그래서, 곰곰히 생각해서 보냈는데 합격했다고 하면서 영어 인터뷰를 보자고 하더군요. 제가 외국에서 사는 것에 진지하게 고민하지 않은 상태여서 결국 거절했지만 신선한 경험이었고, 곰곰히 생각해보니 매우 좋은 방법같더라구요. 그래서, 그 이후에 이력서를 제출하지 않고 메일과 소스 파일 첨부로 지원을 했고 매우 효과가 좋았습니다. 이 방법이 좋은 이유는 다음과 같습니다.
차별화
이력서없이 소스코드만 보내면서 “내 코드가 마음에 들면 면접 기회를 주세요”라는 메일을 받으면 어떤 것 같은가요? 대부분 한번 불러서 인터뷰해보자고 생각할 겁니다. 제가 이 방법으로 면접을 본 비율은 100%였습니다. 제가 아마 이력서와 자기 소개서를 통해서 시도했다면 20%도 안될 겁니다.
효율성
검토하는 입장에서 많은 문서를 읽을 필요도 없고 몇개의 소스 코드 파일만 읽을 수 있다. github나 포트폴리오를 검토하는 것보다 많은 시간을 아낄 수 있습니다. 또한 저역시 제 코드 스타일을 좋아하지 않는 회사라면 피하는게 서로 좋을테니 시간낭비하지 않게 되어 좋습니다.
의도 전달
내가 추구하는 코드의 방향성을 알려줄 수 있습니다. 그당시 제가 제출한 코드는 AbstractServer.java, InstrumentableClassLoader.java, JarFileUtilsTest.java, LocalCache.java 였습니다. 각각 제가 어떤 개발자이고 어떤 방향을 추구하는지 말할 수 있습니다. 제가 전달하려는 의도는 다음과 같았습니다.
AbstractServer - 나는 패턴에 능숙하고 코드를 구조화할 수 있습니다.
InstrumentableClassLoader - 나는 자바 언어 및 플랫폼에 대한 깊은 이해가 있습니다.
JarFileUtilsTest - 나는 소프트웨어 테스트에 많은 관심이 있고 다양한 테스트 기법을 가지고 있습니다.
LocalCache - 나는 상용 소프트웨어에서 사용할 수 있는 자료구조를 구현할 수 있습니다.
제가 만일 가고 싶은 회사가 있는데, 과제를 요구한다면 저는 저 파일을 보내고 과제를 면제해달라고 하겠습니다. 만일 면제해주지 않는다면, 그 회사가 코드를 보고 판단할 능력이 없거나 제 코드와 스타일이 다른 방향이니까 서로 시간을 아낀 셈이니 좋은 거겠죠? ㅎㅎㅎ