この記事ではもう少しシステムエンジニアという職種を知ってもらいたいので、その仕事内容について中心的に書いていきます。システムエンジニアという仕事について詳細に知ることで、より進路が明確になることを期待したいと思います。
エンジニアと一括りに言ってもより専門的で、様々な仕事内容に従事しています。この部分を余り知らないと「なんか期待してたのと違う」となりかねないので、かなり重要な内容でもあります。
エンジニアとは
そもそもエンジニアはどんな職種なのでしょうか?まずはそこから考えていきたいと思います。
一般的にエンジニアは科学的原理や数学的なアプローチを用いて、問題を解決し技術的なシステムを設計、開発、管理、改善する専門家といえるでしょう。エンジニアは幅広い分野で活動している広義的な意味を持っています。ソフトウェアエンジニアから機械工学者、電子工学者、建築家、化学者などもエンジニアの一種です。
エンジニアが主に担っているのは現実の課題に対処し、製品やシステムを設計し、品質を確保して効率性を最適化する、という部分になるかと思います。テクノロジー、イノベーション、クリエイティビティと密接に結びついており、社会や経済への影響が大きいのも特徴です。
システム開発という点で協調するならば、システムの開発の立ち上げから、プロジェクトの管理・改善を行い、ビジネスのボトルネックをITという側面からサポートする仕事であるともいえます。ITコンサルとも近いイメージがあるかもしれませんが、エンジニアは専門的な側面からアプローチをすることが仕事だと思っています。
エンジニアの仕事内容
さて、エンジニアといっても実は様々な役割があり、それぞれ専門分野が異なります。例えば以下のような仕事内容があります。
- 案件管理
- アプリ開発
- インフラ構築
- 保守運用
大まかに分けると上記のようになり、場合によっては特定の分野にのみ特化している場合もあります。もちろん中にはバランスよく、様々な役割を経験しながらキャリアアップを図ってくれる企業もあります。特定の分野に特化している企業の場合、仕事内容が限定的になってしまうので注意が必要です。
案件管理
「案件管理」とは読んで字のごとく「案件を管理する役割」です。どの仕事でもそうですが、報酬を受けて行う仕事には予定や期限があります。アプリ開発においても例外ではありません。また仕事を受ける上で「どうやって終わらせるか」という点は非常に重要になります。
それを考えるのが「案件管理」という仕事です。案件を予定までに完了させるためのスケジュールを考え、そのために必要な人員を確保したり、日々の進捗を管理しながら進み具合を管理する「舵取り役」ということですね。他にもお客さんと打ち合わせを行って、開発内容の要件・仕様の確定を行ったり、見積を作成したりする仕事です。
業界用語的には「上流工程」と呼ばれる役割を担うことになります。案件のトップを担う役割なので重要です。現場において、こうした役割を担う人は「プロジェクトマネージャー(PM)」と呼ぶことが一般的です。前回の記事でいうところの「大手ベンダー企業」などがこの役割を担うことが多いです。
アプリ開発
文字通り「アプリケーションを開発する」ことを指した単語です。もう少しシンプルに言ってしまうと「プログラミングをする役割」と呼んでもよいかもしれません。先ほど出てきた上流工程にて決まったアプリケーション仕様を実現させるために技術力を提供する仕事ですね。
アプリケーション開発を行うにはプログラミングの技術が必須であるため、一定以上のプログラミングスキルが求められます。もちろん人には得意不得意があるため、実際に役割で働くことができるかはその人次第になります。未経験からでも目指せるポジションではありますが、そもそもプログラミングを学ぶ必要があるのでハードルは高いですね。
またアプリケーションを開発する中では実際に開発するだけでなく、アプリケーションの品質を担保するためのテストなども行います。プログラミングを駆使してアプリケーションを構築し、それをテストしてリリースするまでの一連の流れを担います。
インフラ構築
「インフラ構築」と言われてもピンとこない人は多いと思います。「インフラ」とは「インフラストラクチャー」の略語であり、土台・基盤を指し示す言葉です。その言葉通りITを活用するための土台を構築して、提供するのがインフラ構築と呼ばれる役割になります。具体的にはサーバーの構築やネットワークの構築、実際に機器の設置、パソコンの導入など物理的にパソコンやサーバーなどの機器を使用しながら案件を進めていく役割になります。
筆者の前職ではアプリ開発とインフラ構築の割合は2:8くらいでした。
実際にインフラを構築するにあたってはプログラミングを駆使することは少ないので、アプリ開発に適性がないと判断された場合などは、こちら側に行くことが多いかと思います。中にはそうした技術に面白みを感じてキャリアを重ねていく人もいます。
会社などにITのチカラを導入するには、そのための受け皿が必要になります。顧客の必要に応じつつ、将来的な拡張性や安全性を考慮して土台を設計して提供するのが「インフラ構築」になります。お客さんの現場で作業したり、データセンターに機材を搬入したりすることが多いですね。
保守運用
我々、ITエンジニアの仕事は「作ったら作りっぱなし」という訳にはいきません。中には作ったら契約は終了、という場合もありますが、一般的には「提供した後もメンテナンス業務を提供する」ということが多いです。そうした業務を「保守運用」と呼んでいます。
例えばアプリケーションを開発して提供したあとの「現場では〇〇だから、〇〇できる機能を追加してほしい」という要望に対応したり、Windowsアップデートなど、提供している機材やアプリケーションなどに影響が発生しそうな事案に対して、先だって検証して安全性を確認するといったこともあります。
ようするに「提供して商品・サービス」がスムーズに運用され、問題なく使用できるかを管理し、顧客側で生じた問題・障害に対応するための業務ということです。こうした業務は納品と合わせて契約を結ぶことが多く、企業にとっては安定的な収益を上げるための重要な業務の一環になります。
エンジニアにはたくさんの仕事がある
以上、エンジニアには様々な仕事内容があることを解説してきました。実際にエンジニアには多くの業務があるのです。多くの人は驚かれたかもしれません。どれもこれも重要な仕事であり、どれが一番だということは難しいです。
とはいえ、それぞれの業務には特性があるので、様々な分野を横断しながらキャリアを積むということは稀かもしれません。プログラミングができなければアプリケーション開発はできないですし、コミュニケーション能力がなければ上流工程で本領を発揮することは難しいです。
筆者の場合、IT企業に入社して新人研修でプログラミングを学んだあと、本当に少しだけインフラ構築に携わりました。サーバーの結線図を書いたりした程度ですが。そのあとは「保守運用」としてアプリケーションの改修を主に扱い、プログラミングへの理解を深めていきました。その後からはアプリケーション開発を主戦場として、上流工程に片足を突っ込んだりしながら仕事をしています。
筆者のように進むべき道が決まってしまうのがエンジニアの仕事内容になります。人によってはインフラ構築でキャリアを全うする人もいれば、日々の業務をこなす中で頭角を表すことで上流工程に携わることもあります。また、企業によっては特定の業務のみに特化している場合もありますので、企業概要をよく読んで進路を決定する必要があります。