2018.06.11

개발자, 데이터 과학자, 데브옵스 전문가를 평가하자··· 테스트 프로젝트 예제

Andrew C. Oliver | CIO KR
풀스택(full-stack) 개발자, 데이터 과학자 또는 데브옵스(devops) 지원자를 작업한 코드를 보지 않고 제대로 평가할 수 있을까? 아마 불가능할 것이다. 대면 인터뷰와 기타 주관적인 평가 방식은 부정확한 편견을 유발한다. 따라서 실제 작업물을 평가하는 일은 적절한 사람을 채용하는 데 중요하다.

구직자일 때 할 일
개발자, 데이터 과학자, 데브옵스 지원자가 실제 포트폴리오를 갖고 있으면 다른 지원자와 자신을 효과적으로 차별화할 수 있다. 그러나 지원자가 공개적으로 내세울 수 있는 작업물이 없을 수도 있다. 수행한 모든 작업은 NDA(기밀유지협약)나 지적 재산권 계약 조항의 적용을 받는 탓이다. 참고할 만한 자료를 제출하기에는 아직 초보자 수준일 수도 있다.

지원자가 포트폴리오를 만들 수 있는 한 가지 방법은 깃허브를 통해 다른 지원자와 차별화해서 자신을 어필할 수 있는 유리한 내용을 구축하는 것이다. 필자는 고용 관리자로서 내가 볼 수 있는 깃허브 호스팅 작업을 통해 지원자를 빠르게 추적하곤 한다.

고용하는 입장에서 할 일
고용자 입장에서는 초기 공개 코드 테스트를 실시할 수 있다. 일련의 프로젝트를 통해 특정 상황에서 지원자를 평가할 수 있고 후보자들에게도 자신이 할 일을 더 잘 이해할 수 있게 한다.

다음은 다양한 유형의 지원자를 평가할 수 있는 아이디어다.

풀스택 앱 개발자를 위한 테스트 프로젝트
모든 프로젝트는 명확한 스펙과 설명, 가능한대로 UI용 스크린 다이어그램이 있어야 한다.

- 할머니의 주소록 : 할머니의 주소록을 관리하는 간단한 애플리케이션을 작성하도록 한다. 할머니는 보안성, 확장성 또는 부가 기능을 필요로 하지 않는다. 이 애플리케이션은 데이터베이스, HTML, 코드 구성 및 단위 테스트 기술을 평가할 수 있는 간단한 CRUD 애플리케이션 작성 능력을 알려준다. 익숙한 프로그래밍 언어를 보여주기도 한다.

- REST 주식 시세 : 웹 개발자 지원자들에게 공개 회사의 주식과 금융 정보 확보용 애플리케이션을 작성하게 하는 방식을 생각해보라. 지원자들이 직접 설계하지 않은 API를 사용할 수 있는지, 간단한 인터페이스를 디자인할 수 있는지 보여주는 방법이다. 또한 풀스택 작업을 수행하는 데 필요한 코드 구성 및 기타 기술을 테스트할 수도 있다. 필자 역시 웹 개발자 지원자들을 평가할 때 이러한 테스트를 직접 활용한다.

- 이미지 검색 응용 프로그램 : 시니어급 데이터 엔지니어 지원자들에게는 이미지 검색 애플리케이션 제작을 요청해보라. 이 테스트는 (구글 비전과 같이) 잘 정의된 API를 사용할 수 있는지, ETL 기술을 보유했는지, 비(非)RDBMS에서 복잡한 데이터 문제를 처리할 수 있는지를 평가한다. 프론드엔드 작성을 요청한다면 UI 개발 기술을 테스트할 때도 사용할 수 있다.

데이터 과학자를 위한 테스트 프로젝트
- 선호도 애플리케이션 : 데이터 과학자와 데이터 과학 개발 분야 지원자에게 사용자 선호도를 예측하거나 권장 사항을 제시하도록 한다. 현대 머신러닝 기술에 익숙한지를 평가하는 방법이다. 베스트 바이(Best Buy), 무비 렌즈(Movie Lens), 그리고 직간접 선호 데이터 등이 이 데이터 세트에 포함된다. 지원자들은 이러한 데이터 세트를 활용해서 사용자를 위한 "권장 사항"을 작성할 수 있어야 한다.

