エンジニアロード

RPG風レーダーチャートで見る、エンジニアの仕事18種と求められるスキル

生きかたを変えたいと おのぞみか?

最近、企業の管理職の方とお話ししていると、
「こんなことをやりたい。どんな人材を育てたらいいのか?」
「こんな人材を育てたい。どうやって育てたらいいのか?」
という相談をいただくことが多くなりました。

一方、若手の方からは、
「スキルアップしたい。何を勉強したらいいのか?」
という相談が増えています。

エンジニアの育成、エンジニアとしてのスキルアップはどの企業でも重要なテーマですが、残念ながら良い指針になるものが存在しないようです。

そこで、僕自身のエンジニア経験も含め、これまで色んなエンジニア・経営者の方と一緒に働いてきた中で、「こういうポジションの人は、こういう能力を持っていることが多いよな」「こういうポジションの人には、こういう能力を持っていてほしいよな」という感覚を数値化してみることにしました。

その目的は、以下の3点を明らかにして、エンジニアのキャリアアップの指針を作ることです。
・エンジニアにはどんな役割の仕事があるのか?
・その役割にはどんなスキルが必要なのか?
・そのスキルを得るには何を勉強すればいいのか?
上記のうち、まずは2つ目までを定義したのが今回の内容です。

どの職業にするのじゃ?

解説

テクノロジーの位置づけが「新しい戦略を実現するツール」から「新しい戦略を生み出す源泉」へと変化する中で、今のエンジニアには純粋な開発力だけでなく経営や業務の能力が(これまで以上に)求められるようになりました。

しかし、エンジニアに必要な幅広い知識を網羅的に整理したまとめがないので、「研修で開発の基礎を学んだらあとは現場でOJT!」という、ハンター×ハンター的に言えば、原理はよくわからないけど念能力者に殴られたらお前も念が使えるようになるぞ!みたいなエンジニア教育が一般的と思います。

本来は、エンジニアに必要なスキルが体系的に整理されていて、世の中全体で同じ指針に基づいたスキル開発が行われると良いですよね。

ちなみに僕が調べた限り、最も期待に近いのはIPAのITスキル標準です。

しかし、これは一昔前のものなので、ホントにこれだけできればいいの?という職種や、今どきこんなの要らなくない?というスキルも見受けられます。(IoTとか、特定ジャンルでは新しいものが作られている様子)

そこで、ベースとしてIPAの標準を活用しつつ、最近のテクノロジートレンド、経営・ビジネス系の項目、クリエイティブ系の項目を加えたりして、このまとめを作りました。(裏側は100個くらいの小項目に分かれている)

また、「どの仕事もカッコイイ!」という前提を大事にしていて、同一Lvの役割には優劣をつけず、トータルで同一ポイントになるよう調整しています。
「ここ、こんなに高くなくてよくない?」or「ここ低すぎない?」という部分があったら、周りとの兼ね合いで調整したものと理解してください。意図は下に書きます。

ということで、一つ一つの役割のポイントを解説していきます。
興味のあるものからお読みください。

Lv1 学習者

エンジニアに入門するスタート地点です。全員ここから始まります。
しかし、敢えてポイントをゼロにしなかったのは、エンジニア職に内定が決まった学生さんや、エンジニアへの転職を考えている方に向けて、入社前にここまで勉強しておけばスタートダッシュ決められるぞ!、ということを伝えるためです。

これからエンジニアとしてのキャリアを始めようとされている方は、まずこれらのスキルの習得から始めてみてはいかがでしょうか。
・PCの基本操作(タイピング 等)
・ビジネスライティング(メール, 議事録 等)
・MSOffice操作(Excel, PowerPoint, Word)
・ロジカルシンキング(MECE, ロジックツリー)
・コンピュータの仕組み(CPU, メモリ, ディスク, OS)
・通信の仕組み(GETとPOST)
・Webアプリケーションの仕組み(クライアント, サーバ, WebAPI)
・プログラミング言語(何か一つ)

Lv2 エンジニア

「エンジニア」と一口に言っても、いろんなジャンルに分かれます。
全てを広く浅くやるよりは、それぞれの役割の特性を理解して、必要な知識を伸ばしていくべきです。
短期的には今求められているスキルに注目しつつ、長期的には次の上級職を見据えた幅広いスキルの習得を目指します。

