これからIT業界に就職、転職しようと思って企業の募集要項を見ていると、職種としてSE(システムエンジニア)、PG(プログラマー)などと書かれているかと思います。そこでネットで調べてみると、SEの方が上位職のように解説されているかと思います。
しかし、実際の求人ページではなぜか「IT業界未経験OK。SE募集。」のように上位職のような扱いがされていません。
これはなぜなのでしょう。そこでこのページでは、SE、PGそれぞれの定義と、実際に開発現場でどのように区分されているのかについて解説します。
SE、PGそれぞれの定義
SE、PGの定義を知るためには、まず開発工程についてざっくり知っておく必要があります。具体的な開発の流れはプロジェクトによって微妙に異なるのですが、大枠としては以下のようになります。
要件定義 → 基本設計 → 詳細設計 → プログラミング → テスト
細かく言えばテストが分かれていたりコードレビューの工程があるのですが、今回はあまり関係ないので割愛します。気になる方は、ぜひ「V字モデル」などで検索してみてください。画像検索すれば開発工程をV字にした工程図が出てきます。
そのV字モデルをより簡易化したフローが上のものです。
SEの定義
SEは定義上はPGより上位とされ、上流工程を担います。上流工程とは上のフローで言うと「要件定義」「基本設計」が該当します。「詳細設計」も含まれるかどうかは微妙ですが、メインは要件定義と基本設計です。
まず要件定義とは、システムの大枠を決めて資料を作成し、それをクライアントと共有するような仕事です。クライアントによって要件定義の内容は変わってきますが、クライアントもシステムのプロなら細かく話し合うことになり、逆にクライアントがシステムのプロでなければ一方的に説明していくことが多いです。
イメージとしては、会議室に座って資料を配って説明したり、必要なら前に出てパワーポイントなどを使ってプレゼンテーションしていきます。詳細はプロジェクトによっても異なりますが、私がSIerでSEをしていたときの経験から言えば資料を配って席に付いたまま説明していくことが多いです。
なので、そんなに話すのが得意でなくても資料の内容をきちんと説明すればOKです。次に基本設計は、要件定義を噛み砕いてシステムにどう落とし込んでいくのか書いたものです。Excelなどで作成することが多いでしょう。
まだ基本設計の段階では具体的なコードは決めずに、必要な機能や、パーツの大枠だけ書いていきます。
PGの定義
次にPGの定義ですが、PGはSEよりも下の役職とされ、主に下流工程を担当します。下流工程は、上のフローだと「詳細設計」「プログラミング」「テスト」を指します。詳細設計をどちらに含むかは微妙ですが、下流工程の方に入れておきます。
詳細設計からの作業は、上流工程の要件定義、基本設計に基づいて行っていきます。まず詳細設計ですが、これは基本設計書に基づいて細かい機能や、場合によってはコードを記述したものになります。
たとえば業務用システムの基本設計書に「DB(データベース)から社員のIDを取得する」と書かれていれば、DBから必要なIDを選択するロジック、抽出するロジック、その具体的なコード、ループ処理を使う旨とその具体的なコード、などを記述します。
詳細設計書にどのくらい細かく書くかはプロジェクトによりますが、簡単なコードくらいは含まれていることが多いです。場合によっては、詳細設計書に細かく使用するクラス、メソッドなどを記述して、簡単に実装できるようにすることもあります。
次に詳細設計書に基づいてプログラミングを行い、それが終わったらテストしていきます。間にソースコードレビューなどを挟むことが多いですが、それは今回は割愛します。ちなみにテスターと呼ばれる役職が置かれていることもありますが、テスターはPGが作ったプログラムをテストする仕事です。
テスターがいなければ、PGがテストを行います。
実際は定義通りではない
SEとPGの定義について紹介しましたが、実際は全然その通りにはなっていません。まず私が初めてプロジェクトに配属されたとき、役職はSEでした。単に与えられた役職なのでよくわからないまま作業していましたが、作業内容は最初はテストからで、その後少し慣れてきたタイミングでプログラミング、もう少し慣れたら詳細設計、といった感じでした。
そして1年くらい経ったら結局要件定義もやっていましたが、相変わらずテストもやっている状況です。上の定義通りに考えると、PGの作業から始まって最終的にSEとPGの両方の作業をやっていることになります。
ちなみに現場に配属されて何ヵ月か経ってから知ったのですが、そこのプロジェクトにはそもそもPGという役職がありませんでした。次に入ったプロジェクトでは、逆にSEという役職がありませんでした。なぜかPGが何段階かに分かれていて、私は主に要件定義と基本設計を担当していました。
SEとPGの定義は最低限知っておく程度で、それ以上気にする意味がないことがわかります。ちなみにその後PM(プロジェクトマネージャー)という役職にもなりましたが、そのときはマネージメントだけでなくプログラミングもやっていました。
定義はあくまでも目安程度ということです。
役職は気にせずいろいろやると良い
SEとPGは混同されている上にプロジェクトによって使い方がバラバラなので、気にしてもあまり意味がないということでした。そして、肩書きが何であれ工程自体は幅広く担当するケースが多いかと思います。
なぜなら、基本的に人手不足だからです。プロジェクトを統括している企業や担当者からすると、「SEでもPGでもなんでもいいからとりあえず作業やってくれ」といった感じです。役職というよりは「私はプログラマーだからプログラミング以外やりません」といったスタイルの人も中にはいます。
しかし会社員でそのスタンスを貫くのはなかなか難しく、プログラミングだけやっていても待遇的には恵まれないことが多いでしょう。どうしてもプログラミングに特化したいのであれば、会社員よりもフリーランスの方がおすすめです。
フリーランスならプログラミングの仕事を受注すればプログラミングに特化できます。また開発現場に参画した場合も、フリーランスなら契約上役割が明確に決まっています。
とはいえ開発現場に入るなら幅広く担当した方が待遇が良くなりますし、将来的に現場ではなく在宅やノマドのプログラマーでやっていくにしても良い経験にはなるかと思います。
技術志向の強い方やコミュニケーションが苦手な方は、要件定義やその先のマネジメントはあまりやりたくないと考えているかもしれません。必須ではありませんが、せっかくなので経験しておいた方が良いと個人的には思います。
私の場合も幅広い工程をやっておいた経験がフリーランスでも多少の交渉力に役立ったり、トラブル対応の臨機応変さにつながったりしていると思います。技術志向の強い人は将来独立すれば良いと思いますが、せっかくなので会社員のうちに任せてもらえるならマネジメントも経験しておいた方が自分にとってお得かもしれないですね。
無料でプログラミングの勉強から転職サポートまで付いたサービスがある
これからSE、PGを目指される方で、すでに一定のスキルがある方はそのまま就職、転職活動をすれば問題ないかと思います。特に何か提出できるポートフォリオがあれば、よほど面接がひどくない限りはどこかの企業に内定が出るはずです。
逆にまだ実績もスキルも何もないという方は、ある程度勉強してから企業に応募するのがおすすめです。その方が応募できる企業が増えますし、給料やその他の待遇的に良い企業に入社しやすいでしょう。
そこで選択する勉強方法は独学でも良いのですが、東京なら無料でプログラミングスクールを利用できます。なぜ無料なのかというと、プログラミングスクールで勉強した人が企業に入社すると、その企業からスクールにお金が支払われる仕組みになっているからです。
今はIT全盛の時代で、人手不足の企業が多いです。スクールにお金を支払ってでも人材を確保したいのです。またスクールからしても就職希望者個人からお金をもらうよりも、企業からお金をもらった方が儲かります。
個人よりも法人の方が資金力があり、金払いがいいからですね。具体的におすすめのスクールとしては、二つあります。片方は通学できる方、もう片方は完全オンラインです。
1.GEEK JOB |
レッスン形式:通学(東京(四ツ谷、九段下)) |
2.コードキャンプ |
レッスン形式:オンライン(完全マンツーマン) 料金目安:転職コースで転職に成功すれば全額キャッシュバック(入学金10,000円を除く) 学習期間:2ヶ月~6ヶ月 レッスン(チャット)対応日時:全日7時~23時40分 |
どちらも20代の方のみ(CodeCampは転職コース以外は年齢制限なし)となっています。本格的にコースに応募する前に、無料体験ができるので、合うかどうか試してみることをおすすめします。
就職先としてはSIerが多いため、無料のプログラミングスクールはあまり良くない、といった声も実は多いです。どちらのスクールもWeb業界への転職は可能ですが、たしかにSIerが多いのが実態でしょう。
世間からの風当たりの強いSIerですが、私もSIerで一生働くことはあまりおすすめしません。SIerに在籍して客先常駐で働いていたのである意味現場からの意見です。しかしSIerで経験を積むこと自体は良いと思うので、SIer否定派ではありません。
SIerについて興味のある方は以下の記事を見てみてください。
SIerの客先常駐はお先真っ暗?元SIerのSEが考える打開策
ITスキルがあれば、転職でもフリーランスでも自由に生きられるかと思います。私はそこまで高いスキルを持っているわけではありませんが、ある程度でも需要はあるのでやはり業界全体のニーズは大きいのでしょう。
ただし、業界の変化が激しい分一つの企業に在籍していれば一生安泰というわけではありません。これはあくまでも私の意見ですが、IT業界を選択するのであれば、年功序列や終身雇用を考えるのではなく、スキルを伸ばして自由度の高い人生を歩むことをおすすめしています。