技術面接では、プログラマーが高収入の仕事を得るために多くのスキルを示す必要がありますが、幸いなことに、ほとんどのスキルは時間をかけて練習し、磨くことができます。
「必要なスキルは、職種、業界、そして面接を受ける企業によって大きく異なります」と、Setfive Consultingのマネージングパートナーであるアシシュ・ダッタ氏は述べています。「最低限、データ構造と一般的なアルゴリズムについて実用的な理解があることを推奨します。それに加えて、少なくとも1つの主要なプログラミング言語に可能な限り精通していることを推奨します。」
技術面接をクリアするには、プログラマーは次の 8 つのスキルを発揮する必要があります。
1. ソフトスキル
技術スキルに関しては、要件を満たしているか満たしていないかのどちらかであり、満たしているとしても、それはあなただけではありません、とStraight Path Solutionsの創設者マイク・ウォルシュ氏は言います。その場合、「ソフトスキルを最大限に発揮しましょう」とウォルシュ氏は言います。「資格よりも、こうした小さなことが、同等の資格を持つ候補者の中で、はるかに大きな差別化要因となることがあります。例えば、『わかりません』と言えないプライドを持っている場合、対立にどう対処するかといったことです。ソフトスキルを失わないでください。」
アジャイル開発手法が普及するにつれ、プログラマーは多様なスキルを持つ開発チームに溶け込める能力を示す必要があると、セネカグローバルのCEO兼社長であるエド・ゾファー氏は述べています。「こうしたチームで生産性の高いメンバーになるには、プログラマーは明確なコミュニケーション能力、正確な進捗報告、迅速な問題提起、そして優れたチームプレーヤーであることが不可欠です」とゾファー氏は言います。「今日の熾烈な競争環境において、プログラマーのソフトスキルはハードスキルとほぼ同等に重要になっています。」
2. 問題解決能力
ICSynergyの事業開発担当副社長マーク・ウィルコックス氏は、問題解決能力を発揮する能力は、他の分野での技術的専門知識を証明することよりも重要であることが多いと述べた。
「私が注目するのは、プログラマーが問題解決についてどのように考えているかです。そして、スキル向上のためにどのような行動をとっているかを見ます」とウィルコックス氏は述べた。「特定の言語の専門家かどうかはそれほど重要ではありません。優秀なプログラマーなら、新しい言語を1週間で習得できるからです。しかし、問題解決能力が優れておらず、常に向上しようと努力していなければ、最終的にはプロジェクトに悪影響を与えることになります。」
特にジュニア開発者のポジションでは、「自分が何を知っていると思っているかは、採用担当者にはあまり関係ありません」と、SWYM SystemsのCEO兼主席コンサルタントであるトッド・ミレカム氏は言います。「どれだけ早く学習できるか、そしてどれだけ学ぶ意欲があるかに焦点を当ててください。」
技術的な質問は職種によって異なるが、すべてのプログラマーは自分の考えやアイデア、経験を面接官に伝える方法を知っておく必要があると、コンサルティング会社Appticの創設者であるニール・ソマニ氏は述べた。
「最適な解決策を見つけるだけでなく、問題を話し合いで解決できることは非常に貴重です」とソマニ氏は述べた。「解決策そのものよりも、思考プロセスの方がはるかに重要です。」
3. ビジネスセンス
PITSSのデジタルマーケティングマネージャー、アナ・ドーハティ氏は、開発者が最も力を発揮できるのは、ある程度のビジネスセンス、つまりコードの直接的な用途を超えて物事を見る能力を持っている時だと述べている。「開発者は、自分のソフトウェアやアプリケーションが企業のより広い範囲にどのように適合しているか、プロジェクトがどのようにROIを向上させているか、そして組織全体の健全性にどのように貢献しているかを把握できなければなりません」とドーハティ氏は語る。「このスキルがあれば、開発者はより懸命に、より賢く働き、より良い成果を出すために彼らを必要とする経営陣の言葉で話せるようになるでしょう。」
企業は通常、優れたコードを書くプログラマーだけを求めているわけではないと、Globalscapeのエンジニアリング担当副社長、グレッグ・ホッファー氏は語る。「企業は事業を運営しており、常に複数の方法で成功できることを理解しているプログラマーが必要なのです」とホッファー氏は語る。「ビジネス価値を高め、顧客を満足させる実践的な問題解決能力は、特定のプログラミング技術に関する幅広く深い経験と同じくらい重要です。」
4. 前職では何をしていましたか
Clearbridge Mobile のアプリケーション アーキテクトである Marco Cirillo 氏は、次のような前職に関する質問に答える準備をしておくべきだと述べています。
- 前職での役割と責任は何でしたか?
- 前職で経験した困難にはどんなものがありましたか?
- あなたが作ったものの中で、特に誇りに思っているものについて説明してください。
「これらは主に、応募者がこれまで何に取り組んできたかを確認し、個人の文化的適合性を評価するためのものです」とシリロ氏は述べた。
参照: IT プロフェッショナルと開発者が技術スキルを最新に保つ 10 の方法
5. コアプログラミング言語の熟練度
Open Listingsの共同創業者であるピーター・スギハラ氏は、会社で使用されている主要言語とフレームワークに精通していることを確認しておくべきだと述べています。「小規模な企業では新入社員を教育するリソースが少ないため、これは非常に有利に働く可能性があります。なぜなら、入社時にすぐに慣れることができるからです」とスギハラ氏は言います。
6. アルゴリズムとデータ構造の理解
データ構造はプログラミングの核となる概念なので、すべてのプログラマーが基本的なデータ構造を知っておくことは必須だと Cirillo 氏は言います。
大企業はアルゴリズムに関する質問を多くする傾向があり、中小企業はプログラミングに重点を置く傾向があると杉原氏は述べた。ゲイル・ラークマン・マクドウェル著『Cracking the Coding Interview』はアルゴリズムに関する質問の参考になると彼は付け加えた。
プログラミング言語のスキルに加え、「これら2つのスキルを組み合わせることで、あらゆる組織で迅速に成功するために必要な基礎を、広範かつ繊細に理解していることを証明できます」と、HackerRankの共同創設者兼CEOであるVivek Ravisankar氏は述べています。「これらはまた、優れたソフトウェア開発者の重要な特性である計算論的思考の優れた指標でもあります。」
7. 知識の広さ
より上級の役職に就くには、複数の分野に関する深い知識を示すことが重要だとミレカム氏は言います。「複数のフレームワークとその利点、そして必要に応じてそれらをどのように活用するかについて話しましょう」とミレカム氏は言います。「単一のテクノロジースタックだけを熱心に宣伝してはいけません。」
8. 即座に考える
Diceの社長兼CEOであるマイケル・ダーニー氏は、即興で考えることが求められることを覚悟しておくべきだと述べています。「パブリッククラウドとプライベートクラウドの両方のサービスを用いて、新しいアプリケーションを会社全体にどのように展開しますか?」といった質問を受けた場合、ダーニー氏は「面接官は、あなたが会社についてどのような調査を行ったか、会社の課題をどれだけ理解しているか、そして、そのような質問に答える上で重要な範囲、境界、そして前提を明確にするための適切な質問をする能力を理解しようとしていることを認識してください」とアドバイスしました。
ResumeGoの共同創設者であるピーター・ヤン氏によると、面接官はプログラミングの候補者に数学パズルや頭の体操をいくつか出題し、珍しい問題をその場でどれだけ素早く考えることができるかを判断することもあるという。面接前にいくつか例題を練習して、質問のスタイルに慣れておくことを勧めている。