새로운 프로그래머를 평가하는 가장 좋은 방법은 무엇입니까? [닫은] 구할 수있는 가장 좋은 후보자를 평가하는

새로운 직업을 구할 수있는 가장 좋은 후보자를 평가하는 가장 좋은 방법은 무엇입니까 (프로그래밍 기술 측면에서만 이야기하는 것)? 우리 회사에서는 성적이 좋지만 실제 프로그래밍 기술이없는 사람들과 나쁜 경험을 많이했습니다. 그들의 기술은 문제를 분석하고 해결책을 찾을 수없는 코드 원숭이와 같습니다.

주의해야 할 사항 :

  • 우리 나라의 교육 시스템은 정말 짜증납니다. 이런 종류의 직업에 능숙한 사람들은 재능이 있거나 실제로 스스로 배우려고 노력하기 때문에 좋습니다.

  • 대학 / 대학원 / 대학원 학위가 반드시 일을하는 방법을 정확히 알고있는 것은 아닙니다.

  • 인증 과정을 담당하는 사람들도 기술이 없거나 임금이 낮은 직업이기 때문에 인증은 여기서 아무 의미가 없습니다.

우리는 실제로 유연하고 기계적인 사고가없는 좋은 후보자를 얻을 필요가 있습니다 (경험별로 이런 유형의 사람들은 성과가 낮기 때문에).

우리는 정부 기관에 있으며 후보자 인 사람들은 반드시 외부에서 오는 것은 아니지만 올바른 후보자를 찾을 때까지 후보자를 받아 들일 수 있습니다.

내 질문에 너무 공격적으로 들리지 않기를 바랍니다. BTW 저는 프로그래머입니다.

편집 : 나는 여기에 정말로 복잡한 것을 요구한다는 것을 알았습니다. 나는 “정답”의 토글을 풀고 편견없이 토론이 유창하게 진행되도록 할 것입니다.



답변

후보자 선발에 관해서는 보통 3 가지 계획을 씁니다.

  • 정기적 인 검사FizzBuzz 같은 코딩 질문 하고 코딩 예제를 제공하기 위해 많은 지식 질문입니다. 위치에 따라 OO 원칙, SQL 디자인 원칙 등이 될 수 있습니다. 나는 테스트를 통해 질문의 어려움을 증가시켜 얼마나 멀리 갈 수 있는지 확인합니다. 아이디어는 실제로 모든 질문에 답변하는 것이 아니라 (만약 더 좋을 경우), 무언가를 알지 못할 때 인정할 수 있는지 확인하는 것입니다. 신뢰는 필수적이며 팀원에게 누군가 거짓말을하고 싶지 않습니다.

  • 응시자와 함께 시험에 응시 하고 답변에 대해 토론하십시오. 응시자의 한계에 도달 할 수있는 질문의 연장. 이것은 광범위 할 수 있으며, 광범위할수록 좋습니다.

  • 마지막 부분은 아니지만 코드 검토 . 응시자에게 코드 조각을 가져 오도록 요청합니다 (일반적으로 이전 테스트 / 토론과이 검토를 며칠 간격으로 작성하여 한 조각의 코드를 작성하고 연마하도록합니다). 그런 다음 두 사람과 정기적으로 코드를 검토합니다. 한 명은 응시자와 직접 협력 할 것이며 한 명은 응시자와 함께 시험을 검토 한 사람입니다. 코드 검토와 관련하여 JohnFX 에서이 기사 를 읽을 수 있습니다 .

이 모든 것이 끝나면이 후보자가 팀의 일부가되기를 원하는지 결정할 수 있어야합니다.


답변

그들에게 FizzBuzz 를 제공 하여 해결하십시오. 그것은 그들의 최악을 제거해야합니다.

그런 다음 약간 더 어려운 것-예를 들어 내장 라이브러리 함수없이 문자열을 뒤집는 방법. 그들의 생각 과정이 무엇인지 알기 위해 해결하는 동안 이야기하도록 요청하십시오.

그들이 이야기를하는 것이 아니라 걸을 수 있다고 확신 할 때까지, 그들이 매우 쉬운 것을 발견한다면 더 어려운 문제를 계속 겪을 수 있습니다.


답변

직업에 대한 열정을 찾으십시오.

