エンジニアの下流工程とは?上流工程に上がるためのコツも解説|就職・転職者職業ガイド
IT業界を本音で語る「ユニゾンキャリアの編集部」の真心です。
本記事のトピックスはこちら!
- ・エンジニアの下流工程って何?
- ・エンジニアの下流工程はどんな仕事をやるの?
- ・エンジニアが下流工程から上流工程にいくにはどうすればいい?
エンジニアの仕事内容は、担当する工程によって「上流工程」と「下流工程」に分けられますが、未経験からエンジニアになった人は下流工程からスタートするのが一般的です。
下流工程で幅広い業務経験を積んで上流工程へ進むことが、エンジニアのキャリアアップの最短ルートといえます。
一方で、「上流工程に行きたいのに、下流工程からなかなか抜け出せない・・・」と悩む人は少なくありません。
事前に読みたい⇒【簡単図解】エンジニアの仕事内容をわかりやすく解説!工程・職種・企業の3要素からみる仕事の違い|就職・転職者職業ガイド
目次
1.エンジニアの工程は「下流工程」と「上流工程」
エンジニアの仕事は、大きく「上流工程」と「下流工程」に分けられます。
上流工程と下流工程の大きな違いは、経験やスキルを持った人の現場判断が必要になるかどうかにあります。
下流工程にはコーディングやテスト、運用・保守などがありますが、未経験者を始めとした経験が浅い人でもこなせる業務が中心です。
ドキュメントや現場の指示をもとに、スキルを発揮する仕事内容になっています。
一方の上流工程には要件定義や設計が含まれており、クライアントとの綿密な打ち合わせや連携、システム全体を俯瞰する視点や判断力が必要なものです。
一昔前のIT業界においては、「35歳定年説」なる考え方が広く囁かれていました。
IT人材不足が深刻化する現在、35歳を過ぎたエンジニアが現場で働くことは珍しくなく、今となってはずいぶんと時代錯誤な考え方のようにも思えます。
しかし、「35歳定年説」には、「エンジニアとして経験を積んだなら、上流の仕事内容へシフトチェンジするべきだ」という意味が含まれています。
コーディング・テストといった下流工程は若手に任せ、経験やスキルを積んで上流工程を目指すことこそが、将来にわたって高いキャリアを築くエンジニアの道筋です。
現在、下流工程をこなしているエンジニアも、上流工程へ進めるようスキルアップを目指すのがおすすめです。
2.エンジニア未経験者は下流工程からスタート
未経験からエンジニアになった人は、下流工程から入るのが一般的です。
現場でシステムエンジニアから設計書や指示をもらい、コーディングやテストに従事します。まずは現場の作法や雰囲気に慣れ、エンジニアの仕事を一通り経験する必要があるからです。
現場特有のルールに慣れるまで時間がかかったり、チームメンバーの温度感やスピード感に付いていくのに手間取ったりします。
このような環境下で揉まれることで、経験、判断力、対応力が養われていきます。
多様な現場を経験し、的確な現場感覚や判断力を身に付けた後、次のステップとして上流工程へ進んでいきます。
下流工程で意欲的にスキルを磨くことが、先へ進めるかどうかの分かれ道となるのです。
なお、新卒でエンジニアになった人の場合は、上流工程から入ることもあります。しかし、転職者の場合は、下流工程で下積みをして上流工程へいくのが一般的です。
3.開発エンジニアの下流工程
開発エンジニアの下流工程について見ていきます。開発エンジニアの下流工程には、コーディング、テスト、運用という仕事内容が含まれます。
3-1.コーディング
システムエンジニアから渡される設計書や指示書などをもとに、プログラミング言語を用いてコードを書いていく作業です。
フロントエンドとバックエンドなど、それぞれの分担に分かれ、リクエストやレスポンス処理、データベースアクセスやログ出力などの処理を記述していきます。
個別のコーディングに入る前に、アプリケーション全体の構造(アーキテクチャ)やディレクトリ構成などをしっかりと確認しておくとよいです。
システム開発現場の多くでは、コーディングの際にGit(ギット)を用いたバージョンアップ管理が行われます。
Gitとは?
プログラムのソースコードなどに対し、「誰が」「いつ」「どのような」変更を行ったのかといった履歴(バージョン)を管理するツールです。
Gitを利用したWebサービスの代表的なものとして、GitHub(ギットハブ)が挙げられます。
複数人でコーディングを行う際には、ソースコードを予期せず上書きしてしまう、あるいはされてしまう可能性があるため、これを予防する手段としてGitが採用されています。
未経験からプログラミングスキルなどを習得する際には、Gitの基本的な使い方や基本コマンド、GitHubを利用したブランチの切り方やプルリクエスト、マージ方法なども学習しておくとよいです。
自動テストを実施する場合には、コーディングと並行して単体テスト・結合テストなどのテストコードも記述していきます。
3-2.テスト
コーディングと並行、あるいはコーディングの後で行われる業務がテストです。
一般的に、テストには以下のような種類があります。
テスト名 |
テスト内容 |
単体テスト(ユニットテスト) |
プログラム内の機能が想定通りに動くか確認するテスト |
結合テスト |
プログラムのさまざまな機能が連携および相互作用できているかを確認するテスト |
総合テスト |
アプリケーションや機能などをすべて組み合わせて実施するテスト |
テストの流れは以下の図のようになります。
テストの方法として、テストシナリオを作成してテスター(テストを行う人)が実際に「アプリケーションを動かして手動で確認する方法」と、「テストコードなどによって行う自動テスト」の二種類があります。
自動テストは、テストの工数や人員を削減できるだけでなく、コードの安全性も高まることもあって、Web系開発を行う企業で多く採用されている方法です。
一方で、自動テストだけではテストケースを十分にカバーできないことが多く、コーディングとは別でテストシナリオを作成したテストも行われます。
テストケースでは、ケースごとの表などを作成して一つずつ検証を進めていきます。
3-3.運用
システム開発は、作ってしまえば終わりというものではありません。
本番リリースの後は、稼働したシステムが正常に動いているか、利用しているサービスにアップデートがないかなどを常時確認する運用という業務が待っています。
システムにトラブルが起これば原因を究明し、改修・改善に向けたスケジュールを立て、実際に改修も行います。
そのほか、システムを監視するモニタリングツールを導入したり、アクセスログ・エラーログなどを分析するための分析ツールを導入したりすることもあります。
新しい機能の追加、修正といった細かい作業も発生しますが、ゼロからコーディングを行う作業と比べると難易度が低いため、未経験からエンジニアになった人に任されることも多いです。
トラブルはいつ発生するかは分からないため、運用の業務の忙しさにはムラがあります。
また運用は頑張っても努力が外の人に見えにくいため、評価につながりにくい、やりがいを感じられないといった不満があちらこちらで聞こえるのも事実です。
とはいえ、運用はシステムの要です。
ここを疎かにしたことで大規模トラブルに発生したシステムは数知れず、「縁の下の力持ち」としてかなり重要な役割を担っている業務でもあります。
4.インフラエンジニアの下流工程
インフラエンジニアの下流工程について見ていきます。インフラエンジニアの下流工程には、保守、運用、監視という仕事内容が含まれます。
4-1.保守
保守はインフラに関する不具合やトラブルが発生した際に対応したり、トラブル対応を施した部位に対して改善案を作成・構築したりする業務です。
インフラエンジニアの作業領域においてトラブルが発生しうるパターンは、大きく分けて以下の3つです。
不具合のタイプ | トラブル例 |
ハードウェアの不具合 | システムボード障害、メモリが認識されないトラブル、ネットワーク機器の障害など |
ソフトウェアの不具合 | OS、バックアップソフトウェア、DBソフトウェアなどの障害 |
組み合わせによる不具合 | サーバーとサーバー、ネットワーク機器の組み合わせなどによる障害 |
インフラの不具合やトラブルが発生した際には、保守業務としてまず影響範囲と原因を特定し、原因に応じた対処を検討します。
影響範囲が大きい場合には、インフラを利用している業務に支障が出ないよう関係各所と連携しながら対応スケジュールを立てたうえで、多くの場合には早朝や深夜などの業務時間外に対応を行います。
またインフラに関して不具合が起こる可能性のある部位、課題がある領域に関しての改善策や改善計画を考案するのも保守の仕事です。
システムへの負荷を考慮しつつ、最大のパフォーマンスを発揮できるよう努める重要な役割を担っています。
4-2.運用
システムを構築する機器はモノであり、常に寿命や故障が発生するリスクが潜んでいます。
そのため、インフラやシステムのサービスが開始した後は、運用担当者がシステムを適切に稼働し続けていく任務に当たります。
運用の仕事は、具体的に以下のような内容です。
- ・サーバーやネットワーク装置、回線などを冗長化
- ・障害ポイントの特定のための定期的なログ収集
- ・障害時のリカバリーのための定期的バックアップ
インフラ領域における「冗長化」とは「多重化、二重化」といった意味を持ち、サーバーや機器など、同じ機能を持ったものを複数台用意することを指します。
サーバーやネットワーク装置、回線などを冗長化しておくことで、インフラが不慮の事故や障害によって停止した場合にも、自動で代替のものへ切り替えられ、被害を最小限に抑えることが可能です。
システム運用においては、定期的なバックアップも非常に重要です。
データベースのデータはもちろん、アプリケーション内のイメージファイルやアクセスログなど、業務に重要な情報を障害時でも迅速にリカバリーできる体制を整えておく必要があります。
4-3.監視
インフラ領域に何らかのトラブルが発生した際に、障害ポイントをいち早く検知するためには、常時システムを監視しておく必要があります。
監視には監視用ソフトウェアをインストールしますが、それぞれの監視対象を登録しておくなどの事前準備も必要です。
一般的に監視を行う項目として、以下のようなものが挙げられます。
監視ソフトウェアを設定していくらシステム側の異常を検知できたとしても、システム管理者が異常に気づける環境を整備しておく必要があります。
そのため監視業務では、監視ソフトウェアが異常を検知した際にメールなどで通知したり、コンソールや画面などで異常をアラート表示したりする仕組みを導入するといった対応も必要です。
5.下流工程から上流工程へいくには?
未経験からエンジニアになった人の中には、「なかなか上流工程にいけない」と悩む人も少なくありません。
下流工程から上流工程へいく方法について見ていきます。
5-1.実務経験の目安は約3年
現場で実際に受け持つ仕事の内容にはよりますが、一般的に上流工程へいくためには約3年の経験が必要といわれています。
技術職であるエンジニアのスキルや経験は、一朝一夕では身に付かないものです。実務として認められるためには、それなりに長い期間が必要であるということに他なりません。
また、開発エンジニアとインフラエンジニアのうち、下流工程から上流工程へ行きやすいのは「インフラエンジニア」です。
開発エンジニアは指示が上から来るのに対し、インフラエンジニアは指示やフィードバックが下から来ることが多く、下流工程にいながら上流工程にも関わりやすいためです。
未経験から早く上流工程を目指したいなら、インフラエンジニアをおすすめします。
実務経験3年というのはあくまでも目安です。
3年間の経験があったからといって、いたずらに時間を過ごしただけでは、いつまで経っても上流工程へは上がれません。
5-2.資格取得はキャリアアップに有利
上流工程へいくための実務経験は3年必要とお伝えしましたが、この3年の壁を短縮するのに有効な方法があります。それが、「資格取得」です。
実務経験のない未経験エンジニアであっても、難易度の高い資格を早い段階で取得しておけばスキルの証明になるため、キャリアアップに有利に働きます。
実際に弊社で担当した事例では、転職後1年の間に3つもの資格を取得して上流工程へ進めたという方がいらっしゃいました。
資格取得が上流工程への意欲を示すものと高く評価された事例といえます。詳細はこちら⇒IT・Web・ゲーム業界専門の転職・就活に成功した方のインタビュー
一方で、現場で働くエンジニアからすれば、どれほど立派な資格を持っていたとしても大して意味はありません。
現場ではスキルがすべてであり、入ってからどのように行動するかが大事であることを覚えておいてください。
5-3.転職で上流工程を狙え
技術力で勝負しているエンジニアにとって、転職はそれほど珍しいことでもありません。
スキルを試すために数年ごとに転職を繰り返しているという人もいるため、上流工程を目指すために転職するというのも一つの方法といえます。
あなたが新しい技術やスキルを習得したとして、それが今の会社では評価されなかったとしても、別の会社からすればとても魅力的なものかもしれません。
このような理由から、転職することで上流工程を目指しやすくなるのです。
今の会社でのスキルアップに限界を感じたなら、別の会社への転職を検討することをおすすめします。
ユニゾンキャリアでは、スキルを磨ける企業への転職支援を行っています。
「今のキャリア」だけではなく「次どう動くか」を大切に一緒にキャリアプランを構築します。
1歩ではなく3歩先の転職体験をしませんか?ご相談から内定まで「完全無料」です。
\本気のITエンジニア転職支援サービス/ ※同意なく進めることはありません!
このようなことで
悩まれています。
簡単30秒
まずは気軽にWebで無料相談
こんにちは!
はじめに職歴をお聞かせください。
この記事の監修者
エンジニア
大学卒業後、新卒で不動産会社に就職。その後23歳で開発エンジニアにキャリアチェンジし、3年間大手Slerにて様々な開発に携わる。その後、インフラストラクチャー企業にて人材コンサルタントとして経験を積み、株式会社ユニゾン・テクノロジーを創業。現在の代表取締役