システムエンジニア、プログラマーとしてどのようにステップアップしたら良いか、実経験や周りのエンジニアを見て思うことを紹介します。
中小の IT 企業と、中堅・大手企業では、そもそも求められている人材が異なるので、最初から担当する作業も違いますが、システムエンジニアのステップアップとして知っておいた方が良いことです。
それぞれの目指す道はひとつではなく、日々の業務の中で自分の進みたい道が少しずつ見えてくると思うので、初めからひとつだけの目標を目指すのではなく、コツコツと知識を蓄えて幅広い視野で柔軟に動けるようにしておきましょう。
もし何か違うと感じたら「今まで経験してきたこと」、「これからやりたいこと」を見直して、目標を変えるのも良いと思います。
初心者 (入社 ~ 1 年程度)
どんなに年数を重ねたスーパーエンジニア、天才プログラマーでもはじめは初心者です。
最初の 1年間は見習い期間だと思って、「業務の進め方」や「システム開発の空気」を感じましょう。
この記事では、「システム開発の工程」や「職種」が出てきますので、まだ詳しくない方は、以下の記事も合わせてご覧ください。
まずはプロジェクトに参加すること
どこの会社でも入社から数か月は研修期間がありますが、研修期間を終えるとどのようなプロジェクトに参加したいか聞かれることがあります。
研修期間では社会人としてのビジネスマナーや、初歩的なプログラミング程度しか勉強しませんので、実践に投入されるときにはほとんど役に立ちません。
ここでは、まずはどんなプロジェクトでも良いので参加することが大事です。
中小企業では、自社開発等でプロジェクトを抱えている場合を除き、中堅、大手 SIer、ベンダーの下でプロジェクトに参加することになります。
つまり、別会社の面談を受けてプロジェクトに参加する資格があるか審査されるわけです。
とはいえ、初心者である限り経験を積んだ他のエンジニアに勝てる要素も少なく、なかなかプロジェクトが決まらないことが多いです。
変に特定の業種や職種にこだわっていると、経験を積めないまま月日が経過してしまい、会社にも自分にも良いことがありません。
特に一番初めのプロジェクトを決めることが難しく、一度でも他のプロジェクトを経験しているだけでも全然違った結果となります。
ちなみに、初心者の場合 (経験者でも同じですが)、面談では「コミュニケーションが取れるか」が結果を大きく左右します。
下を向いてボソボソ話す人よりも、相手の目を見てハキハキ話す人の方が相手に与える印象がはるかに良いので採用される可能性が上がります。
初心者に任される作業内容
初心者のうちは、単体テストや結合テストのテスター業務や、障害対応、もしくは難易度の低いメンテナンス画面、既存機能の改良・改善作業となります。
ここでは、先輩エンジニア、プログラマーが作成したプログラミングを見ることもできますので、どのようなプログラムを組んでいるか参考にできます。
ちなみに、プログラミングには推奨される記述方法は存在しますが、正解はひとつではありません。
いろいろなプログラムや設計書などを見て、知識を蓄えましょう。
目標 : システム開発の空気感をつかむ
プロジェクトに参加すると、研修期間とは違った空気を感じることが出来ます。
はじめは自分のことで手一杯な日々が続くと思いますが、少しでも余裕が出来たら周りの状況やプロジェクト内での指示系統などを観察してみてください。
周りの人がどのような作業、役割をしているか徐々にわかります。
プロジェクトごとに異なることも多いですが、プロジェクトに参加している感覚だけでもつかめれば十分です。
初級者 ( 1 ~ 3 年程度)
1 ~ 3 年経つとある程度業務に慣れてくる頃だと思います。
多ければプロジェクトも数か所経験し、システム開発の空気感は把握できているのではないでしょうか。
初心者の間はあまり難易度の高いことは要求されませんが、初級者レベルになると徐々に難易度の高いことも要求されるようになります。
初級者に任される作業内容
まだシステムエンジニアというよりはプログラマーになるので、詳細設計や製造、単体テスト仕様書等の作成となります。
ここでは、作成済みの基本設計書からプログラミングするために必要な処理フローや、データの取得方法などを考えて詳細設計書を作成することになります。
以下の考え方が参考になるので、合わせて参考にしてください。
目標 : システム内部の構造をつかむ
詳細設計を担当するようになると、アプリケーション内部の構造がわかるようになってきます。
担当する画面や機能の処理フローや、各処理でのデータの受け渡し、登録、更新など、基本設計書の内容から詳細設計書を作成できるようになりましょう。
また、プログラミングに関しての知識もかなり向上しているので、技術系のサイトを見れば解決できるくらいのプログラミング知識を身につけましょう。
中級者 ( 3 ~ 5 年程度)
アプリケーションの構造、プログラミング知識も付いた頃から、お客様や外部システムの担当者との打合せに参加するようになってきます。
基本的には、打合せに参加しても前面に立って進めるのではなく、仕様の把握や、疑問点、問題点を確認するために参加します。
徐々にシステム開発の上流工程に参加するようになるため、初級システムエンジニアといったところでしょうか。
中級者に任される作業内容
中級者レベルになると、お客様の業務要件から作成するシステムに必要な画面や帳票などを決定する基本設計を担当することになります。
基本設計を進めるうえでお客様に確認しなければならない情報を洗い出し、お客様との打合せで決定します。
また、画面や帳票の情報から必要なデータベース構造、外部システムとの連携や、プログラマーへの仕様説明など、内部的に必要なことも重要な作業となります。
目標 : お客様の業務内容をつかむ
中級者レベルになると、システム全体の構造が見えてきます。
システム全体の構造を理解したところで、次はお客様の業務内容を理解して業務フローや業務要件を考えられるようにしましょう。
業務内容はお客様の業種によっても、システム化する業務によっても全く異なります。
いち早くお客様の業務を理解し、どのような構造のシステムを開発すれば良いか考えておくと良いと思います。
ここまでくれば一人前のシステムエンジニアとしてもう少しです。
上級者 ( 5 ~ 10 年程度)
ある程度の業務要件を把握し、システム全体を見れるようになれば初級エンジニア卒業と言っても良いでしょう。
お客様の要望を聞き、必要とするシステムを提案したり、アプリケーション内部の構造を提案したり、いろいろなところで活躍する場面が増えます。
システムエンジニアからプロジェクトマネージャーへの転向を考えるのもこの時期が良いと思います。
上級者に任される作業内容
ここまでくると任される作業は多種多様となります。
お客様との打合せで要件や設計をまとめたり、場合によってはプロジェクト内のチームを任されたりもします。
また、小・中規模システムになると、システム全体のスケジュールなどの管理業務も増えたりします。
目標 : 進む道により目標は異なる
ここからの目標は進みたい道により異なってくるため、積み重ねてきた経験から自身で目標を決めましょう。
プロジェクトマネージャーを目指すも良し、データベースやセキュリティのスペシャリストを目指すも良し、お客様側に立ってコンサルタントを目指すも良いと思います。
目指す方向によっては今の会社ではできないこともあるので、転職でさらなるキャリアアップや、フリーランスという道もあります。
まとめ
システムエンジニアのステップアップを紹介しました。
参加するプロジェクトや個々の技量で全く異なることになりますが、少しずつステップアップした方がプロジェクト全体や個人の成長には良いと思います。
プロジェクトによってはスケジュールが厳しく残業が多いプロジェクトや、人間関係の良くないプロジェクトもたくさん存在します。
また、いきなり難易度の高い工程を任されて体調を崩す人もたくさん見ています。
もし参加したプロジェクトや作業が自分に合っていないと感じたら、自分ひとりで考え込まず、自身の会社の上司や営業担当に相談してください。
上司や営業担当に相談しても解決しない場合は、転職エージェントなどの外部組織を頼っても良いかもしれません。
大事なことは「一人で悩まないこと」です。
世の中にはたくさんのプロジェクトがあり、職種もシステムエンジニアだけではありません。