사람을 찾습니다 조엘을 인용하자면 ” 스마트하고 일을 끝낼.

나머지는 중요하지 않습니다


답변

25 년간의 프로그래밍을 바탕으로 (다른 프로그래머를 고용하는 경우는 5-6 회만 포함됨) :

긍정적 인 지표 :

  • 기술에 대한 열정

  • 취미 프로그램

  • 권장되는 경우 기술 주제에 대해 귀를 기울일 것입니다.

  • 수년에 걸쳐 중요한 (그리고 종종 수많은) 개인 사이드 프로젝트

  • 스스로 새로운 기술을 배웁니다

  • 다양한 기술에 더 적합한 기술에 대한 의견

  • 그가“올바른”것으로 생각하지 않는 기술로 작업한다는 생각에 매우 불편하다

  • 분명히 똑똑하고 다양한 주제에 대해 대화를 나눌 수 있습니다

  • 대학 / 직장 오래 전에 프로그래밍 시작

  • CV 레이더 아래에 숨겨진“빙산”, 대규모 개인 프로젝트가 있습니다.

  • 다양한 관련없는 기술에 대한 지식 (CV에 없을 수 있음)

부정적인 지표 :

  • 프로그래밍은 하루 일입니다

  • 장려 할 때조차도“상점”을하고 싶지 않습니다.

  • 회사가 후원하는 과정에서 새로운 기술을 배웁니다

  • 선택한 모든 기술로 “행복한 기술은 훌륭합니다”

  • 너무 똑똑해 보이지 않아

  • 대학에서 프로그래밍 시작

  • 모든 프로그래밍 경험은 이력서에 있습니다

  • 외부 경험이없는 하나 또는 두 개의 기술 스택 (예 : 자바 애플리케이션 개발과 관련된 모든 것)에 중점을 둡니다.

