エンジニア採用のための準備として、
朝一チョコザップに通いながら(笑)YouTubeで情報収集した内容を、ブログでアウトプットしていきたいと思う。
▼エンジニアの採用について
おそらく面接における確認事項は「再現性」と「継続性」。
これはエンジニア採用であっても変わらない。
エンジニア採用市場
エンジニア採用における最近の動向としては、
コロナ禍でエンジニア採用市場が大きく伸び、
エンジニアというだけでスキル以上の給与テーブルについた人も多かった2020-2021年。
エンジニアバブルが終わりを告げた2022年。
海外ではレイオフなども横行し、現職残留が増え流動性が減った2023年。
2024年はどうかと言うと、
これまでの頭数をそろえるだけの採用で引き続き整理解雇などはありつつも、
言語コミッターやフレームワークコミッターは難しい傾向が強いが、
事業貢献を見たり、利他性だったり、リーダーシップ・マネジメント・教育経験ありの人材が求められ、
何よりPMF(プロダクト マーケット フィット)をしていこうとする企業(スタートアップ含め)が増えたため、
事業コミット出来る人材が求められる傾向が強くなっている。
▼面接の想定質問集
一般的な質問
エンジニア採用であっても、事業コミット度合いをはかるために「再現性」と「継続性」という確認事項の観点は変わらない。
出来る限り数字で表現するという点も、
事実ベースで建設的に表現するという点も変わらない。
・仕事での実績
・PV・UU・SS
・プログラミング実績(数字・組織での働きぶり・ポジション)
・チーム規模
・後輩の数
・教育経験
・チームの中で頑張ったエピソード
など
自己紹介から始まり、質問例はこんな感じだと思う。
(YouTubeで拾っただけの質問例なので、企業フィットするかは別。)
【質問例】
・今までどんな仕事をしてきましたか?
・今まで1番大変だった仕事は何ですか?
・なぜ前職を辞めましたか?
・マネジメント経験はありますか?
・どのようなマネジメント経験をしてきましたか?
(チームのマネジメントなのかプロジェクトを推進するマネジメントなのか)
(規模感にかかわらずチームをどう牽引したのか)
・なぜ弊社を志望したのですか?
・プログラミング学習で一番辛かったことは?
→一貫性や問題解決力を見るため、どこが大変だったかを事実ベースで、克服した結果身についたスキルが何だったのかの回答があればOK
・ポートフォリオについて説明してください
→サービスの内容の大枠が説明できればOK、PV・UUなどで表現されていたら尚OK
・将来どういうエンジニアになりたいですか?
→チームを牽引したいのか、サービス作りを極めたいのか、将来のビジョンが語れたらOK
・どのような軸で就活をしていますか?他社の選考状況を教えてください
・最近何の学習をしていますか?
一般的な質問は、どの職種であってもベースは一緒なので、
エンジニア採用だからといってそこまで技術的な話は不要。
技術的な質問
基本的にエンジニアを巻き込んだ面接をした方がミスマッチは避けられるが、
ある程度知識があった方が良いという観点でシミュレーション。
シミュレーションした結果、知らないといけないことが多くて
【質問①】
・なぜこの技術を選びましたか?
・なぜVue.jsを使いましたか?
【回答例】
※NG例※
・簡単だから
・周りで流行っているから
【確認したい内容】
それを使う理由がしっかり自分の中にあるかどうか
→まず、VuetifyとVue.jsを自分は知らない。
知らないと、まず整合性が図れない。
同席したエンジニアとも話が合わない。
だからちゃんと勉強しよう。。
Vuetifyとは、WebアプリケーションのUIを設計できるCSSフレームワークの一種
Vuetifyは、JavaScriptフレームワークであるVue.jsに対応
おそらく、CSSとJavaScriptについてももう少し知る必要がある。
他にも、基本的な言語も。
HTML:ウェブページの作成に使われる基本的な言語。文書の構造を指定。マークアップ言語。
CSS:色やサイズなど装飾を指定。HTMLとセットで使用。スタイルシート言語。
JavaScript:動的に更新されるコンテンツを作成、マルチメディアを制御、画像をアニメーションさせるなど。その他ほとんどすべてを可能にする。重い処理は苦手。スクリプト言語。
C:ハードウェアの制御からシステムの開発といった、IT分野で行われていることの大半が可能。ハードウェアに密着した処理がしやすいのが特徴である一方、汎用性が高く、組み込みソフトやスマホのアプリケーション、ゲーム開発といったソフトウェア開発の分野でも利用可能。プログラミングの実行速度が速い。フレームワークが豊富。ライブラリも多い。プログラミング言語。
PHP:動的なWebページを生成するための言語。動的なページの作成が得意。コンパイル(人間が読める状態のソースコードを解析し、コンピュータが実行可能な形式に変換すること)が不要でスピーディーに処理できる。データベースと連携させやすい。WordPressを使った開発で重宝する。
Ruby:オブジェクト指向スクリプト言語。ショッピングサイト、ブログサイト、アプリケーションサイトなど、フレームワークを使い構築できるWebサイトなどが得意。自己流の記述をしても問題ない反面、一度開発したシステムを引き継ぐ場合、読解に要することにもあり、余分な工数の発生につながる可能性がある。
Java:オブジェクト指向型の代表的なプログラミング言語。複数人で同時に開発する際なども作業効率が良く、ソースコードの再利用や機能追加、修正なども簡単。バグが起こっても修正されやすく安定。大規模システムの開発を得意。処理速度が速い。セキュリティが高い。ライブラリが豊富。
Python:少ないコードで簡潔に書けるため比較的読みやすくなり、読み間違えや書き間違えが起こりづらい。ライブラリが多い。AI分野の外部ライブラリも充実。実行の速度が遅い。インデントがずれるとエラーになってしまう。統計学、解析、分析などで、人工知能・機械学習といった分野が得意。
表面的には分かったけど、たぶん理解には至っていないのでもう少し勉強が必要そう。。
【質問②】
ER図の設計を簡単に説明してください
【確認したい内容】
アプリ上のどの部分で使われているのか交えて話すことが出来るか
→そもそもER図って何? という感じだったけど、
ER図でググると、あーこれか!と(見たことがあるレベル)。
おそらくもう少し深掘りした知識を持っておいた方が良くて、調べると、
まずはじめにシステムに登場する「モノ」を洗い出し、エンティティとして定義。
エンティティの洗い出し後は、エンティティ間の関係を考え、
関係あるエンティティ間にリレーションシップ(関連線)を引いていく。
これがざっくりと概念らしい。
ちょっと今日はここまで(思考停止)
まだまだ勉強が必要なので、引き続きインプット&アウトプットを繰り返していこうと思います。