- 게임 AI : 딥러닝과 규칙 시스템을 포함한 데이터 과학 개념에 익숙한지를 테스트하는 또 다른 방법이다. 체스와 같은 기본적인 게임을 사용할 수 있지만 여타 사용 가능한 오픈소스 게임들도 있다. 단 여러분의 선택이 타당한 범위인지 확인하라. 예를 들어 프리시브(Freeciv)는 AI 개발에만 수 년이 걸린 복잡한 게임이다. 적절한 언어와 인터페이스를 찾는 것이 도전 과제다. 또한 개발자가 직면하는 첫 번째 관문 중 하나, 즉 다른 사람이 구축한 환경을 다루는 방식을 평가하는 것이기도 하다.

데브옵스를 위한 테스트 프로젝트
데브옵스 지원자를 평가하는 경우, 모든 프로젝트에 Ansible, Puppet, Chef 또는 유사한 기술의 스크립트가 필요하다고 가정한다. 데브옵스 도구 없이 프로젝트를 수행하는 것만으로는 충분하지 않기 때문이다.

- 아마존 웹 서비스(AWS)나 구글 클라우드 엔진에서의 호스트 및 보안 : Solr, Couchbase 또는 MariaDB와 같은 개방형 소스 애플리케이션 또는 플랫폼 구성 요소를 선택하여 클라우드에 안전하게 설치하게 한다. "무료" 또는 평가판 노드를 활용해 수행 가능하다.

- 탐지 및 확장 : 숙련된 데브옵스 지원자에게 REST API를 실행하고 데이터를 생성하는 테스트 스크립트를 제공하라. 세컨드 노드를 자동으로 파쇄하고 생성하게 되는 과용을 탐지하는 스크립트를 작성하게 하라. 애플리케이션 서버 같은 비지정 형식의 무언가를 선택하게 하는 더 간단한 테스트부터 Solr을 활용하는 고급 테스트도 있다. 비교적 가격 부담이 있을 수 있기 때문에 지원자가 비용 부담을 느끼지 않아도 되도록 도의적으로 노드를 제공해야 한다.

- 복제 및 중복 제공 : 탐지 및 확장 테스트와 유사한 테스트 스크립트를 사용해 재해 복구용 WAN 복제(일명 CDCR, ‘복제’라고도 함)도 설정하게 하라. 결과물은 기술에 내재된 데이터 손실의 "수용 가능한" 수준과 대기 시간에서 허용되는 오차에 맞아야 한다.

* Andrew C. Oliver는 엔터프라이즈 검색 솔루션 기업 루시드웍스의 기술 구현 관리자다. ciokr@idg.co.kr 
2018.06.11

개발자, 데이터 과학자, 데브옵스 전문가를 평가하자··· 테스트 프로젝트 예제

Andrew C. Oliver | CIO KR
풀스택(full-stack) 개발자, 데이터 과학자 또는 데브옵스(devops) 지원자를 작업한 코드를 보지 않고 제대로 평가할 수 있을까? 아마 불가능할 것이다. 대면 인터뷰와 기타 주관적인 평가 방식은 부정확한 편견을 유발한다. 따라서 실제 작업물을 평가하는 일은 적절한 사람을 채용하는 데 중요하다.

구직자일 때 할 일
개발자, 데이터 과학자, 데브옵스 지원자가 실제 포트폴리오를 갖고 있으면 다른 지원자와 자신을 효과적으로 차별화할 수 있다. 그러나 지원자가 공개적으로 내세울 수 있는 작업물이 없을 수도 있다. 수행한 모든 작업은 NDA(기밀유지협약)나 지적 재산권 계약 조항의 적용을 받는 탓이다. 참고할 만한 자료를 제출하기에는 아직 초보자 수준일 수도 있다.

지원자가 포트폴리오를 만들 수 있는 한 가지 방법은 깃허브를 통해 다른 지원자와 차별화해서 자신을 어필할 수 있는 유리한 내용을 구축하는 것이다. 필자는 고용 관리자로서 내가 볼 수 있는 깃허브 호스팅 작업을 통해 지원자를 빠르게 추적하곤 한다.

고용하는 입장에서 할 일
고용자 입장에서는 초기 공개 코드 테스트를 실시할 수 있다. 일련의 프로젝트를 통해 특정 상황에서 지원자를 평가할 수 있고 후보자들에게도 자신이 할 일을 더 잘 이해할 수 있게 한다.

다음은 다양한 유형의 지원자를 평가할 수 있는 아이디어다.

풀스택 앱 개발자를 위한 테스트 프로젝트
모든 프로젝트는 명확한 스펙과 설명, 가능한대로 UI용 스크린 다이어그램이 있어야 한다.