또한 다음과 같이 제안합니다.

  • FizzBuzz의 시험 (또는 같은 뭔가 알고리즘을 작성하는 기본 능력을 테스트합니다.
  • 더 어려운 버전의 FizzBuzz 테스트 (실패 또는 거의 실패 지점으로 이동)
  • 코드를 토의하고 자기 비판적으로 기꺼이 할 수 있는지 확인하고 다음과 같은 개선 사항을 찾으십시오.
    • 좋은 변수 이름 (숙련 된 숙련 된 코더는 “플래그”(WTF ??)와 같은 프로덕션 환경에서 변수를 사용합니다)
    • 모듈화.
    • 문제 예측 및 “방어 적 코딩”수행
  • “결함”을 개선의 기회로보고자하는 의지. 최고의 코더는 항상 이전 코드의 결함을 끊임없이보고 있다고 생각합니다. 그들은 결점을 찾는 것이 개인적인 모욕이라고 생각할만큼 자기 중심적이지 않다. 그들은 그것을 더 잘할 수있는 기회로 본다. (결함없이 결함을 볼 수없는 사람들은 결함을보고 압도 당한다 (그리고 불신이되거나,이를 피하기 위해, 그들은 결함을 무시한다).
  • 그들은 디버깅 할 수 있습니까?
  • 그들은 단위 테스트를 할 수 있습니까? (저는 “QC가 그렇게한다”고 말하는 너무 많은 프로그래머들과 이야기를 나.습니다. 나는 테스팅에 대해 이야기하지 않고 테스팅에 대해 이야기하고 있습니다. 함수를 작성하고 작동합니까? 문제가있을 수 있습니다 (NULL 입력 등)? 그렇게 할 수 없다면, 언제 완료했는지 어떻게 알 수 있습니까?
  • 그들은 좋은 의사 소통 능력을 가지고 있습니까? (최소한 : 이해하고 이해하지 못하는시기에 대한 이해력과 자기 지식과 “이해할 수 없습니다. 다시 설명해주십시오”라는 의지가 있습니다.

위의 요약 중 많은 부분이 훌륭한 기사 인 좋은 프로그래머를 발견하는 방법 에서 얻을 수 있는데, 이는 장거리 지표에 좀 더 초점을 맞췄습니다. 내 직관과 경험을 확실히 확인합니다. 또한 “좋은 프로그래머는 무엇인가”의 체크리스트에서 일반적으로 언급되지 않은 많은 것들 (예 : “열정”)입니다.


답변

프로그래밍 인텔리전스 평가는 Turing Test의 한 형태입니다. 따라서 작동이 보장되는 폐쇄 형 평가 절차는 현재 없다. 지능적인 프로그래머는 다른 지능적인 프로그래머를 인식해야하지만 합리적인 확률로만 가능합니다.

팀원들에게 눈 일 냄새를 맡을 수 있고 어리석은 사람들과 일하는 것을 본능적으로 싫어하는 사람들이있을 경우, 기회가 더 좋아질 것입니다. .

(스택 오버플로의 품질을 부작용으로 만드는 데 도움이되는 한 가지 방법은 작업 요구 사항과 어떤 방식 으로든 오래된 스택 오버플로 질문을 파헤치는 것이지만 귀하의 의견으로는 열등한 답변이 있습니다. 좋은 답변이라면 게시하도록하세요 (군중 소싱 OCR에 대한 요약과 비슷합니다).


답변

그들에게 문제를, 바람직하게는 그들이 작업 할 문제 영역과 관련된 문제를주고, 그들이 어떻게 접근 할 것인지 토론하도록 요청하십시오. 자신의 기술 수준에 얼마나 자신감이 있는지에 따라 토론, 의사 코드 또는 실제 코드의 비트를 작성하도록 할 수 있습니다.

예를 들어, 조직에서 전화 회의를 한 경우 안전한 온라인 등록 시스템을 코딩하는 방법을 설명하도록 요청하십시오. 그들은 몇 가지 기본 사항을 다루고 정확히 구현해야하는 것에 대해 좋은 질문을 할 수 있어야합니다. 상호 작용할 때 조직에 적합한 지 여부와 필요한 역할을 결정할 수 있어야합니다.

나는 퀴즈 테스트와 두뇌 티저를 프로그래밍하는 팬이 아니다. 그들은 어떤 사람들에게는 재미있을 수 있지만, 팀에 가장 적합한 사람들을 포함하여 다른 사람들을 성가 시게하거나 스트레스를 줄 수도 있습니다. 또한, 그러한 많은 시험에 대한 정보는 온라인에서 쉽게 구할 수 있으며 프로그래머 능력을 측정하기 위해 생존 능력을 둔화시키는 시험 및 기타 전술에 대한 충격을 유발할 것입니다.


답변

이 질문과 그 답변을 읽으면 관심이있을만한 기사를 쓰게되었습니다.

소프트웨어 개발자 채용시 이상한 채용 관행

좋아, 기사 제목은 쓰레기이지만 기사는 문제의 핵심입니다. 그들이 당신이 생각하는 역할에 대해 부적절 할지라도 인터뷰를하기로 선택한 것은 후보의 문제가 아닙니다. 거친 곳에서 보석을 찾을 수 있도록 잘 인수 된 고용 절차를 정의하지 못했다면 결과에 따라 살아야 할 것입니다. 그렇습니다. 기대에 부응하지 마십시오. 서신 및 이력서를 기준으로 후보자를 필터링하려면 먼저 지원자에게 자신과 자신이 원하는 역할에 대한 서한을 작성하고 이력서 작성 방법을 확인해야합니다. 인터뷰 대상 후보가 한두 명 뿐인 경우 사전 심사를 올바르게 수행 한 것입니다.

실제로 자신의 시간에 가치가 있다고 생각되는 1 ~ 2 명의 후보자를 찾으면, 몇 가지 잘못된 테스터 질문을하는 것이 아니라, 이러한 사람들을 알게되고 소프트웨어에 대한 공개 토론에 참여하는 데 시간을 투자하십시오 일반적으로 공학. 전통적인 인터뷰 상황에서는 그 어느 때보 다 후보자에 대한 일반적인 접근 방식을 통해 더 많은 것을 배울 수 있습니다. 또한 한 번의 인터뷰로 마무리하지 말고 주요 후보자를 공개 토론이 사용되는 여러 회의 및 후보자가 잠재 동료와 만나는 곳에서 대우하십시오. 부적절한 기술 지원자들은 고도의 기술 토론에서 잘 번창하지 못하고 경비를 떨어 뜨릴 때 그 결함을 매우 빨리 보여줄 것이므로 시간이 낭비되지 않습니다.