見出し画像

【人事のキホン】エンジニア採用の全体感が見えてくる覚えておくべきエンジニア用語集

こんにちは、ポテンシャライトの下地です!

8/1からスタートした「Potentialight 2022 真夏のブログリレー」今回は、20本目の発信となります!当社が先月に移転をして、会社として勢いがあるタイミングだからこそ、「新しいチャレンジしてみよう!」ということで暑い夏の期間に多くのメンバーが参加するブログリレーを実施することにいたしました。

本ブログでは「エンジニア採用の全体感が見えてくる覚えておくべきエンジニア用語集」について深くお話しできればと思いますので、ぜひ最後までご覧いただけますと幸いです!


さっそくですが、
「自社のエンジニア求人に書かれている単語がほぼわからない..」
というお悩みを持っている、もしくはそう思ったことがある人事の方は多くいらっしゃるのではないでしょうか?

私もHRパートナーとして何社様かの採用活動に携わらせていただき、入社当初は支援先企業様のエンジニア求人票を拝見して「むむむ (わからない単語が日々出てくる…)」という状態でした。

そこで、わからないなりに「求人票の〇〇(エンジニア採用における単語)は何を指していて、なぜ必須要件に記載をしているのでしょうか?」と支援先企業様に伺っておりましたが、お返事のほとんどは「社内のエンジニアに確認してみます!」と仰っておりました。

当社ポテンシャライトは入社前に「IT業界研修」「エンジニア職種研修」が実施されます。また入社後にも日々エンジニア採用に関しての学びの場が非常に多いため、常にエンジニア採用における単語とは触れる機会が多くあります。そのため、自分を棚に上げると、僕も 入社直後より知識が身についてきた実感はあります。

ただ、事業会社の人事の方でエンジニア採用にそこまで携わっていらっしゃらなかった方は、エンジニア採用における単語が「宇宙語」のように聞こえてしまっているかもしれません。宇宙語と表現をしたのは「Webで調べてもよくわからない」ためです。英語は和訳したら理解できるかと思うのですが、初めてお目にかかるエンジニア採用における単語はWebで調べてもピンとこないことがほとんどです。

また、事業会社の人事の方が現場エンジニアの方に、基本的な質問をしたが故に、「え?いままでそんなことも知らなかったの?」とエンジニアの方に思われる恥ずかしさ・怖さがあって解消しにくかったりするのではないかと思います。加えて、エンジニア知識がなくても採用はそれなりにうまく回っているので、エンジニアリング知識のインプットを後回しにし続けている方も多いのではないかと。

そこで今回は「エンジニア採用の全体感が見えてくる覚えておくべきエンジニア用語集」をまとめてみました!
上述の悩みを抱えている方の不安を解消できるように、知識の頻出率/理解優先度に合わせた覚えるべき単語のレベル分けや単語の意味だけではなく「そもそもなぜそれが必要なのか?」などにも言及してまとめ上げておりますので、ご一読いただけますと幸いです。

※あくまで本noteではポテンシャライトが日々採用のご支援をさせていただく中で感じた内容を元に書いておりますので、一視点として参考程度にご覧いただけますと幸いです。

では、始めます!

 覚えておくべき知識Level.1

まずは、エンジニア採用に携わる際に最低限インプットすべき知識を紹介します。最低限として覚えておくべきこと、それはエンジニアの職種・開発言語です。

 

 - エンジニア職種

基本的なフロント/バック/インフラ エンジニア以外にも下記ポジションを覚えておくことはMUSTです。(※フロント/バック/インフラエンジニアについて理解を深めたい方は当社の過去ブログをご参照くださいませ。)

▼フルスタックエンジニア

企業のシステム開発や運用における複数のスキルを持つITエンジニアのことを指します。フロントエンド/バックエンド/インフラの全ての作業に対処できるオールラウンダーだと認識しておけば問題ないでしょう。1人で開発が完結するからこそ得られるスピード・人件費削減につながる面で企業に喜ばれるポジションです。

▼SRE

