C#の派遣プログラマーの方が,仕事をとっていくために,面接でどのようなことを質問すればよいか?というのを,元派遣プログラマーで,現在はメーカーのプロジェクトリーダーをしている立場から解説していきます。
現在どこかのソフト屋さんに勤めていて,仕事をもらうために面接に行く必要のある人や,これから派遣プログラマーになる方にとって参考になればと思います。
派遣プログラマーの面接のときに何を質問すればいいのか?
派遣プログラマーには面接がつきものです。どこの仕事に行くにも,最初は面接があります。歳を重ねると,毎回面接されるのが嫌になっていきますが,仕方ありません。
面接に落ちると自分の力量が不足していたのかと思い,少し落ち込んでしまうこともあります。
このプログラマー業界というのは過酷なもので,新人であればあるほど面接でのOKが出にくいです。当然ですが,企業の面接は,基本的に経歴を見ます。その人物が,C#のキャリアが何年あって,どのようなシステムを開発してきて,どのようなポジションで仕事をしてきたのかを見られます。
新人は経歴がないので面接でのアピールポイントは全くないことになります。
かといって全然戦えないか?というとそうでもありません。新人ならではの良さもあります。誰だって最初は新人ですし,何とかみんなこの問題をクリアーして,10年選手も今の仕事があるわけです。
経歴書で戦えないのなら人として戦おう
経歴書は今言った通り,新人は1行か2行ある程度でしょう。それも先輩プログラマーの補佐みたいな仕事しかしたことがないのであれば,企業の人間は誰も欲しがりません。だいたい他社の新人をどうして自分の会社で教育しないといけないのでしょうか?高いお金で雇うのですから,一人前の人間しか雇いたくないというのが本音です。
それでも新人は低単価で雇うことができるので,新人でもできそうな仕事がある場合は,その人間の人柄を見て,OKとなることがあります。
経歴のない新人の中で,自分を選んでもらうためにやれることは限られていますが,面接の中で戦うとすれば,それは「質問する」ということにつきます。
面接は企業の人間が次々と質問してきて,あなたはそれに答えないといけませんが,必ず,あなたに何か質問はありませんか?と聞かれるタイミングがあるはずです。その時に「特にありません」などと言ってはいけません。必ず質問しましょう。そしてその質問は事前に考えておきましょう。
面接は普通は緊張するし,その場で質問が思いつくならそれも質問すればいいですし,思いつかなかったら,質問なしとなり,アピールする機会を逃してしまいます。「質問なし」はよほど優秀か,質問できるレベルにないかのどちらかです。多くの場合は「質問する能力がない」と判断されます。
質問とは,ある程度の知識がないとできないものなのです。例えば食品工場を見学して,「何か質問はありますか?」と聞かれて,何も知識がないと,質問は浮かびません。しかし,衛生管理や,経営戦略の知識がある人であれば,その知識をもとに,この工場では○○の衛生管理はどのようにしていますか?などと質問ができます。質問しなくても大体わかっていたとしても,この質問をすることで,この人は○○を知っている,なかなか勉強している人間だ...ということが相手に伝わります。
そうなのです。質問とは聞いたことに答えてもらうためにするのではなく,「こういう知識が私にはありますよ」ということを相手に伝えるためにするのです。
だから「質問なし」なんて面接ではありえないのです。
質問例
そのような理由から,あなたに知識があり,この職場で能力が生かせるということをアピールするために質問をしましょう。いくつか質問例を考えてみました。
バージョンを聞く
面接の中で,この話題が出ていなければバージョンを聞きましょう。VisualStudioのバージョンは何ですか?と聞いてみましょう。面接官が管理職の人でそういった技術的なことはわからない可能性があります。そういう場合は面接官は「バージョンはよくわからないなー,どうしてそんなこと聞くの?」と言ってくるかもしれません。その場合は「別にバージョンはどのバージョンでもいいのですが,.NETFrameworkのバージョンで非同期処理など書き方が変わるので,古いバージョンなどであれば,事前に書き方を思い出しておこうと思いまして...」などという感じで,現場のバージョンを事前に知っておくことで,仕事が開始される数日間,自社で勉強してからうかがうつもりです...という事を伝えましょう。
新人で経歴がなくても勉強熱心でひたむきで,謙虚さが伝われば,少々経験がなくても,少し指導すれば使い物になると思ってもらえる可能性が高くなります。
サードパーティーのツールは何を使っていますか?
これも先のバージョンの質問と同じ理由です。グレープシティーのインプットマンや,アクティブレポートやフレックスグリッドなどがありますが,どういうツールを使っているかを聞きましょう。質問する理由も,それを事前に聞いて,自社で予習をしてきます!というニュアンスで言いましょう。こんな勉強熱心な人は,すぐにでも一緒に働きたいと思ってもらえるはずです。
ユーザーインタフェースは何を使っているか?
ユーザーインタフェースは何を使っているのかを聞きましょう。これは面接中に話が出るかもしれません。すでにこの話が出たのなら控えましょう。WinFormかWPFでしょうが,UWPやXamarinの可能性もあります。WPFを使うといわれたら,MVVMのフレームワークは何を使っているかを聞きましょう。使ったことのないフレームワークを言われたら,使ったことはありませんが,MVVMは他のフレームワークで勉強しているので数日自社で勉強すれば問題ないと思います的なニュアンスを伝えましょう。この時点でMVVMが理解できていないのであれば,面接に行く前に勉強しておきましょう。
テストコードはMSテストで書かれていますか?
テストコードをどのように書いているかを聞きましょう。「テストコードを書いていますか?」という質問はあまりよくないです。テストコードを書いていない現場かもしれないので,それを「今時テストコードを書くのは常識でしょ?」というニュアンスで聞いては失礼にあたります。なので,MSTestを使っているのかNUnitを使っているのかを確認するつもりで聞きましょう。なので,テストコードは何を使われていますか?くらいの聞き方がいいと思います。そうすると,テストコードを書いていれば,「MSTestを使ってますとか」,「ChainingAssertionを使ってます」とか,「NUnitを使ってます」とか回答してくれると思います。あなたがMSTestユーザーで,NUnitと言われたらそれもすかさず,私はいつもMSTestを使っているので,次回までにNUnitの使い方を勉強しときます…的な受け答えをしましょう。そうすると,わざわざ勉強しなくても,現場に来てから指導するからいいよーという感じになるでしょう。
ここでのポイントはあなたにはテストコードを書くという知識があり,いつもテスト駆動開発でプログラミングをしている,時代について行ってるイケてるプログラマーなのだというアピールをすることです。実際にMSTestかNUnitかを知りたいわけではありません。当然テストコードに関する知識がないのであれば面接に行く前に勉強しておいてください。
最後は人を見られている
質問は以上のような感じで,とにかく,テストコードの知識や,ユーザーインタフェースの知識が十分あることを伝えれるような質問をしましょう。あなたが知りたいことを質問するのではなく,あなたが知ってもらいたいことを,質問を通してアピールしましょう。もちろん,聞きたいことがあれば,それもちゃんと聞きましょうね。
このような質問をするためには,普段からある程度勉強していないと,自信を持った受け答えはできないと思います。基礎文法と,オブジェクト指向とテスト駆動開発くらいはマスターしておきましょう。基礎文法はIf文やfor文などの基礎的なものから,async awaitを使った非同期プログラミングまで一通りできるようにしましょう。非同期プログラミングは現代のプログラミングの必須技術です。
いざ現場に行ったら
晴れて面接をクリアーして,現場に出社したら,素直にガンガン働きましょう。わからないことはガンガン質問しましょう。わからないのに時間をかけて一人で悩んでいると,時間を無駄にしているという印象を与えます。質問をされて嫌な気持ちになる人はいないので,ガンガン聞いていきましょう。
慣れてきたら,より良いコードを職場に提案しましょう。現場のコードは洗練されていない可能性があります。それでも現場の作法でプログラミングをしないといけないのですが,あなたがより良いコーディングができるなら,躊躇せず提案しましょう。メーカー職員は外部の人間の優秀な意見は勉強になるので素直に聞いてくれます。オブジェクト指向,テスト駆動開発,ドメイン駆動開発,デザインパターン,リファクタリングを学んで,一目置かれる人物になりましょう。テストコードを書いてなかったり,カバレッジをとってなかったりしたら,あなたがやり方を勉強して職場に広めるパイオニアになりましょう。
いろいろ言ってきましたが,新人は素直さと向上心をアピールして頑張りましょう。アピールは質問という形式で相手に伝えていきましょう。そして自信をもって話をするために,自分の技術を磨きましょう。技術を磨くには「人に聞く」「本を読む」「動画を見る」しかありません。特に「本を読む」「動画を見る」は自分次第でいくらでもできるので,ガンガンやっていきましょう。やればやるほどライバルと差は開きます。そしてやればやるほど仕事が楽になります。
#01_はじめに
#02_VisualStudio2022のインストール
#03_SQLServerのインストール
#04_データベースとテーブルの作成
#05_プロジェクトの作成
#06_接続先文字列の作成
#07_データテーブルでのデータの取得
#08_Sqlアクセスクラスの作成
#09_SqlDataReaderでのデータ取得
#10_SqlDataReaderの結果をカスタムクラスに入れる方法
#11_SqlCommandでInsert文を発行する方法
#12_SqlCommandでUpdate文を発行する方法
#13_Update対象がなかったらInsertする方法
#14_SqlCommandでDelete文を発行する方法
#15_Dapperでデータを取得する方法
#16_DapperでInsert文を発行する方法
#17_EntityFrameworkをインストールしてDbContextを作成する方法
#18_EntityFrameworkでデータを取得する方法
#19_EntityFrameworkでInsert文を発行する方法
#20_EntityFrameworkでUpdate文を発行する方法
#21_EntityFrameworkでDelete文を発行する方法
#22_Helperクラスを作ってSqlCommand操作を共通化する方法
#23_パフォーマンスチェックの方法
#24_4つのデータのとり方のパフォーマンスチェック
#25_4つの結果を踏まえて講評
#26_さいごに
下記URLは、ベネッセが提供する教育用プラットフォームにて
私が公開しているプログラミング学習コースです。
無料コースもあるので、よかったらご覧になってみてください。
【無料動画】「C#を勉強する順番」