背景
IT業界未経験で入社した未来のエンジニアから、よくこんな言葉を耳にします。
「将来どんなエンジニアを目指すべきか。。。わかりません。。」
あるいは、人事担当に人が未来のエンジニアに対して、
「きみは将来どんなエンジニアになりたいんだね?」
でエンジニアは、
「うーん。。。」
それはもちろんそうだと思います。
IT業界の経験が短いので、将来像なんてそう簡単には描けません。
そんなこんなで、
私が今まで得られた情報をもとに、
未来のエンジニアの方に、
どういう方向に歩いていけばよいかの目安となるキャリアアップケースを紹介したいと思います。
大きく分けて、
- PMO
- WEBディレクター
- 開発エンジニア
- インフラエンジニア
- 情報システム部門エンジニア
の5つがあります。
※ほかにもたくさんありますが、現状の求人で多いものをピックアップしています。
※なので今後徐々に変わっっっていくかも。。
でこれら5つそれぞれに対して、
- そもそもどんなポジションなのか
- 具体的になにをしているのか
- 求められるスキルセットは
- そうなるためにどんなキャリアプランを踏めばよいのか
を話していこうと思います。
PMOへの道
PMOって?
例えば、小さなパン屋のECサイトを作るとしましょう。
自分でプログラミングし、サーバを立てて、商品を登録し、世の中に公開しますよね。
でも例えば、メガバンクのネットバンキングシステムを作るとしましょう。
これは巨大すぎてひとりじゃ作り切れません。
とてつもなくたくさんのエンジニアが関わります。
するとどうなるでしょう。
- 各機能や役割毎に存在するチームごとに進むスピードが違うとどちらかが大変になったり暇になったり、
- 大人数なのでしんどい人と楽な人が出てきたり、
- バグが起こった場合、あっちのチームの責任だ、こっちのチームの責任だ、ってなったり
ようは、大人数だからこそ起こる問題っていうのがありますよね。
このような問題を解決しながら、プロジェクトを成功に導くのがPMOというポジションの人達です。
でPMOは具体的に何をするの?
- スケジュールを考える
- プロジェクトメンバーを集める
- 状況を把握するために、現状を数値に落とし込む
- 進捗を把握し、スケジュール通りに進むよう具体策(人材配置、最悪の場合、仕様調整やスケジュール調整など)をとる
- チーム間の情報共有を促す(会議など)
- 上記のための資料作成
つまりPMOに求められるスキルは?
- プログラマやインフラエンジニアの言動や成果物の理解(つまり実際に開発やインフラ構築した経験)
- プロジェクトに関わる多くの人々の状況を理解してあげる視野の広さ
- 資料作成能力とその資料を基に他人に説明する力(根拠があり簡潔であることが重要)
- プロジェクトそのものの意義を理解する業務知識(仮に銀行のプロジェクトであれば金融知識)
PMOへのキャリアプランは?
大きく分けて、PMO特化型とエンジニアからのステップアップ型の2パターンでキャリア形成する人が多いです。
まずはPMO特化型の説明から。
PMOのペーペー、つまり資料作成の補佐や会議の議事録や電話の取次ぎなどからキャリアをスタートさせます。
開発の実務をあまり経ることなく、徐々にPMOの先輩の動きを学んでいきキャリアアップさせます。
また、よりスピーディーにキャリアアップさせるためには、平行して開発の流れの理解やExcelVBAや業務知識習得に力を入れると良いでしょう。
開発の流れを理解していることを他人にPRするには、他人に見せれる状態のシステムを作ったり、開発系資格をとることが必要です。
PMOを必要とするプロジェクトはJavaを使っているケースが多いので、言語チョイスはJavaをお勧めします。
ExcelVBAスキルのアピールにはPMO実務でのVBA活用経験がない場合、VBAの資格をとるとよいでしょう。
業務知識は、金融系プロジェクトが多いので、簿記、FP、外務員などの資格が効果を発揮します。
つぎにエンジニアからのステップアップ型。
まずは開発エンジニアやインフラエンジニアとしてキャリアをスタートさせます。
またエンジニアでも、徐々に上流工程、つまり要件定義や設計工程にかかわるようにします。
また小規模なプロジェクトのPMやチームリーダーを経験するようにもします。
そうしていると、PMとの会話が必然的に多くなり、徐々に資料作成や進捗管理の業務比率が増えていきます。
このタイミングでPMOとしての業務にシフトさせます。
すると、プロジェクトの流れに理解があり、資料作成もできる即戦力PMOとしてデビューすることになります。
ただし、かなりの大規模なプロジェクトであるケースがほとんどのため、PMOデビューしたての頃は、それなりの苦労はするかと思います。
WEBディレクターへの道
WEBディレクターって?
たとえば、食べログをイメージしてみましょう。
どんどんデザインが変更され、どんどん使いやすくなり、どんどんユーザ数が増えていますよね。
WEBサイトって作ることも大事ですが、同時にWEBサイトをどんどん育てていくことも必要なのです。
この、WEBサイトの立ち上げを仕切ったり、WEBサイトをどんどん活性化させていく施作を仕切ったりするのが、WEBディレクターなのです。
でWEBディレクターは具体的に何をするの?
- WEBサイトを立ち上げたい人との話し合い(要件定義)
- デザイナー(WEBサイトの見た目を描くひと)やデザインを元にHTMLやCSSで作り上げていくマークアップエンジニアの業務進行管理、指揮
- WEBデザイン変更に伴うプログラマチームとの仕様調整(食べログの場合だと予約完了したらメール通知する機能って、プログラマの協力が欠かせません)
- WEBサイトのアクセス数アップやコンバージョン(食べログの場合だと予約数)アップの具体的な施作
- 上記のための資料作成
つまりWEBディレクターに求められるスキルは?
- デザイナーやマークアップエンジニア、プログラマの言動や成果物の理解(つまり実際にデザインやマークアップやプログラミングした経験)
- プロジェクトに関わる多くの人々の状況を理解してあげる視野の広さ
- 資料作成能力とその資料を基に他人に説明する力(根拠があり簡潔であることが重要)
- アクセス数増のためのSEO知識、WEBマーケティング力
- コンバージョンを上げるためのユーザ視点で観察する力
WEBディレクターへのキャリアプランは?
見習いWEBディレクターから一流WEBディレクターにキャリアアップさせている人は意外に少なく、デザイナーからWEBディレクターへのキャリアアップが多く、その次に多いケースとしてマークアップエンジニアからWEBディレクターへのキャリアアップがあります。
まずはデザイナーからWEBディレクターへのキャリアアップの説明から。
最初のデザイナーとしての仕事は、バナー作成やアイコン作成やランディングページの作成から始まるケースが多いです。
経験を積んでいくと徐々にWEBページデザインを任せられるようになります。
このタイミングで、デザインのみに興味を持つのではなく、WEBディレクターの動きやマークアップエンジニアの動きも気にするようにしていきます。
つまり、デザイナーとしてどのような仕事の進め方をするとディレクターは都合がいいのか、マークアップエンジニアは都合がいいのかを考えるという事です。
具体的には、ディレクターに対して指示を受けたデザインを渡すだけでなく、根拠をもった複数パターンデザインを提案することだったり、マークアップエンジニアが作ってくれたモックの軽微な修正を軽く自分でこなせる(マークアップの仕事を引き受けるのではなく、デザイナーとコーダー間の差し戻しの手間を両者互いに減らすという価値を求めるための動き)デザイナーになるということです。
この動きにより、WEB画面制作にかかわるディレクター、デザイナー、マークアップエンジニアの3者を見ているような動きになり始めます。
またディレクターがどのような資料を作り、どのような相手と会議しているかよく観察し、徐々にその仕事を引き受けるようにします。
そうすることで、ディレクター兼デザイナーのような立場に近づくことができます。
つぎにマークアップエンジニアからWEBディレクターへのキャリアアップ。
最初のマークアップエンジニアの仕事は、デザイナーが作成したデザインをもとに、実際にHTML、CSS、Javascriptでコーディングしていくことです。
仕事に慣れてきたら、SEOについて勉強しましょう。
同じ完成形でもHTMLの書き方ひとつでSEO効果がまるで異なります。
また、デザイナーがなぜそのようなデザインにするのかに興味を持ちましょう。
優秀なデザイナーのデザインには必ず根拠があります。
さらに、デザイナーにとってうれしいマークアップエンジニアになりましょう。
具体的には、このマークアップエンジニアは1pxも狂わずコーディングしてくれる、動きのあるデザインについて考えるときJavascriptで実現可能か相談に乗ってくれる、といったデザイナーにとって頼りになるマークアップエンジニアです。
またディレクターがどのような資料を作り、どのような相手と会議しているかよく観察し、徐々にその仕事を引き受けるようにします。
この動きにより、WEB画面制作にかかわるディレクター、デザイナー、マークアップエンジニアの3者を見ているような動きになり始めます。
そうすることで、ディレクター兼コーダーのような立場に近づくことができます。
バリバリ開発エンジニアへの道
開発エンジニアって?
これはとてもイメージつきやすいと思います。
JavaとかPHPとかPythonとかRubyとかそういうプログラム言語をコーディングしていく人のことです。
で開発エンジニアは具体的に何をするの?
コーディングしていくだけに思われますが、徐々に追及していくとかなり難しくなっていきます。
- 通常のコーディング
- 決済や認証などセキュリティーレベルの高いコーディング
- アクセス数が多いサービスなどに必要な、目的処理を最大限効率化させたコーディング
- 大規模サービスに必要とされるAPIなど、複数サーバにまたがる際の接続部分のコーディング
- AWSなどのクラウドインフラと連携させるためのコーディング
- 保守性の高いコーディング
つまりバリバリ開発エンジニアに求められるスキルは?
- プログラミングスキル
- セキュリティーレベルの高いコーディングのためのクロスサイトスクリプティングやSQLインジェクションなどのセキュリティ知識
- システムへ負荷軽減のための効率的なSQL発行や非同期処理などの知識
- システム間連携のためのAPIやバッチ処理、またHTTPの仕組みの知識
- インフラエンジニアとの連携のためのWEBサーバやIaaSの知識
- 保守性の高いコーディングのためのコーディング規約や基本的な言語知識(クラスやスコープなどの存在意義)
バリバリ開発エンジニアへのキャリアプランは?
最初の開発エンジニアとしての仕事は、システム全体に対する一番影響のない部分を担当することになります。
(まだ技術的にも人物的にも信頼は得られていないので、そうなってしまうのは当然だったりもします)
具体的には、テストやテストコードの作成、見た目の部分の改修などです。
その仕事を滞りなくしっかりとこなせば、徐々に開発チーム内の信頼が得られてきます。
また与えられた仕事が終わったら、余った時間でシステム全体のコードを読み、全体像を理解するようにしましょう。
コードを読んで理解できない部分は、なぜそのコードになっているのかを自学しましょう。
このような時期を経て、徐々に自分のシステムへの理解度も、チームからの信頼度も高まり、少しずつ難易度の高いタスクが与えられるようになります。
そして難易度が高いタスクには、上記で記載した「開発エンジニアに求められるスキル」が必要になってきます。
すぐに身につくようなものではないので、与えられたタスクをこなす傍ら、来る上記スキルが必要とされる時に備え、勉強しておきます。
こうすることで、ほかの人よりも早いキャリアアップが可能になるでしょう。
またシステム上の改善を開発方面からとインフラ方面の両方から解決していくプロジェクトが増えてきています。
つまり、開発知識だけでなく、インフラ知識も持つプログラマが超重要な世の中になってきています。
インフラも開発も可能なエンジニアをフルスタックエンジニアと呼んだりします。
ぜひこの領域も目指してください。
(フルスタックエンジニアへのキャリアアップは、まずはバリバリ開発エンジニアになってから、その過程で得たインフラ知識をもとに、さらに深堀していくイメージです。最初から両方できる人はめったにいません。)
バリバリインフラエンジニアへの道
インフラエンジニアって?
プログラマはファイルにプログラム言語を書いていきますが、それらのファイル群をどこに格納するのでしょうか。
WEBサーバですね。
場合によっては、WEBサーバに格納するという意識すらなく書いているだけのプログラマもいるかもしれません。
そうです、インフラエンジニアはこのWEBサーバを作ります。
WEBサーバだけではなく、メール配信用のメールサーバ、データ保管用のDBサーバなど、プログラマが担当する部分以外のすべてといっていいぐらい広い領域をカバーします。
プログラムに不備があったら、部分的なエラーにとどまるかもしれませんが、
サーバに不備があったら、システムが完全に止まります。
例えば株取引システムが急に止まってしまったとしましょう。
そして急激に下落している最中にもしシステムが使えなかったら、ユーザーたちはどうなるでしょうか。
そうです、インフラエンジニアはシステム構築運用にとってかなり責任重大なポジションなのです。
でインフラエンジニアは具体的に何をするの?
- 各種サーバの構築
- サーバへの不正アクセスの防止
- サーバへ多量のアクセスが来た時のアクセス分散措置
- サーバが故障したときのための、ミラーサーバみたいなものの構築(冗長化といったりする)
- サーバへ何らかの不具合が起こらないかの監視と起こった際の緊急復旧
つまりインフラエンジニアに求められるスキルは?
- 各種サーバの構築スキル(WEBサーバ、メールサーバ、DNSサーバ、DBサーバなど)
- 不正アクセスの防止のためのセキュリティー知識(ファイアウォール、IPS、WAFなど)
- サーバへ多量のアクセス対応のための負荷分散の知識(ロードバランサー)
- サーバ冗長化の知識
- サーバ監視の知識(Zabbix、Cacti、Nagios、Hinemosなど)
インフラエンジニアへのキャリアプランは?
最初のインフラエンジニアとしての仕事は、24時間体制シフトでのサーバの監視となるケースが多いです。
具体的にはサーバ監視ツールのZabbixから通知されるアラートを確認し、手順通り措置を行ったり、担当者に取り次いだりという業務イメージです。
このとき、状況に応じて手順を実行するだけでなく、その手順で何が行われているのか、取次先の担当者は何を行っているのか、自分が実行したことのない手順にはどのような内容が記載されているのかを、Zabbixはそもそもどのように設定するのか、を学ぶようにしてください。
これによって、インフラの全容が見えてきます。
サーバの監視はインフラ全体の健全性を保つために、最適な監視設定がなされているためです。
また同時に自宅環境等でサーバの構築を行ってください。(自分が監視してるインフラ環境に似せたものを作るとイメージがわきやすいと思います)
こうすることで、監視担当から、その取次先のポジション(あるいは構築ポジション)にステップアップすることになります。
また、ポジションがアップしてもインフラの領域というのは範囲が広大で、かつセキュリティーレベルが高いです。
そのため、自宅環境などでのプレッシャーのかからない場所での検証は非常に有効です。
またこの有効さを利用すれば、他よりもスピーディーにキャリアアップできるでしょう。
(他の人が苦戦しているところ、自分は家でなんとなく触ったことがあるので、すこしスムーズにいったりする)
またシステム上の改善を開発方面からとインフラ方面の両方から解決していくプロジェクトが増えてきています。
つまり、インフラ知識だけでなく、開発知識も持つエンジニアが超重要な世の中になってきています。
インフラも開発も可能なエンジニアをフルスタックエンジニアと呼んだりします。
ぜひこの領域も目指してください。
(フルスタックエンジニアへのキャリアアップは、まずはバリバリインフラエンジニアになってから、その過程で得た開発知識をもとに、さらに深堀していくイメージです。最初から両方できる人はめったにいません。)
情報システム部門エンジニアへの道
情報システム部門エンジニアって?
たとえばあなたが大企業に経理として入社したと仮定してイメージしてみましょう。
入社すると自分用のPCが準備されていますし、経理ソフトが使えるようになっていますし、ネットワークにつながっていますし、共有ファイルも閲覧可能です。
では誰がこの準備をしているのでしょうか。
そうです。企業の情報システム部のエンジニアたちです。
で情報システム部門エンジニアは具体的に何をするの?
- 社員のPC手配(業者選定からPC設置、破棄まで)
- ツールの選定(経理であればどの経理システムを導入するか、検証、導入、運用まで)
- 社内ネットワーク環境の整備
- 企業のIT戦略の立案、実行
つまり情報システム部門エンジニアに求められるスキルは?
- 幅広いIT知識(便利なITシステムは何か、使いこなせるかなど)
- 企業IT戦略の理解(適切なIT投資を立案実行するため)
- 開発、インフラ、PC端末の知識(ITツール導入や社内からの問い合わせ受付、軽微なカスタマイズ、修理が必要なため)
- ベンダーコントロール(ベンダーと呼ばれるツールやシステム等の販売側の業者をうまくマネジメントする能力)
- ユーザとわかりやすい言葉で話す能力(IT用語はITに関与しない人からすると意味不明な言葉です。適切な言葉に変換して会話できる能力が必要です)
情報システム部門エンジニアへのキャリアプランは?
最初の情報システム部門エンジニアとしての仕事は、社員の入退社異動にともなうPCの設置や、社内からの簡単な問い合わせ対応となります。
これらをこなす中で、企業としてなぜこのようなツールを導入しているのか、もっといいツールはないのか、社員はどのような不満や不便を持っているのか、を常に興味をもって、個人的に調べて検証しておくことが大事です。
(ツールの無料期間などはどのサービスでもあり、自宅で個人で検証可能なケースが多いです)
情報システム部の中でおそらく定期的に会議などがあるでしょう。
その中でおそらく今の会社の課題が共有されるはずです。
部署内で信頼をえたら、意見を求められることもあるでしょう。
その時に、「実は社員からこのような声をきいて、プライベートで試したことがあるのですが。。。」と発言できるかどうかが、ステップアップのカギになります。
もしその提案が通過し、選定導入のプロジェクトに一部かかわれるようになったら、
キャリアアップは成功です。そのままその流れに乗り、企業のIT戦略投資にどんどんかかわっていきましょう。
なによりユーザである社員と会話し、なにか問題で、その問題の個人的解決方法を自分で考えて置くことが重要になります。
これがあれば他の人より早くステップアップできるでしょう。
とはいえ未経験の場合はどうやって最初のITプロジェクトに参画するのか?
各キャリアアップケースがどういったものかは、分かりました。
ただ、このなかで最大の難関が最初の一歩なのです。
たとえば、
- 客先常駐型のSIですと、最初のプロジェクトにどうやって経験なしに参画するか
- 目指したいポジションの採用が行われている会社の場合、どうやって採用面接をクリアするか
これが一番の山場になります。
人材を必要としている側にとったら、経験者の方がいいのは当然ですよね。
なので、難関であることは必然なので、状況を受け入れましょう。
大事なのは、この状況下でどうやったらこの山場をクリアできるかです。
でも実際にこの壁をクリアしている人はいます。
ではどうやってクリアしているか、採用側の立場をイメージして考えましょう。
簡単ですね。
「この人、実務経験がないけど、できそうじゃね?」とおもうケースがあったという事ですよね。
そうです。実務ではないが、プライベートで「できそう」であると思わせる目に見える成果物があればよいのです。
逆に言うと、成果物なしだと、コネ等の力を使わない限りこの壁を超えるのは不可能です。
では早速各状況に応じた最初の一歩のクリア方法について紹介していきます。
PMOプロジェクトの第一歩
第一ステップのPMOプロジェクトで求められるのは資料作成の補佐や会議の議事録や電話の取次ぎなどです。
つまり前職やアルバイトや学生時代の資料作成経験や電話対応経験をフルに経歴書に盛り込みます。
苦労した点や工夫した点を自身の視点で追加できると参画可能です。
※未経験から開発エンジニアやインフラエンジニアとしてキャリアをスタートさせる方法は開発エンジニア編、インフラエンジニア編で記載します。
デザイン案件の第一歩
最初のデザイナーとしての仕事は、バナー作成やアイコン作成やランディングページの作成から始まるケースが多いです。
そのため、学生時代や独学で作ったバナー作品やアイコン作品や自身のホームページやコンテスト参加作品(落選しててもOK)などをありったけポートフォリオに乗せます。
これで大丈夫でしょう。
マークアップ案件の第一歩
最初のマークアップエンジニアの仕事は、デザイナーが作成したデザインをもとに、実際にHTML、CSS、Javascriptでコーディングしていくことです。
そのため、学生時代やスクールや独学で作った自身のWEBサイト、さらに欲を言えば、現在世に存在する情報量の多いサイト(YahooとかAmazon)のトップページをまねた作品などを作り、ありったけポートフォリオに乗せます。
これで大丈夫でしょう。
開発案件の第一歩
これが各種案件第一歩の中で一番難易度が高いです。
言語は何でも構いませんが、オリジナルのアプリケーションをWEB上で5つほど公開し、それを見せましょう。
且つ、ソースコードもGithubに公開し、アピールするのが良いです。
ただ、独学で5つのアプリを公開するのは難しいです。
そのため言語の選定は、身近に教えてくれる人(知り合いでもスクールでも)がいる言語にしましょう。
インフラ案件の第一歩
インフラの場合、なぜか資格が評価されるケースが多いです。
- LPIC
- CCNA
- AWSソリューションアーキテクト
などの資格を取得し、アピールしましょう。
また最初は夜勤対応が必要とされる勤務体系になるケースが多いので、夜勤でも大丈夫な健康な体と意思のアピールもしておけば問題ないでしょう。
情報システム部門案件の第一歩
最初の情報システム部門エンジニアとしての仕事は、社員の入退社異動にともなうPCの設置や、社内からの簡単な問い合わせ対応となります。
そのため、PCで何かするのが好き(最新のツールをプライベートで導入していたり、ハイスペックなPCを使っていたり)なアピールや、基本的な資料作成や電話対応の経験(前職でも学生時代でもバイトでも)と面接時のコミュニケーション能力(ユーザである社員と良好な関係を築けるか)をアピールすれば大丈夫でしょう。