簡単に申し上げるとエンジニアリングにおける掃除屋さんです。近年、スピード感ある開発を実現できるアジャイル開発に注目が集まっておりますが、開発スピードをあげた結果、成果物であるサービスが利用者にとって使いづらいもの、あるいは価値の低いものになってしまうケースも珍しくありません。そこで求められるのがSREの存在です。他エンジニアがスピードに拘って開発する中、SREは安全性・安定性を重視する開発をします。こうすることでアジャイル開発でも最終的なクオリティ担保につながります。

▼テックリード(=リードエンジニア)

一般的にはエンジニアチームのリーダーポジションを指すことが多いです。PJの進捗管理などを専門とするリーダーというよりは、技術でチームを引っ張っていくプレイングメインのポジションになります。そのため高い開発力が求められるポジションです。

▼スクラムマスター

プロジェクト全体が円滑に進むように取り計らい、チームのメンバーが能力を十分に発揮できるようにサポートするポジションです。PjMと似た役割になりますが、進捗を進めるためのアプローチ方法が大きく異なり、PjMはタスクの割り当てやタイムラインの調整のみで直接チームの仕事に関与しない特徴がある一方、スクラムマスターはチームのメンバーに対して実務面も含めたコーチングなどを行い、サポートする特徴があります。

▼エンジニアリングマネージャー

エンジニア組織のマネジメントをするポジションです。近年、エンジニアにおけるエンゲージメント・心理的安全性などにも注目が集まっている背景から同じく注目が集まっているポジションです。主に、メンバーマネジメントにおける1on1の実施や、エンジニアリング組織の人事制度構築など、業務内容は多岐に渡ります。若干、スクラムマスターと混同しますが、スクラムマスターはプロジェクトをより円滑に進めるためのメンバーマネジメント、エンジニアリングマネージャーはエンジニア個人の心理的安全性・キャリアなどに対するマネジメントを行う役割の違いがあります。

▼プロジェクトマネージャー(PjM)

プロジェクト全体の進行を管理し、責任を持って成功へと導く役割です。あくまでプロジェクトの管理のみを専門とする人が多く、以前は開発を行なっており現在はプロジェクト管理のみ行なっている方や、開発経験はほとんどなくプロジェクト管理を担当している方などがいます。

▼プロダクトマネージャー(PdM)

プロダクト全体の進行を管理し、責任を持って成功へと導く役割です。こちらもPjM同様にあくまでプロダクト管理のみを専門とする人が多く、開発経験が全くない営業/デザイン/マーケ上がりの方が担当しているパターンが多々あります。

▼CTO

企業の最高技術責任者です。技術的な戦略や方針、プロダクトのロードマップ策定などを担当するポジションです。

▼VPoE

CTOと混同されるパターンがありますが、VPoEはエンジニア「組織」の責任者です。エンジニア組織そのものの形成と運営、文化の醸成や組織ロードマップ策定、エンジニアの採用から育成・配置・評価に至るまで、これもまたかなり広範囲の役割を担います。こちらもエンジニアにおけるエンゲージメント・心理的安全性などに注目が集まっている背景から同じく注目が集まっているポジションです。

 - 開発言語/フレームワーク

開発言語/フレームワークに関しては、どれがどの開発工程(フロントエンド/バックエンド 開発)で使用されるかを覚える必要があります。また、インフラ開発においては代表的なクラウドサーバサービス名を覚えておくとよいでしょう。

▼フロントエンド

開発言語:HTML、CSS、JavaScript、TypeScript
フレームワーク:React、Vue.js、jQuery、Next.js、Nuxt.js

▼バックエンド

開発言語:PHP、Go、Python、Ruby、C#、Java
フレームワーク:Ruby on Rails、Laravel、Django、Flask、Node.js

▼インフラとして活用されるクラウドサーバサービス

クラウドサーバー:AWS、Microsoft Azure、GCP

MUSTで覚えるべきことは以上です。一部、専門的なエンジニアリングワードを用いて説明してしまった部分があるため、それらの単語の説明等は以降の章にて補完させていただきます。

覚えておくべき知識Level.2