- 할머니의 주소록 : 할머니의 주소록을 관리하는 간단한 애플리케이션을 작성하도록 한다. 할머니는 보안성, 확장성 또는 부가 기능을 필요로 하지 않는다. 이 애플리케이션은 데이터베이스, HTML, 코드 구성 및 단위 테스트 기술을 평가할 수 있는 간단한 CRUD 애플리케이션 작성 능력을 알려준다. 익숙한 프로그래밍 언어를 보여주기도 한다.

- REST 주식 시세 : 웹 개발자 지원자들에게 공개 회사의 주식과 금융 정보 확보용 애플리케이션을 작성하게 하는 방식을 생각해보라. 지원자들이 직접 설계하지 않은 API를 사용할 수 있는지, 간단한 인터페이스를 디자인할 수 있는지 보여주는 방법이다. 또한 풀스택 작업을 수행하는 데 필요한 코드 구성 및 기타 기술을 테스트할 수도 있다. 필자 역시 웹 개발자 지원자들을 평가할 때 이러한 테스트를 직접 활용한다.

- 이미지 검색 응용 프로그램 : 시니어급 데이터 엔지니어 지원자들에게는 이미지 검색 애플리케이션 제작을 요청해보라. 이 테스트는 (구글 비전과 같이) 잘 정의된 API를 사용할 수 있는지, ETL 기술을 보유했는지, 비(非)RDBMS에서 복잡한 데이터 문제를 처리할 수 있는지를 평가한다. 프론드엔드 작성을 요청한다면 UI 개발 기술을 테스트할 때도 사용할 수 있다.

데이터 과학자를 위한 테스트 프로젝트
- 선호도 애플리케이션 : 데이터 과학자와 데이터 과학 개발 분야 지원자에게 사용자 선호도를 예측하거나 권장 사항을 제시하도록 한다. 현대 머신러닝 기술에 익숙한지를 평가하는 방법이다. 베스트 바이(Best Buy), 무비 렌즈(Movie Lens), 그리고 직간접 선호 데이터 등이 이 데이터 세트에 포함된다. 지원자들은 이러한 데이터 세트를 활용해서 사용자를 위한 "권장 사항"을 작성할 수 있어야 한다.

- 게임 AI : 딥러닝과 규칙 시스템을 포함한 데이터 과학 개념에 익숙한지를 테스트하는 또 다른 방법이다. 체스와 같은 기본적인 게임을 사용할 수 있지만 여타 사용 가능한 오픈소스 게임들도 있다. 단 여러분의 선택이 타당한 범위인지 확인하라. 예를 들어 프리시브(Freeciv)는 AI 개발에만 수 년이 걸린 복잡한 게임이다. 적절한 언어와 인터페이스를 찾는 것이 도전 과제다. 또한 개발자가 직면하는 첫 번째 관문 중 하나, 즉 다른 사람이 구축한 환경을 다루는 방식을 평가하는 것이기도 하다.

데브옵스를 위한 테스트 프로젝트
데브옵스 지원자를 평가하는 경우, 모든 프로젝트에 Ansible, Puppet, Chef 또는 유사한 기술의 스크립트가 필요하다고 가정한다. 데브옵스 도구 없이 프로젝트를 수행하는 것만으로는 충분하지 않기 때문이다.

- 아마존 웹 서비스(AWS)나 구글 클라우드 엔진에서의 호스트 및 보안 : Solr, Couchbase 또는 MariaDB와 같은 개방형 소스 애플리케이션 또는 플랫폼 구성 요소를 선택하여 클라우드에 안전하게 설치하게 한다. "무료" 또는 평가판 노드를 활용해 수행 가능하다.

- 탐지 및 확장 : 숙련된 데브옵스 지원자에게 REST API를 실행하고 데이터를 생성하는 테스트 스크립트를 제공하라. 세컨드 노드를 자동으로 파쇄하고 생성하게 되는 과용을 탐지하는 스크립트를 작성하게 하라. 애플리케이션 서버 같은 비지정 형식의 무언가를 선택하게 하는 더 간단한 테스트부터 Solr을 활용하는 고급 테스트도 있다. 비교적 가격 부담이 있을 수 있기 때문에 지원자가 비용 부담을 느끼지 않아도 되도록 도의적으로 노드를 제공해야 한다.

- 복제 및 중복 제공 : 탐지 및 확장 테스트와 유사한 테스트 스크립트를 사용해 재해 복구용 WAN 복제(일명 CDCR, ‘복제’라고도 함)도 설정하게 하라. 결과물은 기술에 내재된 데이터 손실의 "수용 가능한" 수준과 대기 시간에서 허용되는 오차에 맞아야 한다.

* Andrew C. Oliver는 엔터프라이즈 검색 솔루션 기업 루시드웍스의 기술 구현 관리자다. ciokr@idg.co.kr 
X