チームに参加するためにソフトウェア開発インターンに面接するときに持ち込むことのできる良いアイデア、一般的なアプローチ、および適切な質問は何ですか?
私は本当にこの人にどんな種類の期待もしていません、私は彼がテーブルに持っていくためにあまり持っていない前の仕事の経験がないインターンとして理解します。私は多かれ少なかれ、良い態度と誰かが喜んで学ぶことを探しています。
このインターン70/30(QAテスト/コーディング)を使用する場合、何が適切ですか?それはあなたの意見では良いインターンシップの経験でしょうか?
それらが完全に役に立たないことを期待しないでください(それらはすべきではありませんです)。
それらが適切にコーディングできることを期待します(選択した言語で配列ベースの選択のコレクションを使用する方法について尋ねる(つまり、c#のリスト、JavaのVector/ArrayListなど)が良いスタートです)。ただし、バージョン管理、ビジネス要件ドキュメント、QAなどの経験はほとんどないものと想定します。
私は夏のインターンとして最初の会社に参加し、かなり複雑に聞こえるタスク(特定のデータインポート用のcsv解析モジュールの実装)を与えられました。彼らはこの仕事が私の6か月のインターンシップの終わりまで私を連れて行くことを期待していた、そして私は1週間で幸福にそれを終えた。
ほとんどの人は大学では何も役に立たないと思っていると思いますが、インターンシップに応募する人は、プログラミングに長けていて、物事を成し遂げる本当の意欲を持つ人である可能性が高いでしょう。
だから、コーディングについて彼らに尋ねてください。彼らが誇りに思う前に彼らがコーディングしたものについて彼らに尋ねてください。インターンシップから抜け出したいことを(スキルに関して)質問します。
うまくいけば、経験の浅い場合でも、あなたとインターンの両方にとって有益である建設的な目的に使用できる質の高い労働者になるでしょう!
インターンについて調べようとすることはいくつかありますが、それは主に適性と関心に帰着します。あなたは彼らが学校で、または自分で行った技術的なことについて質問し、彼らが実際の潜在能力を持っているかどうか、そしてなぜ彼らがCSを追求しているのかを判断したいと思います。当時、2番目のビットはずっと簡単でした。彼らが本当にそれに夢中にならなかったならば、多くの人々は4年間パンチカードをいじった。今日、あなたは「インターネットが好き」で、そのためにCSに行くことにした多くの子供たちを迎えます。神が私たちを救う。
それで、「あなたがした中で最もクールなことは何ですか?」そして「プログラマーになることで何がワクワクしますか?」
次に、夏に向けて自動化タスク、手動テスト、およびいくつかの小さなユーティリティのコーディングを実行させます。
私は強く要請します...
「クラスまたはサイドプロジェクトのいずれかのために作成したコードをいくつか持ち込み、それについて説明してください。」
彼らがコードを持っていないのなら、彼らはおそらく(まだ)プログラマーのポジションをインターンするべきではありません。
彼らが取り組んでいる問題/プロジェクトを提示してもらいます。インターンは簡単にできるが、彼らが行った設計上の決定、直面したトレードオフについて尋ねる。彼らにとって簡単/難しいことは何でしたか。また、プロジェクトの範囲を拡大し、変更をどのように組み込むかを尋ねます。
良い、思慮深い答えを持つ人を探します。 「セマフォやミューテックスのことを聞いたことがありますか」という質問は、ある部分で行き詰まった場合は公正であり、そうでない場合も問題ありません。
この面接は、行きたい深さに応じて、1〜4時間程度です。インターンの場合は、電話画面を少し離れて面接を90分に保つと思います(チームを2時間中断します)。
私は通常、面接時にインターンに学校のプロジェクトについて尋ねます。私は彼らが彼らが取り組んでいること、もしあればデザインの選択、彼らが経験から学んだことなどを説明する機会を彼らに与えます。これが、今後数か月間私が一緒に仕事をし、メンタリングしているのを見ることができる誰かであるかどうかについて。
彼らをインターンのように扱いません。彼らはチームの一部であるかのように扱います。彼らが所有できるようにするために彼らに何かを与える、それは簡単ではありません。それは彼らが何かを学ぶのに十分進歩しているべきですが、彼らがそれをばかげたとしても、彼らが去ったときにあなたが悪い状況に置かれることはないでしょう。
彼らにチャンプタスクを与えることは彼らを助けません、そしてあなたの会社も助けません。彼らが自分の仕事に不満を持っている場合、彼らは幸せではなく、自分の仕事が重要ではないかのように感じるので、それは彼らのパフォーマンスに現れます。
彼らにフォローアップして、彼らが頭に隠れていないことを確認し、コードレビューを行って、コードベースに何が挿入されているかを確認し、コードを改善する方法について提案を与えることができるようにします。