この章では、「エンジニア求人票において頻出度/理解優先度が高いエンジニアリング用語」をご紹介いたします。下記が分かれば正しいエンジニアスカウトピックができるようになるでしょう。

▼紹介単語一覧

- 技術スタック
- フレームワーク
- アジャイル開発
- パフォーマンスチューニング
- アーキテクチャ
- リファクタリング
- 技術的負債
- API
- レイヤー

▼技術スタック

アプリケーションを構築および実行するのに使用される一連の言語・サービスを指します。求職者に自分の開発経験と親和性があると感じてもらう・自分が使用したい開発言語があることをアピールするなどの目的でEntrance Bookや求人票に技術スタックを掲載している企業は多くあります。

▼フレームワーク

アプリケーション開発においてよく利用される機能をあらかじめ備えた枠組みのことです。使用するメリットとして開発にかかる労力の削減と品質向上の両方が期待できますが、使用法の決まりがあり、自由にコードが書けずに開発に制限が生じるデメリットもあります。また、一般的なアプリケーション開発に活用されるアプリケーションフレームワークや、Webシステムの開発に活用されるWebアプリケーションフレームワークなどの種類が存在します。

▼アジャイル開発

システム開発にかかる工程を細かく分けて、短いサイクルで進行していくシステム開発手法の1つです。アジャイル開発が普及するまでは、システム開発にかかる工程を全て決めてから長期間かけて開発を実行するウォーターフォール開発が主流だったのですが、近年の市場変化の速さからウォーターフォール開発では、市場変化に乗り遅れてしまう懸念があがったため、アジャイル開発が主流になりつつあります。

▼パフォーマンスチューニング

システムの処理性能や信頼性を高めるために、システムの動作環境を最適化することです。エンジニアの基礎的なスキルに分類されますが、システムの性能を最大限に生かし、安定稼働させられるようになるため、この経験を持つエンジニアは歓迎されます。

▼アーキテクチャ

プログラムの構造を指す言葉です。プログラミングの過程において、開発するソフトウェアの用途や目的に応じて、プログラムを構成する要素(言語・フレームワーク・インフラ等)をどのように組み合わせるかはかなり重要なため、アーキテクチャ設計はテックリードなどの技術に詳しい人が担当することが多いです。

▼リファクタリング

ソフトウェアがWeb上などで動き続けてる状態を保ちつつ、エンジニアがコーディングする際に理解や修正が簡単になるように、内部構造を改善することを指します。これを実行することで、ソフトウェアの動作が軽くなったり、サービスダウンにつながるバグの発見などの効果があるので、サービスの安全性・安定性につながる結果をもたらします。

▼技術的負債

「このコードだと後でデメリット発生するかもしれないが、一旦はサービスをお客さんに届けるために解決は後回しでいっか!」という開発プロセスにおける一時凌ぎ的な考え方、もしくはこの一時凌ぎを改善する際に発生するコストを指します。開発では質が求められる一方、近年の市場変化の速さからサービス提供の速さを求められる側面もあるため、このような考え方は開発プロセスにおいて発生しがちです。ただ、技術的負債が溜まるとバグやサービスの利便性低下などのリスクが高まるため、定期的なリファクタリングなどによって補完する必要性があります。

▼API

自社アプリケーションの機能の一部を第三者と共有する為のサービスを指します。これの開発を行うことで、ある企業・個人に自社サービスに触れてもらえる機会創出などが生まれるため、ビジネスが広がる可能性ができます。

▼レイヤー

ソフトウェア機能ごとの階層を指します。大きく分けて、アプリケーション、ミドルウェア、オペレーティング、ハードウェアの4つに階層は分けられます。

覚えておくべき知識Level.3

この章では、「エンジニア求人票において頻出度が高いエンジニアリング用語」をご紹介いたします。下記が分かればエンジニア向けに1to1が書けるようになるでしょう。

▼紹介単語一覧

- IaC
- コンテナ
- ペアプログラミング
- CI/CD
- コードレビュー
- バージョン管理ツール
- リグレッションテスト
- イテレーション
- RPA
- マイクロサービス

▼IaC