◼️アプリエンジニア(Web・スマホ系)
アプリケーションの開発者は、Web・スマホ系とエンタープライズ系の2種類に分けました。その肝は、開発の規模です。
Web・スマホ系は一般的に開発チームの規模が小さく、一人でアプリもインフラもやらなければいけないケースが多いので、幅広い開発知識が求められます。
プログラミング言語の他にも、インフラ構築の技術やアジャイル開発のプロセスに精通していると、「優秀なエンジニア」として評価されるはずです。
・Web/スマホ系プログラミング言語(JS, PHP, Java, Swift 等)
・サーバ構築(クラウド)
・データベース操作(SQL 等)
・要件定義/処理設計
・テスト(コンディション抽出, 自動化)
・構築(コンパイル, デプロイ, CI/CD)
・構成管理(Git 等)
・アルゴリズム
・アジャイル
・プロトタイピング手法

◼️アプリエンジニア(エンタープライズ系)
エンタープライズシステム、つまり企業の業務システムは、Web・スマホ系と比較すると開発規模が大きいことが特徴です。Webでも、大企業の会員ポータルサイトなどになってくると、こちら側に分類すべきです。
規模が大きい分、アプリとインフラが分業されるので、アプリケーションの開発者はアプリケーションに集中できることが特徴です。
その一方で、システム化する業務が複雑で、エンジニアも業務知識を押さえていないと、設計意図を読み違えてバグだらけのシステムを実装することになってしまいます。
プログラミング言語、開発プロセスの知識に加え、「このシステムはどんな業務に必要なのか?」を業務ユーザーと語り合える能力を持っていることが、エンタープライズ系のエンジニアとして秀でる条件です。
・エンタープライズ系プログラミング言語(Java, Ruby 等)
・データベース操作(SQL 等)
・要件定義/処理設計
・テスト(コンディション抽出, 自動化)
・構築(コンパイル, デプロイ, CI/CD)
・構成管理
・アルゴリズム
・ウォーターフォール
・アジャイル
・ビジネスプロセス(CRM, SCM, ERP)
・会計
・メジャーなクラウドサービス(Salesforce 等)

◼️インフラエンジニア
主に規模の大きい業務システム開発において、アプリと分業してサーバ・ネットワークの構築を担います。
クラウドの普及により、ただサーバを構築するだけなら誰でも簡単にできるようになりました。(AWSにアカウント登録して作成ボタンポチッとするだけ!)
しかし、特に大企業では社内ネットワークの複雑性やセキュリティへの厳しいルール、整備すべきドキュメント、社内の承認などインフラ整備の難易度は依然として高く、インフラの知識よりもむしろ、このあたりの課題解決能力が腕の見せ所になります。
・シェルスクリプト
・クラウド環境(IaaS, PaaS)
・非機能要件(可用性, 拡張性 等)
・ネットワーク(インターネット, VPN, 専用線, LAN, WAN 等)
・ミドルウェア(OS, ストレージ, データベース 等)
・セキュリティ(認証, ファイアーウォール, 暗号化 等)
・自動化技術(Ansible, Puppet, Chef 等)
・コンテナ技術(Docker 等)
・アジャイル
・ウォーターフォール

◼️データサイエンティスト
いま超人気の職業ですが、どうやって勉強したらいいかわからないという悩みを多く聞きます。
数学や機械学習を学ぶことももちろん必要ですが、それ以上にビジネスの理解がとても重要だと、僕は考えています。
なぜ分析が必要なのか?この分析から何を得たいのか?、これらの問いを経営者とディスカッションし、それを分析モデルに落とし込む問題解決力が必要です。
実際、Excelでちょっとした相関分析をかけるだけ、雑多なデータからどれを見ればいいか教えてあげるだけ、でもクライアントに喜ばれることは多く、ニッチな分析アルゴリズムや精度向上技術に時間を投資するより、ビジネスの勉強に注力することをお勧めします。
・分析系プログラミング言語(Python, R 等)
・データベース操作(SQL 等)
・数学(解析, 線形代数, 確率, 統計)
・機械学習アルゴリズム(回帰, 分類, クラスタリング, ディープラーニング 等)
・経営指標(一般的なKPI、企業独自の指標)
・マーケティング
・ビジネスフレームワーク(SWOT, PEST, 3C 等)
・アジャイル
・プロトタイピング手法

