나는 당신에게 내가 쓰는 화이트 보드 코드를 테스트하기를 절대적으로 원합니다. 글을 쓰는 동안 큰 소리로 말하고, 살펴보고, 구문 오류 대부분을 발견하고, 더 효율적일 수있는 방법을 지적하고자합니다. 사실, 그것은 화이트 보드에서하는 일입니다. 그건 하지 원샷, 쓰기 - 그것 - 모든 아웃, 어 - 허 - 당신 --얻는 70 가지의 / 100 종류. 대화가 코드로 중재되어 내 책상이 아닌 화이트 보드에서 열린 대화입니다.
"화이트 보드 코딩"테스트에 실패하는 좋은 방법은 다음과 같습니다.
- 거절하다
- 단 하나의 명확한 질문 (언어, 플랫폼, 요구 사항에 관한 것)을 묻지 말고 그 중 하나에 대한 가정을 말하지 말고 내가 대답 한 것에서 벗어난 가정을하십시오.
(예 : Fortran에서 작성하고, "디스플레이"또는 "인쇄"를 "이벤트 로그에 작성"으로 해석하십시오. 사전에 말한 경우 허용 할 수 있습니다.)
- 내가 원하는 언어를 물어보고, 직업 설명에있는 답변을받은 다음, 내가 요청한 언어에 익숙하지 않기 때문에 다른 언어로 쓰십시오.
(여기서는 컨설턴트입니다. 코딩만큼 컨설턴트의 행동을 테스트하고 있습니다. 고객에게 실제로 선택하는 경우에만 고객에게 요청하는 것이 정확합니다. 비용을 지불 할 사람들과의 대화를 제어하는 것은 어렵습니다. 이것은 수업 1입니다. 특정 주제에 대해 귀하를 상대로 표시 할 수 있지만 특정 "당신은 X 프로그래머를 고용하고 있지만 X를 쓰고 싶지 않습니다"에 대해 두 개의 큰 검은 색 표시가 나타납니다.)
- 두 개의 화이트 보드에 인터페이스, 팩토리 패턴, 추상화, 주입 및 테스트를 통해 "1에서 5까지 숫자를 인쇄"하고 싶었던 건축 우주 비행사가 무엇인지 보여주십시오.
(당신은 내가 과장한다고 생각하지만 내 문제를 극적으로 일반화 한 사람이 있었다. 위의 예를 고수하면서 1-5 대신에 그의 솔루션은 임의의 정수 시퀀스 (어디에서 나왔습니까? 궁금해했습니다)를 할 것이라고 5 다른 사람의 시간만큼-그는 실제로 작업을 수행 한 함수를 호출하는 것을 잊어 버렸습니다. 디버거 인 것처럼 그것을 계속 걸으라는 프롬프트와 반복 제안은 함수가 결코 호출되지 않았다는 그의 인식으로 이어지지 않았습니다.)
난 항상 "좋아요?" "그것을 향상시킬 수 있습니까?" "그것을 통해 나를 안내"등. 일반적으로 누락 된 세미콜론은 해당 대화에서 발견됩니다. 그렇지 않다면 보통 신경에 표시합니다.
화이트 보드에서 중요하지 않다고 생각하는 다른 것들 :
- 당신이 끝나면 여전히 읽을 수 있습니까? 번지거나 낙서하거나 색을 바꾸고 화살을 그렸으며 이제는 사용할 수없는 혼란을 겪었습니까? 또는 화이트 보드가 지울 수 있고 순환하거나 화살표 대신에 코드 라인을 가리키고 내가 사진을 찍고 디자인 파일에 보관할 수있는 것을 남겨 두었다는 것을 알고 있습니까?
- 당신이 한 것처럼 나에게 얼마나 물어 봤어? 혼자 있고 코드에 대해 논의하지 않습니까? 아니면 코드를 공동 작업으로 보십니까? 글을 쓰고있는 동안 내가 물었을 때 어떻게 대답 했습니까?
- 당신은 "쉬운"일을 조롱하거나 "딱딱한"일을 희미하게 했습니까? 코딩 할 수 있음을 보여 달라는 요청에 대해 무례 했습니까? 기술적 인 문제에 쉽게 겁 먹거나 좋은 알고리즘을 내놓는 능력에 대해 오만합니까?
- 당신은 당신의 머리에서 그것을 해결하거나, 당신이 어딘가에서 읽은 해결책을 기억하고 있습니까? 나는 보통 어려운 문제를 말할 수 있습니다.
- 어디에서 글을 쓰기 시작했는지 미리 계획 했습니까? 화이트 보드가 부족한 사람들은 일반적으로 너무 낮게 시작하거나 너무 크게 쓴다-나는 이것이 20 줄의 코드가 될 것이라는 것을 알지 못해서 5를위한 방만 남았음을 알 수있다-이 작은 세부 사항이 미러링되는지 여부 더 큰 추정 작업들.
- 당신이 끝났다고 말하기 전에 그것을 살펴 보셨습니까? 요청하기 전에 길을 가리 키거나 두드리고 직접 테스트하는 것을 보셨습니까? 내가 당신에게 프롬프트하거나 그것에 대해 특정 질문을했을 때, 당신은 그것을 다시 보았습니까, 아니면 기억에서 나갔습니까? 첫 번째 초안이 완전하지 않을 수도 있다고 생각하십니까?
화이트 보드에서 코딩을 연습하는 것이 좋습니다. 나는 항상 인터뷰 대상자들에게 요청을받을 것이라고 경고합니다. 실제 화이트 보드에 액세스 할 수있는 경우 간단한 문제를 설정하고 연습하십시오. 그것은 당신의 성과와 자신감에 도움이 될 것입니다.
죄송합니다. TL; DR 지역에 있지만 화이트 보드의 코딩은 코딩 이상의 것 입니다. 구문 이해 이상의 테스트입니다. 이 작업에 대한 응답으로 입증 된 훌륭한 프로그래머의 행동이 많이 있습니다. 코딩에 대해서만 생각한다면 요점을 놓친 것입니다.
화이트 보드 테스트에 대한 다른 대화에서 사람들은 내가 좋은 후보를 거부 할 수 있다고 말합니다. 솔직히, 그것은 기꺼이 감수 할 위험입니다. 모든 채용 라운드에는 내가 고용 할 수있는 여러 사람이 포함되어 있습니다. 이력서가 좋은 사람 중 일부는 인터뷰에서 질문과 답변 부분에서 문제를 해결하지 못하고 화이트 보드에 빠졌으며 자신이 알고 있다고 주장하는 언어로 간단한 코드를 작성할 수 없었습니다. 이 중 일부를 고용했을 수도 있습니다. 이를 방지하는 도구는 계속 사용하는 도구입니다. 나는 모든 후보자들이 화이트 보드를 엉망으로 만들었 기 때문에 아무도 보트를 빌리지 않았다.