私が働いている会社は、私よりも経験豊富な上級開発者を雇うことを望んでおり、彼らは私が面接の技術的な部分を行うことを期待しています。私は数年しかプログラミングしていないので、自分よりも理解や経験が豊富な人のコーディングスキルを評価するために必要な知識があるかどうかはわかりません。
より高度なプログラミングスキルを評価するための優れた手段であるが、それでも私が理解できるものであることを尋ねるために、技術面接の質問を誰かが勧めることはできますか?
私はジュニアを過ぎたと言うでしょう。プログラマーレベルですが、先輩にはほど遠いです。私がやったことのほとんどは、小さなアプリ(Webとデスクトップ)で構築されたもので、かなり複雑なものもありますが、それらはすべて、ほんの一握りのユーザーが使用することを目的としています。私はほとんどのプログラミング概念をきちんと理解していて、何でも自分自身を学び/教えることができると感じていますが、私には経験がありません。上司は「知らないことは知らない」と言うのが好きなので。
特に、私が採用した人に私が経験したことのないもの(私にはない)は、多層開発、マルチユーザー環境、大規模アプリケーション開発、双方向メッセージング、共有セッション、およびマルチスレッド/ BackgroundWorkers。
更新:
以下のトールのコメントに応えて、私たちは数か月前に誰かを雇いました、そしてそれは素晴らしい仕事をしていると思います。コーディングだけでなく、デザインパターン、ソフトウェアアーキテクチャ、ドキュメンテーション、他の大規模なプログラミングチームがどのように作業を行うかなど、多くのことを学んでいます。誰かがやって来て、あなたがしたことをするためのより良い方法を指摘するのは必ずしも簡単ではありませんが、あなたのプライドを飲み込み、新しいことに挑戦しようとすることができれば、多くを学ぶことができます。
面接プロセスは私が予想したよりもうまくいきました。慣れ親しんだことについて質問し始め、苦労していたことについて質問しました。聞き取り対象者が私が理解できないことを言ったときはいつでも、私は彼らに私にそれを説明してからそれを書き留めて後で調べることができるように頼みます。全体的に、応募者のスキルレベル、インテリジェンス、および彼らがどのように仕事をしたいかについてかなり良いアイデアを得ることができたと感じました。
できません。
代わりに、インタビューで今日の問題のリストを提示して、彼に質問する彼がどのようにそれらを解決するかと尋ねることをお勧めします。
これは、次の2つの理由から非常に興味深い方法です。
無料コンサルティングです。あなたが男を雇わなくても、彼は提案するかもしれませんあなたの問題への素晴らしい解決策。
彼が面白いsolutionsを持っている場合、彼はproblem solverです。あなたが雇いたい人のようなもの。
年齢を有利に使用してください。
私より年上の人にたくさんインタビューをしました。私はよく知っている技術を選択し、Technology Xについて聞いたことがあるが、それを使用したことがないことを伝えます。私は候補者に、テクノロジーの概要と彼らがプロジェクトでそれをどのように使用したかを教えてくれるようお願いします。
これは驚くほどうまくいきます。まず第一に、候補者がそのテクノロジーXを履歴書で流行語としてのみ使用している場合、その説明は意味がありません。また、彼らが過去のプロジェクトでそのテクノロジーをどのように使用したかについての具体的な良い例を彼らがあなたに与えることができない場合、あなたはすぐに大きな赤い旗を持っています。
Java Springの経験がある人にインタビューしました。以前の仕事でSpringを使用したことがあり、Springの大きな特徴の1つはDependency Injectionです。インタビューした候補者に聞いたことがあると伝えました春、それを使用したことはありません。彼は何度もたたき始めましたが、Spring AOPをどこで使用したのかわからず、依存性注入を私に説明できませんでした明示的に彼の履歴書でそれらが呼び出されているのを見てから尋ねられました。彼はそれらが本当にクールだと私に言っただけで、そこで学ぶことはたくさんあるなどなど。それは本当に彼がジャックを知らなかったことが判明した...そして私は私が開発チームの若いメンバーであったことを知る唯一の方法でした。
だからあなたの年齢を有利に使ってください!自信を持って、よく知っているテクノロジーについて質問してください。
彼らはあなたよりも多くの経験を持っているからといって、彼らはあなたよりも優れた開発者ではないかもしれないことを覚えておいてください。 「1年の経験が繰り返されたn回」というフレーズ。あなたがこれが産業界で起こるのを見ているからです。したがって、面接中の最初のタスクは、彼らが実際に関連する経験を持っていること、そして彼らが何をしているのかを知っている誰かとして自分自身を表すことができることを確立することです。同様に、誰かが業界でn年の長年の経験を持っているからといって、特定の言語、ライブラリ、またはフレームワークでの経験が豊富であることを意味するわけではないので、彼らはまだあなたから来ているかもしれません彼らが何かを学んでいる間に質問をする時間に。
次に、優れた上級開発者とは、問題が発生している問題に取り組み、それについて質問できる人であることを覚えておいてください。これは、あなたが問題を抱えているといういくつかの設計上の質問を彼らに尋ね、彼らがどのように反応するか、そして彼らの説明における彼らの推論が何であるかを見る良い機会です。彼らはどこかで先に似たようなものを見たことがありますか、彼らは経験に基づいて知識に基づいた推測を行っていますか?彼らはオンラインまたはジャーナルで記事を読みましたか?
最後に、もう1つ注目すべき点は、デバッグコードへのアプローチ方法です。私自身の経験では、言語に関係なく、特定のデバッグ手法が普遍性に適用される傾向があることを発見しました。候補者にあなたが遭遇したより難解なバグの1つの例を与え、彼らにバグへの取り組み方を説明してもらいます。彼らには、すぐには明らかではない問題に対する洞察がありますか?
要約すると、印象的な面接で候補者に面接することは恐ろしいかもしれませんが、彼らがどのレベルになるかに関わらずカバーする必要があるものがあります(つまり、彼らは実際に彼らが何をしているのかを知っていますか)、それが完了すると、調査を始めることができます彼らがどのように彼らの経験を適用しているかを見る。候補者が以前の実務経験をどのように適用しているかによって、ある候補者が別の候補者よりも目立つようになります。
私は 年齢をアドバンテージとして使用する 答えがとても好きで、同様のことを提案します。
低いレベルの経験を有利に使う
この人はあなたの上司またはメンターになる可能性が高いので、その人が実際にあなたをメンターできるかどうかを確認できるような方法で質問してください。
はるかに簡単にできる、または複雑すぎる問題を含む複雑な質問をします。彼/彼女が良い場合、彼/彼女は質問に答えようとするだけでなく、問題を解決するだけでなく、実際に実際の問題に到達し、あなたの質問の欠陥を示します。もし彼/彼女があなたを威圧することなく丁寧にそれを行うことができれば彼/彼女は番人です。
本当に重要なことは、あなたが彼があなたが必要としているものに対して経験豊富な開発者の正しいkindであることを確認することです。
人々は自分のキャリアを進むにつれ、自分が何をすべきかという点で異なる方向に向かう傾向があります。プログラマーの大規模なチームを実行したり、複雑なレガシーコードを操作したりする専門家であり、彼らがあなたの役割に適切な人物でなくても、彼らが何をするかに非常に優れている人にインタビューしているかもしれません。ですから、事前に探している正確にについて考え、自分の仕事の開発者の種類を他の人と正確に区別する質問を考えてみてください。
私はこれを数回行わなければなりませんでした。私は段階的なプロセスでそれを行うことを学びました。
先輩候補者を面接するときの最大の問題は、彼らが後輩、特に私の基本的なコーディングテストを処理できなかった人からの面接に非常に神経質になることが多かったことです。面接全体を通して見せたスキルで、脅威を感じさせないように一生懸命努力してください。たとえ彼らがあなたの質問にうまく答えられない場合でも、それらに集中してください。基本的に失敗した場合に答えられる質問に面接を傾けます。
実際の面接プロセスに関しては、基本的に、採用している他の人と同じように扱います。同様の採用プロセスがあるはずです。
このサイトには、インタビュープロセスでカバーする必要のある一般的なディスカッショントピックをカバーする他の多くの投稿があります これは私の答えの1つです 。
面接プロセスのすべての時点で、経験豊富な人は宣伝されている専門分野について優れた理解を示す必要があります。ディスカッションで取り上げるトピックについて、深く掘り下げることができます。あなたの経験/快適レベルの限界に質問をして、彼らが心配することなく続けることができるかどうかを確認してください。経験の浅いものを使いこなす必要がある場合は、サンプルの質問をWeb検索して(選択してください)、前に回答を読んで理解してください面接、そして候補者にこれらの質問のいずれかを尋ねます。彼らがすべての答えを知っていると期待しないでください。そのため、いくつかの質問を用意してください。
あなたが雇うことができる経験豊富なエンジニアには2つのタイプがあります:
1)関連業界での経験
これは、現在の問題のリストを受け取って、それらがそれらの問題にどのように対処するかについて話し合うことができる人物です。業界のドメイン固有の各トピックに対する理解度を測定する必要があります。あなたはその業界にいるので、「良い」答えから「愚かな」答えを見分けることができ、おそらく「経験豊富な」答えも見つけることができます。他の回答とは対照的に、彼らがあなたの現在の問題を実際に解決することは期待しません-あなたがそれらを雇ったときに起こります-しかし、あなたが彼らが始めたら彼らができることをあなたに説得する必要があります。
2)関連する業界経験なし
そのため、この候補者は業界を変える可能性がありますが、必要な基盤テクノロジー/プラットフォーム/スキルの優れた経験があります。これらの項目について深く掘り下げてください。ただし、それらについて話すだけでよいのですが、ドメイン固有の問題の解決策を考え出せるとは思わないでください。たとえば、あなたの会社がFacebookであり、インタビューの相手がPHPおよびC++で熱くなっている場合、大規模なサーバーファームのすべての落とし穴を知っていると期待するのは非現実的です。彼らはCVでそれを主張します)。
私がはっきりと指摘しなかったのは、「テクノロジーXはよく知っているし、とても興味深いようです。5分で説明していただけませんか」です。
あなたはおそらくmaintainコードが新しい人から最終的に出てくることができると予想されるので、彼または彼女が他のプログラマーにそれを効率的かつうまく説明できることが重要です。コミュニケーション能力と考えてください。
他の開発者とスキルレベルで出会い、考えやアイデアを自分のレベルで伝えるには、十分な理解が必要です。
その人が口頭でコミュニケーションをとることができない場合、彼または彼女は、メンテナーのためではなく、コンパイラーのためだけのコードを書く可能性が高いです。
一部のメンタリングについては、Stevenに同意します。実際、私はあなたが彼/彼女にメンターシップについての彼/彼女の見解は何であるか、そして彼は様々なシナリオでそれをどのように行っているかについて彼/彼女の質問をすることができると言います。次に、回答に基づいて評価します(気に入った場合は上司からフィードバックを得るか、報告で実際の回答について話し合うことができます)。
候補者はおそらくあなたの仕事を解決するか、少なくとも理解できるはずなので、同僚に質問することもできます。
現在使用している、または使用する予定の実際の問題とテクノロジーに関するインタビューで、間違いなく彼の頭脳を選んでください
彼/彼女が有能で想像力に富んだ上級開発者であると仮定して、採用するかどうかに基づいて決定しますあなたは彼/彼女から学び、彼/彼女とうまく働くことができると思います
あなたは将来の上司にインタビューしているのではなく、あなたの将来のメンターにインタビューしているのです。すべての答えを知っているが教えることができない人を選ばないでください
本を読むことを真剣にお勧めします "「賢くて物事を成し遂げる:最高の技術的才能を見つけるためのジョエル・スポルスキーの簡潔なガイド」 。
私は誰も雇いませんでしたが、時々私が面接を受けたとき、流行語だけを知っていて私に面接していた馬鹿がその本の中で推論ラインを露出することを望んでいました。テキストは非常に流動的で、読むのが楽しいです。
そして、いいえ、このサイトが本の著者からのものであるという理由だけで、私は広告を出していません。この本は本当に素晴らしいので、IT担当者を雇う立場にある人、特にテクノロジーを理解していない人に勧めます。今日では、技術者ではないプロジェクトマネージャーや上司がいることは非常に一般的です。
あなたがすでに解決した問題の束を取ってください。問題を解決するために何が行われたかを彼に説明します(3人称にしてください。自分のエゴを危険にさらしたくない場合)。彼が「違うように」何をしたかを彼に尋ねます。あなたは、彼が示唆していることに基づいて、それが概念的に、あなたがしたことよりも良いか悪いかを理解できるはずです。