潜在的な従業員にプログラミング能力を評価するために提供できる小規模なプログラミングプロジェクトを探しています。これらは、大学を出たばかりのプログラマーになります。私は、誰かが数時間かかり、彼らがインタビュー後に回答をメールで返すプロジェクトを探しています。
1つの例は、このテキストの段落を取り、アルファベット順の一意の単語のリストを返すことです。各単語の後に、その単語が何回出現したか、その単語がどのセンテンスで出現したかを教えてください。
誰にも良い提案がありますか?
潜在的な従業員にプログラミング能力を評価するために提供できる小規模なプログラミングプロジェクトを探しています。これらは、大学を出たばかりのプログラマーになります。私は、誰かが数時間かかり、彼らがインタビュー後に回答をメールで返すプロジェクトを探しています。
1つの例は、このテキストの段落を取り、アルファベット順の一意の単語のリストを返すことです。各単語の後に、その単語が何回出現したか、その単語がどのセンテンスで出現したかを教えてください。
誰にも良い提案がありますか?
回答:
私は、誰かが短期間で何もできず、その人について有用なことを何も伝えることができないと結論づけました。しかし、すべての優秀な候補者には、すでに書かれた個人的なプロジェクトがあります。そのため、特定の課題を「誇りに思っている、あなたの名前を刻印して喜んでいるコードを教えてください」に置き換えました。
彼らのプロジェクトの選択は、1時間以上のタスク以上のものをあなたに伝えます。そして、それを議論するのに1時間費やしてさらに学ぶことができます。
私はこの心とゲームのがらくたにとても飽きています。私は、コードサンプルのために私に尋ねた場所にされてそれらを離れてリッピングした後からサンプルコードを説明するために私に尋ねてきた彼らのそれが出て割れた2歳児によって書かれたように見えたシステム。あいまいな並べ替えアルゴリズム、ネットワークサービス、GUI、データ構造(常にツリーまたはリンクリスト)を実装するように求められました。インタビュアーがプログラミングの最も重要な部分だと思うことについて、いじる面倒な質問のあらゆるフレーバー。
結局、それはほとんど役に立たない。従業員を評価する最良の方法は、従業員を30日間雇用し、その従業員が仕事をどの程度うまく行っているかを確認することです。テストの開発に時間を費やすと、誰かが日常的にどのように機能するかについてはわかりません。
誰かが自分の時間に実用的なプロジェクトを行えるようにすることは、必ずしもそれを行うのが彼らであるという意味ではありません。
面接のために全員が早く到着します(少なくとも、そうすべきです)。それらを見る準備ができるまで、彼らが作業するための「しばらくお待ちください」シートがあります。主に使用する言語で応募者の知識をテストする8つの質問があります。
誰もが自分の前にコンピューターを置いて正しい答えを出すことができるので、私たちはすべて正しい答えを探しているのではありません。私たちはプロセスを探しています、彼らは質問を試みますか、彼らはどうやって答えに来ますか。
インタビューに参加するとき、私たちは彼らと話し合い、彼らが持っているかもしれない質問に答えます。また、彼らが思いついた答えをどのように得たかを尋ねることができます。
これは以前の研究と組み合わせて、候補者を除外する最良の方法です。
更新2016/06/15
開発者の採用方法のプロセスを大幅に変更しました。
フェーズ1:7つの質問をする15分間の電話インタビュー。最初の2つは、「今まで取り組んだ中で最も楽しいことは何ですか?」です。(プログラミング関連である必要はありません)、および「空き時間に楽しみのために何をコーディングしますか」
フェーズ2:自分の時間で完了するミニプロジェクト。次に、彼らとスクリーン共有を行い、彼らは彼らが構築したものを見せてくれます。また、画面共有中に、プロジェクトに2つの変更を加えてから、彼らがそれを通して動作し、動作するのを観察します。
フェーズ3:対面インタビュー。
このプロセスにより、文化の適合性をすぐに把握できます(フェーズ1)。彼らが仕事をすることができて、実際に彼らの話を歩くならば(フェーズ2)。最後に、それらの値が探しているものとインラインであることを確認します(フェーズ3)。
Jon Jaggerの素晴らしいCyber-Dojoをチェックしてみてください。
これは、テスト駆動開発を慎重に実践し、チームダイナミクスについて学習するために設計されたWebベースの統合環境です。多くの小さなプログラミングタスク(カタの)があり、PythonやRubyからJavaやC ++まで、さまざまな言語をサポートしています。
生産性のために設計されたIDEとは異なり、コード補完、構文の強調表示、自動リファクタリングはないため、これらがなくてもインタビュー対象者が何ができるかを確認できます。
最も良いのは、カタを行った後、戻って各カタの赤/緑の進行を見ることができる(または、TDD * 8 'を行わない場合はそうでないかもしれません)。すべてのコンパイル/テストは、テストの結果とともに変更をgitリポジトリにコミットします。
インタビューコーディングテストにこれを使用すると、候補者が問題を解決する能力だけでなく、問題解決へのアプローチや、外部要因に制約されない場合に使用するプロセスについて多くのことがわかると思います。候補者がそれに費やす時間。
独自のCyberDojoサーバーが必要な場合は、プロジェクト全体をgithubで見つけることができ、そこからリンクされたTurnkey Linuxアプライアンスの仮想マシンもあります。つまり、すでにVMwareプレーヤーまたはVirtualBoxがインストールされていると仮定すると、アプライアンスをダウンロードする数分!
私はこれを行った会社に一度だけインタビューしました。彼らは6つか7つの問題の質問シートを提供しました。指示は、各問題を解決する方法を作ることでした。
タスクの一部は、コードを再利用できることを理解することでした。問題は他のソリューションのコードを使用する可能性があります。連続的でもありませんでした。たとえば、質問5は、質問5で使用した方法を使用して作成できます。
そのようなことを試してみることをお勧めします。
質問は?Project Eulerサイトの開始時の質問のいくつかは良いものです。
また、プロジェクトをどのようにまとめることができるかを知りたい場合は、簡単なゲームを試すこともできます。
または、何かを思い付かない場合は、最終プロジェクトのコードを送ってもらうよう依頼します。
プロジェクトを完了するように人々に依頼するには、特定のスキルセットを念頭に置いて評価し、それらのスキルをテストするプロジェクトを設計する必要があります。
1つの例は、このテキストの段落を取り、アルファベット順の一意の単語のリストを返すことです。各単語の後に、その単語が何回出現したか、その単語がどのセンテンスで出現したかを教えてください。
この質問で何を探していますか?それを解決する方法はいくつありますか?また、各アプローチは答えを書いた人について何を教えてくれますか?この質問に対する効果的な回答で示されるスキルは、ビジネスにとって最も重要なスキルと同じですか?
これらの質問に対する答えが欲しくありません。候補者のグループをプロセスにかける前に、答えを考えてほしい。探しているスキルがわかっていれば、それらのスキルを探すための質問を作成するのは難しくありません。評価するために設計されたもの(もしあれば)を完全に理解せずに他の人の質問を使用すると、本当に自分をだまして、みんなの時間を無駄にしていることになります。
1つの例は、このテキストの段落を取り、アルファベット順の一意の単語のリストを返すことです。各単語の後に、その単語が何回出現したか、その単語がどのセンテンスで出現したかを教えてください。
彼らはこれをどの言語で書くでしょうか?彼らがCに重点を置いている学校から出てきた場合、これはPython / Perl / Rubyなどを教えるものほど速く書くことはできません...あるいはJavaやC#さえも。それにもかかわらず、それは良い小さなテストです。
実際にインタビュー中に簡単なものをいくつか提案します。トリックの質問はありません。私はこれについてTMNと一緒にいます。基本的なタスクを実行する2、3の関数を与え、それらが何をするかを尋ねます(他の人のコードを読む)。次に、選択した言語で記述するための基本的なタスク(20行未満)をいくつか与えます。これは、エントリーレベルが(エントリーレベルの位置で)コーディングできるかどうかを知るのに十分なはずです。それはインタビューとGPAとともに、あなたが知る必要があることについて良いアイデアを与えるはずです。
その言語の設計パラダイムを使用して、あなたが見ているどの言語でもConwayのGame of Lifeを実装してもらいます。
JavaまたはC#ConwayのGame of Lifeはオブジェクト指向である必要があり、LISPまたはF#は機能します。