当社は新しいプログラマーを募集しています。そしてここに問題があります-インタビューを本当によく見て、あなたが必要とするテクノロジーを知っていて、良い仕事のバックグラウンドを持っているように見える多くの開発者があります、しかし2ヶ月の仕事の後、あなたは彼らが仕事ができないことに気付きますチームでコードを書くと、非常に長い時間がかかり、しかも、結果は本来あるべきものほど良くありません。
では、正式なテストを使用していますか(ありますか?)?優れたプログラマー、そして優れた人物をどのように認識しますか?将来の問題を明らかにする可能性のある簡単な「良い」質問はありますか? ...または、その人(つまり、主にあなたの経験)についての「感情」と、その人を試してみるということだけですか?
編集:Manojの回答によると、 here は就職の面接でのコーディングタスクに関連する質問です。
彼らに興味のあることについて話してもらいます。プログラミングについて話すときに本当に情熱を傾けているが、実際にはコーディングできない開発者にまだ会っていません。もちろん、それらは存在する可能性があり、面接では能力も確認する必要がありますが、私の経験では情熱が良い指標です。 (これは、流行語で「話をする」ことができることと同じではないことに注意してください。)
好きな言語やプラットフォームについて、嫌いな点を尋ねます。彼らはどのように物事を修正しますか?彼らは次のバージョンで何を見たいですか?趣味のプロジェクトはありますか?彼らがブログを持っているなら、それを読んでください。一般的なオンラインプレゼンスを確認します。
良い人を雇うことは難しいです。
私が上手になるには、いくつかの本当の間違いがありました。最初の数回はそれを信用せず後悔した後、腸管をより多く信頼し始めます。
私は Steve Yeggeの電話スクリーンの質問 を非常に尊敬しており、これをある程度の成功を収めた人々へのインタビューの基礎として使用しました。
私はまた、読んだ後に人々との面接が上手になったと思います ジョエルのゲリラへの面接ガイド (現在バージョン3.0では、Webおよびすべてのバージョンよりも前のバージョンです。良い)。
インタビューでタグ付けされたソフトウェアエンジニアリングStackexchange および some には他にも57の質問があります(2008年11月20日現在)。
いくつかのアイデア:
いくつかの異なる角度からいくつかの自由回答式の質問をします。
候補者は、何かを知っていると主張しています。簡単な質問をして、その答えに基づいて、もう少し詳細な質問をして、候補者の知識の限界に達するまで「掘り下げて」いきます。これにより、次のことがわかります。
チームワーク、期限切れのプロジェクト、デバッグ、etcなど、以前の仕事で候補者がさまざまな状況にどのように対処したかを尋ねます。答えは肯定的ですか否定的ですか?情熱的?インテリジェント?傲慢?
私は、熱心で、熟練していて、自信があり、丁寧で、最も重要な候補者を見つけますpresent。内部に誰かがいることを知る必要があります。 :-)
優れたプログラマーであることを認めるには、優れたプログラマーである必要があります。つまり、インタビューで語られ、行われた内容を確認するには、プログラミングについて十分に理解している必要があり、どのような質問をするかを知っている必要があります。
面接で候補者が間違った答えを与えられたのを見ましたが、彼らの説明は、彼らが主題を知っていることを示しています(したがって、ネットを検索することで簡単に正しい答えを得ることができました)。それを見るために、あなたはあなたが質問している主題を非常によく知る必要があります。
もう1つは、簡単にグーグルできる詳細についての質問を避けることです。これらの質問は、候補者が物事を覚えるのにどれだけ優れているかを示すものであり、候補者があなたが探している知識と理解を本当に持っているかどうかを示すものではありません。
私の推奨は、インタビューを手伝うために、プログラミングをよく知っていて、優れた人材スキルを持っている人から助けを得ることです。
編集:インタビューについてのコメントも書きました ここ 。
プログラミング能力がすべてではないことに注意してください。あなたはあなたのために働く世界で最高のプログラマーを持つことができますが、彼らが他の人々と一緒に働くことを嫌うなら、彼らはあまり役に立たないでしょう。
プログラマーの性格は、ほとんどの雇用者がランク付けしているように見えるよりもリストの上位にある必要があります。私の現在の職場では、彼らは正しいタイプの人を雇うことに非常に注意を払っています。
人々は一般によりよいプログラマーになることを学ぶことができます、人々は一般によりよい人間であることを学ぶことができません。
それらをコードにします。たとえば4〜5時間で解決できる問題を挙げ、ドキュメントのコード、コーディングのスタイル、実際にコードを開始する前にソリューションをどのように計画したかなどを調べます。実際に問題を解決する必要はありません。そしてジョン・スキートが述べたように、プログラミング、彼らの選択した言語、およびそのようなものについて話してもらいます。あなたは良いプログラマーの情熱を和らげることができます。 stackoverflowのように、彼らがフォローしているプログラミング関連サイトの数を尋ねます。彼らがalsをフォローしているブログは、良い指標になる可能性があります。
私は情熱の答えが好きです。私はあなたが実際にそれで非常に上手になるためにあなたが一緒に働くものに情熱を傾ける必要があると思います。
仕事以外の面で優れたプログラマープログラム(少なくともしばらくの間)。彼/彼女はプログラミングの問題を解決するのが好きです。また、自宅で特定のニーズを解決するプログラムが見つからない場合は、通常、自分で解決しようとします。
しかし、プログラマーにはいくつかの種類があります。
非常によく文書化し、優れたコミュニケーション能力を備えた「ハッカー」を見つけることができれば、私はあなたが大当たりしたと思います。
最後にもう1つ。リーダーの野心を持つプログラマーは、彼がプログラミングを使用して起動するだけなので、おそらく望んでいないでしょう。つまり、遅かれ早かれそのリソースを失うことになります。
プログラマーを雇うときに私が尋ねる質問は、「なぜプログラマーとして自分を教育したのですか?」です。彼らがそこにためらうなら、それは死んだプレゼントになるでしょう。
それが私の意見です。
私の友人は、採用プロセスに追加のステップがある会社で働いています。最初のスクリーニングと面接の後、申請者は数日間「仕事をテスト」する必要があります。彼は、1人の候補者が必要なすべてのスキルと才能を持っていたとしても、彼は a 一緒に働くのはいい人ではありません。
就職の面接だけでプログラマを認識するのは非常に難しい。
誰かが優れたプログラマーであると決定するいくつかの事柄は次のとおりです。
だからあなたはインタビューで見つけることができるいくつかの小さなヒントを持っています:
インタビューでテストを実行できます。
しかし、多くの場合、作業環境自体にも問題があります。確かにこれはあなたの組織には当てはまらないかもしれませんが、ソフトウェア産業の分野では、技術的負債が大きくなりすぎることはごく一般的です。それから、あなたが新しい人を雇うとき、借金のために彼らが良いかどうかはあまり役に立ちません。プログラムコードの可読性と理解性を最大化することで、新規参入者が仕事に取り掛かることができます。
また、多くの人が協力できるようになっていますが、協力する方法がない場合もあります。たとえば、すべての人が開発者であれば、彼らは自分の仕事をすることになっています。まあ、彼らはします。しかし、開発プロジェクトを運営し、会議などを続けるアーキテクトはいますか?通常の開発者は、会議を開始するのに必要な権限がないと感じ、他の人に時々邪魔をするとは考えられないかもしれません。
お互いにコミュニケーションすることが最終目標であってはなりません。必要なコミュニケーションが少なければ少ないほど良いですが、それが可能な場合に限ります。建築家がいると、可能性は少なくなります。通信の総量は良好なレベルにとどまる可能性がありますが、同じ量の通信でより多くの結果が得られます。
まず、いつものインタビューから始めます。目の前にいる人に何か価値があるかどうかを確認し、スキルと知識を判断することが非常に重要です。
その後、Javaの分野でいくつかの技術を使用します。主に、Effective Javaから取られたいくつかの原則について説明します。
この段階で、私の前に優れたプログラマーがいるかもしれないと思うとき、私は彼にコードレビューのためのコードを与えます。私が見たいのは、彼がコードの危険な部分を特定し、改善点をいくつか示し、パフォーマンスの落とし穴をマルチスレッド化して見つけ、重要な発言と「味覚発言」を区別できることです。これらはすべて、私がより熟練した従業員を見つけるのに役立ちます。
でも結局、採用はギャンブルのようなものだといつも覚えています。
私はこれがあなたの質問の答えにならないことを知っていますが、法律が許す限り、最初は一時的に(仕事によっては2週間または1か月)常に雇うことをお勧めします。その人が彼の塩の価値があるなら、彼は反対しないでしょう、それはあなたの両方にとっての安全策です(あなたを彼に任せることができ、彼は仕事が好きではなく、去ることになるかもしれません)。