◼️セキュリティエンジニア
これまでは主にインフラエンジニアが担っていた領域ですが、昨今のサイバーテロへの危機意識の高まりから、よりセキュリティに尖った人材が求められています。
日々新しい攻撃手法が生まれているので、特定の技術だけでなく、デジタルトレンドをウォッチして新しい攻撃手法をいち早くキャッチアップすることが必要ですし、ただセキュリティを強固にすれば良いわけではなく、セキュリティ強化に伴うデメリット(コスト、認証手続きの煩雑さ等)を理解し、いかにベターなプランに落とし込むかを考える問題解決能力が求められます。
・シェルスクリプト
・クラウド環境(IaaS, PaaS)
・ネットワーク(インターネット, VPN, 専用線, LAN, WAN 等)
・ミドルウェア(OS, ストレージ, データベース 等)
・セキュリティ(認証, ファイアーウォール, 暗号化 等)
・攻撃手法の知識(ウィルス, 盗聴, DDoS, 侵入 等)
・デジタルトレンドとセキュリティアジェンダ(IoT 等)

◼️UXデザイナー
「モノからコトへ」というトレンドとともに、エンジニアとデザイナーは一体化しつつあります。
Webを通じた顧客体験を設計する役割として、デザインと開発両方に精通したエンジニアが求められるようになりました。
開発の技術があるだけでなく、Web解析を通じて顧客のニーズをあぶり出したり、そこから顧客ジャーニーを設計したりするなどのマーケティング的な手法や、プロトタイプを作りながらユーザーと会話するデザインの手法が必要です。
・ペルソナ設計
・カスタマージャーニー設計
・マーケティング
・シナリオ設計
・UI設計
・Webデザイン
・Webフロント系プログラミング言語(JS等)
・アジャイル
・プロトタイピング

Lv3 アーキテクト・コンサルタント

エンジニアがある程度習熟してくると、次のステップとして「アーキテクト」または「マネージャー」を選択することになります。

よくあるたとえ話では、
・あっちに行こう、と言うのが経営者
・線路を敷いて電車を走らせよう、と言うのがアーキテクト
・線路を敷く計画を立てるのがマネージャー
・線路を敷くのがエンジニア
と言われます。

アーキテクトとマネージャーの違いは、「仕組みをつくるのが得意」なのか「管理するのが得意」なのかの違いです。
また、ただ口を出すだけでなく、経営者の「あっちに行きたい」に対して「えっ、あっち?ジャングルじゃん、、、」ってみんながなっている中、先陣を切ってジャングルを切り開いてこそ、アーキテクトとしての価値が評価されます。
ここから先の役割は、スキルだけでなく、そういったマインド面も重要になってきます。

◼️IT戦略アーキテクト
IT企画系の部署がこの役割に該当します。
CIOやCTO直属のポジションで、経営戦略をいかにエンタープライズITに落とし込むか?新たに登場したテクノロジーをいかに経営に活かしていくか?といったことを考えるのがミッションです。
開発の基礎知識に加えて、経営やビジネスの一般論を理解し、市場やテクノロジーのトレンドにも敏感にアンテナを張って、最新テクノロジーをいち早く自社に取り入れていく方法を検討・提案する能力が求められます。
・市場(規模、ポジショニング、将来性)
・経営(事業計画、KPI、ビジネスフレームワーク)
・デジタルトレンド(AI, IoT, BlockChain等)
・ビジネストレンド(シェアリングエコノミー 等)
・プレゼンテーション
・システム開発の基礎知識(アプリ, インフラ)

◼️ビジネスアーキテクト
IT戦略アーキテクトの計画した戦略に従って、システムのグランドデザインを行います。
この戦略を実行するためには、そもそもシステムが必要なのか?必要だとしたら何種類に分ける?それぞれにどんな役割を持たせる?使うのは誰?…というように、実行計画を具体化させる役割を担います。
プロジェクトが炎上するかどうかは、この実行計画の精度に半分くらいかかっており、現実的なプランをつくるためにはある程度の開発経験が必須です。
うっかり開発未経験のITコンサルタントがアサインされると、そのプロジェクトは大変なことになります。。。
・業務知識(CRM, SCM, ERP)
・会計
・法律
・アプリケーションまたはインフラ構築(数年の実務経験)
・プレゼンテーション
・アジャイル
・ウォーターフォール

