개요

pre-employment 테스트란 채용 전 또는 수습 기간에 해당 인력이 과업을 수행하기에 적합한 인재인지를 평가하는 방법이다. 채용 전에 코딩 테스트나 심층 면접을 통해서 확인하기도 하지만 채용 후 수습 기간에 테스트하기도 한다. 이 테스트를 진행하면 조직에서 팀원들과 계속 함께할만한 인재인지 아닌지를 더욱 빠르게 판단할 수 있다.

회고

채용 후 수습 기간에 테스트를 진행하는 경우에는 채용 전 테스트보다 더 실무와 비슷한 환경으로 테스트를 진행하는 것이 인력을 판단해 보기에 좋았다. 스타트업이나 인력 수급이 급한 작은 조직의 경우는 채용 후 테스트를 진행할 수 없는 경우도 있는데 되도록 진행해 보는 것이 이후 신규 인력으로 인한 문제를 예방하는 데 도움이 됐었다. 만약 테스트를 진행하지 못하는 경우라면 기존 프로젝트와 별도로 분리할 수 있는 기능(기존 소스 코드나 대외비 자료를 열람해 주지 않는 선에서)을 위주로 실무와 테스트를 동시에 진행하는 것이 좋다.

7 Types of Pre-Employment Tests Given by Employers1 페이지에 따르면 아래 7가지 테스트의 종류가 있을 수 있다고 설명하고 있는데, 내가 경험했던 개발 직군의 경우 기술 평가 테스트를 통해서 처음에 기대했던 것만큼 해당 업무를 수행할 기술 지식을 갖추고 있는지와 감성 지능 테스트로 소속될 팀과 잘 맞는 인재인지(기존 팀원들에 나쁜 영향을 주지 않는지를)를 주로 확인했다.

  • 직업 지식 테스트
  • 무결성 테스트
  • 인지 능력 테스트
  • 성격 테스트
  • 감성 지능 테스트
  • 기술 평가 테스트
  • 신체 능력 테스트

테스트 후에는 반드시 피드백이 진행되는 것이 좋고, 피드백은 모든 팀원의 의견을 들어볼 수 있도록 같이 진행하는 것이 더 좋았다. 피드백을 줄 때는 감정적이지 않아야 했고, 원격으로 피드백을 줄 때는 내용을 잘 정리하고 감정적으로 들리지 않도록 내용을 더욱 부드럽게 다듬어야 했다. 하지만, 같이할 인재라면 정성스럽게 피드백을 줘야 하지만 그렇지 않다고 판단되면 간단한 피드백과 어렵지만 빠른 판단을 내리는 것이 서로에게 좋았다.

과제 예시

개요

Asana2, Monday3 와 같은 Task 기반 프로젝트 관리 서비스를 만들어주세요!

개발 환경

  • 개발언어 (선택가능)
    • 백엔드
      • Java + Spring Framework (원하면 Spring Boot를 사용해도 됨) + MyBatis
      • 또는 Python(Django)
    • 프론트엔드
      • 자유롭게 선택가능 (가능한 기술로 진행해주세요)
  • 데이터베이스 (선택가능, 버전 무관) 로컬 PC에 작업해주세요. 추후 팀 공유 시 별도 서버가 필요하면 완료 후 따로 안내해 드릴 예정입니다.
    • Mysql
    • MariaDB
  • Git 사용

기간

  • 2주 (문서화 기간 제외)

참고 사항

  • UI/UX 뿐만 아니라 위 필수 기능 외는 자유롭게 구성해도 됩니다.
  • 백엔드 API와 프론트엔드를 분리하여 개발하는 것을 추천하지만, 원하는 방식대로 진행해도 괜찮습니다.
  • Asana와 완전히 동일할 필요는 없고 기한내 기능을 구현하는 것을 목표로 진행해주세요.

필수 기능

로그인

사용자는 가입 및 로그인이 가능하고 로그인 후 Task를 관리할 수 있어야 합니다. (비밀번호 찾기 및 탈퇴 기능은 작업하지 않아도됩니다. 만약 시간 여유가 있다면 진행해주세요)

필드명 설명
이메일 로그인 이메일
비밀번호 로그인 비밀번호 (안전한 비밀번호 확인, 문자, 숫자 포함 등 규칙 설정하여 작업)
이름 표시 되는 이름 (text)

프로젝트 등록, 수정

Task의 상위 개념으로 각 Task를 그루핑 할 수 있는 프로젝트를 등록할 수 있습니다.

필드명 설명
프로젝트 명 텍스트 형태로 자유롭게 입력가능 합니다.

Task 등록, 수정

사용자는 Task를 등록하고 다른 사용자에게 할당할 수 있습니다. Task는 자신에게 할당된 Task 뿐만 아니라 모든 Task를 확인할 수 있습니다. My Tasks 메뉴를 통해 자신에게 할당된 항목만 확인할 수도 있습니다.

아사나 Task 등록 예시 (https://asana.com/guide/help/tasks/fields)

필드명 설명
Task 명 텍스트 형태로 자유롭게 입력가능 합니다.
Task 상세 내용 내용을 길게 입력이 가능해야 합니다.
파일 첨부 1개 이상 복수의 파일 첨부가 가능합니다. 로그인한 사용자만 파일에 접근할 수 있어야 합니다.
담당자 가입한 사용자를 선택하여 할당할 수 있습니다.
만료일 만료일을 선택할 수 있습니다. 만료일이 지나면 다른 색으로 표시됩니다.
프로젝트 프로젝트를 선택해서 할당 할 수 있습니다. 단, 선택을 안할 수도 있습니다.

Task 완료 처리

완료 버튼 또는 체크 박스를 선택하여 Task를 완료(또는 다시 선택시 완료 취소) 시킬 수 있습니다.

결과물

  • UML, 클래스 다이어그램
    • 다른 분들이 전체 설계를 파악할 수 있는 수준으로 만들어주세요.
  • ERD
    • 데이터베이스 설계를 확인할 수 있게 만들어주세요.
  • 기타 프로젝트 설명 문서
    • 기타 다른 프로젝트를 설명할 수 있는 부분이 있다면 만들어주세요.
  • 설치, 운영과 관련된 문서
    • 설치와 운영에 필요하다고 생각되는 부분에 필요한 부분 생각해보고 만들어주세요.

피드백

  • 자바스크립트 작성을 비동기로 작성하면 성능에 도움이 됩니다.
  • POST, PUT, DELETEhttp verb를 의미에 맞춰 사용하는 것이 좋습니다.
  • 데이터베이스 네이밍(컬럼명, 테이블의 단수형, 복수형등)은 일관성있게 작성하는 것이 좋습니다.
  • 다양한 사용자 환경이 있을 수 있으므로 브라우저 타게팅을해서 구현하는 것이 좋고(ES6 사용으로 인해), 지원하지 않는 경우 오류 처리가 필요합니다.
  • 자바스크립트의 hoisting 문제와 일관된 오류 처리가 추후 관리에 도움이 됩니다.
  • API의 응답 메시지의 응답 메시지의 스팩 정리가 필요하고 응답 HTTP 상태 코드(200, 500, 404 등)와 json내용이 스팩과 맞게 일관되게 동작하는 것이 관리와 오류 상황을 줄일 수 있습니다.
  • 기타 UI, UX와 관련된 피드백
  • 보안 관련 개인정보 처리 (단방향, 양방향 암호화 등)에 관한 피드백

References