システムエンジニアってどんな仕事?
プログラマーとどう違うの?
プログラミング教育が必修化になり、SEやPGの職業が注目された今、この違いについてわからない、教えて欲しいという質問が後を絶ちません。
今回はそういった人たちのために、システムエンジニア(SE)とプログラマー(PG)という職業についてをわかりやすく解説します。
システムを作るという仕事
システムエンジニアとプログラマーがどういった仕事をしているのか知るためにも、まずはシステムを作る流れを簡単に説明します。
- 要件定義
- 設計
- コーディング
- テスト
大きく分けるとこの4工程になります。
システムの規模や仕様によって、もっと細かく分けられたりすることもあり、それによって必要な業種が設けられたりすることもあります。
それでは、1つずつどういった作業をしているのか見てみましょう。
要件定義
例えば、業務システムを作りたいという依頼があれば、クライアントにどういった業務システムが欲しいか聞かなければなりませんね。
ヒアリングをして、どういったシステムにするかを提案して、互いに完成図を描いていきます。
このように仕様書をつくっていく作業が要件定義にあたります。
もし要件定義の時点で、クライアントの要望がしっかりと汲み取れていなければ、完成間近になって1から組み直さなければならないようなことが起こり得ます。
そのため、システムを作るための知識はもちろん、コミュニケーション能力が問われる部分でもあります。
設計
クライアントが求めているシステム像を描けたら、次はプログラミングを進めていくために必要なシステムの設計をしなければなりません。
使用するサーバーの構成や、データを保存するデータベースの構成など、実際にプログラムを動かすために必要なものをどういった使い方で、どう繋げるかなどを決めていきます。
プログラムが動くことでかかる負荷を計算したり、導入する機能を想定して考えていかなければなりません。
ここで作成した設計書を元に、コーディングを進めていくことで、複数人で作業をしてもプログラム同士を合わせたときにも不具合が起きないようにします。
なので、もしこの設計が甘ければ、要件定義と同様に、作り込んでしまってから再度作り直すようなことが起こってしまいます。
コーディング
多くの人が思い描くプログラミングという仕事は、このコーディングの部分にあたります。黒い画面にプログラムのコードを打ち込んでいく作業です(黒い画面だとは限りません)。
前工程で作られた設計書を元にしてプログラムを打ち込んでいくので、言われたようにやるようなイメージがあるかも知れませんが、もちろんプログラミングの知識がなければできません。
料理店であれば、オーナーシェフが作ったルセット(レシピ)を元に、現場のシェフたちが調理をするようなイメージになります。
テスト
コーディングが終わればテストが始まります。
実際に打ち込んだプログラムが正しく機能するか、エラーやバグが出ていないかを細かくチェックする作業です。
想定される動きはもちろん、無茶苦茶な入力をしたときにも正しい反応を返すことができるかなど事細かく行なうため、かなりの作業時間と人員を要することになります。
銀行のシステムなどであれば、このテストだけに数ヶ月、数百人の人員を導入することがあります。そうすることで、致命的なものから細かいものまでエラーを徹底的に排除していきます。
システムエンジニア(SE)とは
どういったシステム内容にするのかを考え、そしてそれを取りまとめるのがシステムエンジニアの仕事です。他にも、システム導入後の保守管理や、営業に関わることもあります。
大企業など、規模の大きいシステムを導入する際は、システムエンジニアたちを統括するようなプロジェクトマネージャーという役割が設けられていることもあります。
仕事内容について
では、前項で説明した仕事内容を参考に、システムエンジニアの仕事範囲を見てみましょう。
- 要件定義
- 設計
- (コーディング)
- テスト
会社や業務規模によっても異なりますが、システムエンジニアはシステムを作る上でほとんどの工程に関わります。
大企業のシステムエンジニアであればコーディング作業は携わらないことが多いようですが、中小企業であればコーディングも担当するようなことも少なく有りません。
システムの構成を考えたり、機能の導入を提案したりと、システムそのものを理解しておく必要があります。
導入で少し説明しましたが、営業をする際に専門的知識が必要になる場面があれば、システムエンジニアが立ち会うようなケースもあります。
また、システムは納品してからも保守が必要になるのがほとんどなので、アフターケアの場面でも活躍しています。
プログラマー(PG)とは
実際にプログラミングをするのが、プログラマーという仕事です。
プログラミング言語をコンピュータに打ち込んでいき、コンピュータに指示を出すことでシステムの中で起こっている動きを作り上げていきます。
仕事内容について
仕事内容を例に、プログラマーの仕事範囲を見てみましょう。
- コーディング
- テスト
この2つがプログラマーの主な仕事です。コーディングには時間がかかるため、そこに一点集中で役割が与えられているのがプログラマーです。
テストに関してはシステムエンジニアと協力して行なうことがほとんどです。
コーディングとは、その名の通りプログラミングのコードを入力する作業です。
中にはコーダーと呼ばれる職業もあり、WebプログラミングであればHTMLやCSSという見た目に関わる部分を担当します。
プログラマーは、システムの内部である動的な部分を担当することがほとんどです。使う言語についても会社やシステム、用途によって様々で、PHPやPython、JavaやJavaScriptなどが一般的に取り上げられます。
小規模なシステムや会社であれば、コーダー業務も含めてプログラマーが担当するケースも少なく有りません。
SEとPGを比較する
それでは、システムエンジニアとプログラマーという職業について、様々な部分を比較してみましょう。
仕事内容とスキル
各仕事内容から、システムエンジニアが枠組みを作り、プログラマーが中身を作っていることがわかります。
上下関係を付けるのはあまり良く有りませんが、システムエンジニアの方がシステム全体を捉えて置く必要があり、そのシステムの根幹を決める立場にあることから、一般的にシステムエンジニアの方が上位職と見られています。
また、プログラミングの知識がなければ、どういったシステムが実現できるのかが提案できないため、ある程度知識や仕組みを身に着けておかなければ成り立ちません。
また、クライアントと直接会話する機会があるため、コミュニケーションスキルが求められることもあります。
プログラマーに関しても、上流工程と呼ばれる設計部分や、使用されているサーバーに関する知識などがあることで、実際にプログラミングをしていく中で役立つことはありますが、会社によっては「あれば良し」とされることがあります。
言語の知識については決まりがなく、勤めている会社や、担当している業務で使われている言語のみが求められることになります
年収の差はどれくらい
これも会社によって異なりますが、システムエンジニアの方が50万〜100万程度高い傾向にあります。
もちろん経験年数によってもことなるため一概には言えませんが、システムエンジニアの業務範囲の中に、プログラマーの業務範囲が含まれている以上、これは当然なことなのかも知れません。
PGからSEへのキャリアアップ
プログラマー35歳定年説というものがあります。
これは、プログラマーとして働いていられる期間を表しているわけではなく、プログラマーからシステムエンジニアへのキャリアアップをすることや、システムエンジニアに転職することからそう言われています。
プログラマーとして活躍してきた人の多くは、経験を積んでいくとシステムエンジニアとして働くことを希望します。
年収はもちろん、仕事のやりがいとしても業務全体に関われるシステムエンジニアへの憧れが強くなります。同じ職場でその望みがかなわない場合は、転職するケースも少なくなりません。
会社によっては、キャリアアップ制度を導入しているところもあり、IT化していく社会ではこの需要は年々高まってきています。
どちらを選ぶべき
プログラミングの知識が全く無い未経験の状態から目指すのであれば、まずはプログラマーとしての業務を覚える方が良いでしょう。
なぜなら、システムエンジニアとして職についても、そこでプログラミングの知識が求められることになるからです。
独学や趣味でプログラミングをしていた人で、ある程度知識が身についているのであれば、システムエンジニアという職に最初からチャレンジするのももちろん選択肢のひとつになります。
たまに勘違いをしている人がいて、プログラミングには自信が無いからシステムエンジニアを目指すというケースがあります(自分の周りにいました)。
もちろん、そういった人材でも歓迎しているような企業はあります。プログラマーという業務には一切携わらず、営業などをメインにおいているような場合です。
大企業では、プロジェクトの規模から上流工程のみに集中して、プログラミングは触らせず営業や設計部分に専念することは少なく有りませんが、これから始めるのであればプログラミングの知識はある程度身につけた上でシステムエンジニアを目指すことをおすすめします。
まとめ
いかがだったでしょうか。
今回は「システムエンジニアとプログラマーの違い」についてを解説しました。
プログラミング学習などが普及する今、「〇〇はエンジニアじゃない」などと言われることもありますが、実はシステムエンジニアという職業は、明確に何かをできなければいけないと決まりがあるようなものでもありません。
プログラミングをする上では、サーバーを準備する必要があり、今では素人でも運用できるようなレンタルサーバーが普及しているため、専門知識がなくても動かすことができます。
だからといって、それがシステムエンジニアではないとは限らないのです。
これからシステムエンジニアやプログラマーを目指す人は、ぜひ参考にしてくださいね。