◼️デジタルアーキテクト
世の中の新技術に精通し、これらを如何に自社に取り入れていくべきかを考える役割です。元々はビジネスアーキテクトが担っていた領域ですが、様々な技術が次々に生まれてくる中で、「新技術とビジネス両方に詳しい」という需要が生まれてきました。
例えば最近では、ビッグデータの活用やデジタルマーケティングといった、「聞いたことはあるけど具体的にどうしたらいいかわからない」という領域に精通し、これらのプロジェクト立ち上げ、推進を担う役割です。
・経営(事業計画、KPI、ビジネスフレームワーク)
・デジタルトレンド(AI, IoT, BlockChain等)
・ビジネストレンド(シェアリングエコノミー 等)
・プレゼンテーション
・システム開発の基礎知識(アプリ, インフラ)
・アジャイル
・エクスペリエンス設計(ペルソナ, カスタマージャーニー等)

◼️ソフトウェアアーキテクト
いわゆる要件定義を担当する役割です。
ビジネスアーキテクトよりは実装目線で、データモデルの設計、画面構成、外部システムとの連携など、実行計画をエンジニアに落とし込む重要な役割です。
その割に、意外と軽視されることが多く、雑な絵を描いて終わりにしてしまうことが度々起こりますが、ビジネスアーキテクトとともに、この領域をおろそかにすると間違いなくプロジェクトが炎上する、非常に重要なポジションです。
・業務知識(CRM, SCM, ERP)
・システムグランドデザイン
・要件定義
・サービス知識
・プレゼンテーション
・アプリケーションアーキテクチャ(サービス指向, マイクロサービス 等)
・アプリエンジニアとしての経験

◼️インフラアーキテクト
ソフトウェアアーキテクトと共に、インフラのアーキテクチャを検討するポジションです。
昨今はクラウドの利用によりかっちりとしたアーキテクチャを定義する必要性が薄れてきた一方で、システム切り替えのスピード感、チャットボットなどを活用した24時間365日応対への要求やサイバーテロへの備えなど、新たな前提事項が登場しています。
これらの要求に応えつつ、いかにサービスコストを安価に抑えるか、これがアーキテクトの腕の見せ所でもあります。
・業務知識(CRM, SCM, ERP)
・システムグランドデザイン
・要件定義
・サービス知識
・プレゼンテーション
・インフラストラクチャアーキテクチャ
・インフラエンジニアとしての経験

Lv3 マネージャー

アーキテクトがテクノロジー戦略のプランニングやシステム設計への落とし込みを担うのに対し、マネージャーはアーキテクトとエンジニアから構成されるチームの管理を担います。
たまにマネージャーとアーキテクトを同一人物が担っているプロジェクトを見かけますが、そもそも求められている特性が違いますし、仮に両方できたとしても「マネージャー兼アーキテクト」の稼働がいっぱいいっぱいになって炎上します。
特にエグゼクティブの方にはアーキとマネージャーを分ける体制を構築していただきたいですし、現場からも声を上げるべきです。

◼️スクラムマスタ
アジャイルチームのマネージャーです。ウォーターフォール開発における「チームリード」と同等のポジションとして扱われますが、ぼくはむしろ小規模なプロジェクトマネージャーだと考えます。
アジャイルにおけるスクラムにはユーザも所属しており、ユーザとのプロトタイピングを通じて仕様を作っていく、バックログの優先度を決めていく、という役割を担っており、ただ与えられたタスクをこなせるだけでは責任を果たせない難しさがあります。
業務ユーザと話せるビジネススキルと、実装方式を即座に判断できる開発スキルがバランスよく求められます。
・業務プロセス(CRM, SCM 等)
・プレゼンテーション
・チームマネジメント(WBS, タスク管理, 課題管理, リスク管理)
・アプリエンジニア、またはインフラエンジニアとしての経験