ITインフラ運用/構築に関わる膨大な作業をコード化したものを指します。今までITインフラ構築/運用をするために人が手動で必要なアプリをダウンロードしたり、組み合わせていたりを担当しておりましたが、これを行う中で人的ミスを理由にサービスが動作しない・作業にかなり時間がかかってしまうなどの問題がありました。ただ、IaCが生まれボタンひとつでコードが動いてインフラが整備される環境になったことで、これらのデメリットが解消されました。

▼コンテナ

アプリの動作環境を仮想的に構築する技術の1つです。PCの中に仮想のPCを作りアプリを動かす技術と考えると分かりやすいです。

▼ペアプログラミング

ペアプログラミングとは、1台のPCを2人で利用してプログラミングする手法です。「ドライバー(コーディング)」と「ナビゲーター(指示)」の役割に分担して、業務を担当します。作業ミス削減・効率化、プログラミング知識・チームワークの向上につながります。

▼CI/CD

ソフトウェア開発におけるテスト・デプロイなどの工程をCI/CD構築用のツールなどを用いて自動化し、開発の効率化や省力化、本番環境への迅速な反映を図る手法です。CI/CD手法導入のためのシステムとして、直近はCircleCIというサービスがメジャーになっています。

▼コードレビュー

ソフトウェア開発の一工程で、コンピュータプログラムのソースコードを記述者とは別の人が詳細に調べ、所感を開発者に伝えることを指します。自分の開発技術を磨きたいと考えているエンジニアにとっては、より質の良いコードを書くためのフィードバックを他者からもらえる点で魅力に映る工程であり、コードレビューの文化が組織にあるかどうかなどを重要視するエンジニアは多く存在します。

▼バージョン管理ツール

プロジェクトの中で更新されていく様々な成果物の変更の履歴・成果物そのものも含めて記録できるツールのことを指します。代表的なバージョン管理システムとしてGitがあります。

▼リグレッションテスト

プログラムの変更に伴い、システムに予想外の影響が現れていないかどうかを確認するテストのことを指します。

▼イテレーション

イテレーションとは、一連の工程を短期間で繰り返す、開発サイクルのことです。似た用語としてスプリントがありますが、スプリントは設計、実施、評価、改善という4フェーズのサイクル回すことを指します。「複数回のスプリントを繰り返す動きをイテレーションと呼ぶ」と覚えておくと棲み分けが効くでしょう。

▼RPA

ソフトウェアによる繰り返しが多い定型作業自動化のことを指します。いわずもがなRPAの実行は工数削減につながるため、RPA経験があるエンジニアは歓迎されます。

▼マイクロサービス

複数の規模の小さなサービスを組み合わせてひとつの大きなアプリケーションを構成する、ソフトウェア開発の技法のひとつです。小さく少しずつ作り込める手法だからこそ、開発サイクルを短縮できる・ニーズに応じて処理能力を増減させられる・開発言語やツールを異なったものにできるなどのメリットがあります。

最後に

いかがでしたしょうか。
私自身、エンジニアリングについて勉強中ですし、どんどん新たなトレンドが生まれる領域だと思いますので、引き続き情報のアップデートをしていきたい思いが強いです。本ブログも今回リリースするだけで終わることなく、自分の備忘録として少しずつ情報を追加していき、この記事を育ていこうと思っております。

また、人事を務めている方・もしくは非エンジニアだけれどもエンジニアリングについて学ばれてる方と一緒に切磋琢磨できたら嬉しく思います。「エンジニアリングについて学びたいけど、何から学んでいくべきか悩んでいる...」。そんなお悩みがあれば是非お声かけいただけますと幸いです!

長文でしたが、最後までご覧いただき、ありがとうございました!


※当社の採用/人事組織系支援にご興味がある方はお気軽にお声掛けください。

ポテンシャライトのノウハウを取り入れたATS Opela(オペラ)にご興味をお持ちの方はこちらよりご連絡ください 👇

今後も採用/人事系のアウトプットを続けていきます。
よろしければフォローもよろしくお願い致します(下記クリックいいただき、「フォロー」ボタンがあります)👇


この記事が気に入ったらサポートをしてみませんか?