◼️プロジェクトマネージャー
テクノロジーが進化しても、役割も求められるスキルもあまり変わらないポジションです。
しいて挙げれば、プロジェクト推進の手法がウォーターフォールからアジャイルへと変化していたり、年単位の長期プロジェクトがそもそも認められなくなってきたりといった背景から、スキルはこれまでと同じでも、新しい事に積極的にチャレンジするマインドが今まで以上に必要になっています。
・KPI管理
・業務プロセス(CRM, SCM 等)
・プレゼンテーション
・チームマネジメント(WBS, タスク管理, 課題管理, リスク管理)
・ウォーターフォール
・アジャイル
・デザインシンキング
・システム開発の実務経験

◼️プロダクトマネージャー
プロジェクトマネージャーがプロジェクト全体の計画と推進を担うのに対し、プロダクトマネージャーはプロダクト、つまりプロジェクトが扱うシステムやサービスの仕様に責任を持つ役割です。
以前は、サービス=売り物の開発にITの人間の入り込む余地はなく、また業務システムを構築するときは「業務の人に言われた通りに作る」ということが行われていました。
しかし、テクノロジーの発展によって、新しいサービスは新しいテクノロジーから生まれるようになったし、業務ユーザーも新しいテクノロジーで何ができるのかよくわからない。そんな中でエンジニアとサービス開発両方のスキルを持った人材が必要になりました。
プロジェクトマネージャーと同じ「マネージャー」ですが、プロダクトマネージャーが管理するのは、チームメンバーではなくサービス自体です。
・経営(事業計画、KPI、ビジネスフレームワーク)
・業務プロセス(CRM, SCM 等)
・イノベーション(リーン, デザインシンキング, プロトタイピング 等)
・エクスペリエンス設計(カスタマージャーニー設計 等)
・プレゼンテーション
・チームマネジメント(WBS, タスク管理, 課題管理, リスク管理)
・アジャイル
・システム開発の実務経験

Lv4 ゴッド

最近、「フルスタック」すなわち「なんでもできる」というスキルセットが注目されるようになってきました。つまり、ビジネスを語れるし、アーキテクチャも作れて実装もできる、という人です。
そんな人存在するのかよ、、、と思いながら書きましたが、開発とアーキ設計が両方高度にできる人であればたまに出会います。
この人が一人いれば、アーキテクトが素人でも、開発者がみんな新人でも、大抵のプロジェクトは成功する、そんな人です。そしてこの人は大体どこのプロジェクトでも「」と呼ばれています。
あと、こういう人を抱えているマネージャーは大体出世します。
・全部!

Lv4 エグゼクティブ

CIO(Chief Information Officer)とCTO(Chief Technology Officer)は同じ意味で使われることも多いですが、区別して語られることも増えてきました。
正確な定義は存在しないはずなので僕の定義にはなりますが、
・CIO:業務IT戦略の最高責任者
・CTO:テクノロジー戦略の最高責任者
という位置づけとして考えています。
つまりCIOのミッションは事業戦略を実行するためのIT基盤をいち早く整備したり、新しいビジネスに順応するための基盤を整備することであり、CTOのミッションは世の中のテクノロジートレンドに精通し、自社のケイパビリティとそのテクノロジーを掛け合わせてどんなイノベーションを起こせるかを考えることです。
その意味で、CIOはCTOよりも現実的な目線でビジョンを語る必要がありますし、CTOはトレンドから新しい戦略を生み出すクリエイティビティが求められます。

・市場(規模、ポジショニング、将来性)
・経営(事業計画、KPI、ビジネスフレームワーク)
・イノベーション(リーン, デザインシンキング, プロトタイピング 等)
・エクスペリエンス設計(カスタマージャーニー設計 等)
・マーケティング
・ストーリーテリング(エグゼクティブ向けのプレゼンテーション)
・デジタルトレンド
・ビジネストレンド
・アジャイル
・アプリ/インフラアーキテクチャ
・システム開発の実務経験

どんなキャリアパスを描きますか?

上記を眺め、いまの自分のステップ、次に目指したいステップ、そのために必要なスキルを順番に確認してみてください。

今後、ステップに合わせたトレーニングの提案や、成長を記録できるような仕組みを作ったら役に立ちそうだなあ、とぼんやり考えました。

また、書きながら、プロダクトマネージャーはサービス開発と業務システムで分けたほうがいいかも、など改善点もいくつか見えたので、そのあたりもアップデートしていきたいです。


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