我が家の長女も成長して、働くならどんな職業が良いか?について話をすることがあります。
私は今までプログラマー・システムエンジニアとして、正社員とフリーランスという形態で働いてきましたので、まずは自分の職業であるシステム業界について教えました。
(最近はフリーランスで開発案件を請けながらアフィリエイトの2本柱で生計をたてています)
長女はプログラマーとシステムエンジニアという言葉は知っていましたが、具体的にシステム開発とはどういうもので、プログラマーとシステムエンジニアの両者にはどんな仕事内容の違いがあるのかまでは知りませんでした。
システム関連技術者は手に職をつけられる技術職でもあり、最近はIoTやAIの分野を筆頭にアプリ開発やウェブ開発など、システム関連の技術者は引く手あまたでもありますので、親としては食いっぱぐれずに生きていけるシステム業界について教えておこうと思いました。
そこで今回はシステム業界を支えるシステムエンジニアとプログラマーの違いについて、開発の担当箇所や働く時間の長さなども詳しくご紹介します。
システムエンジニアとプログラマーの違いとは?
システムエンジニアとプログラマーの違いとはその仕事内容にあります。
システム開発は開発フェーズと呼ばれる手順があり、この開発フェーズ毎に担当者がいます。この開発フェーズ毎の担当者を後ほど詳しくご紹介しますが、ざっくりと次の違いがあります。
- システムエンジニア
開発するシステムの全体~詳細を設計する - プログラマー
システムエンジニアの設計した内容に沿ってプログラミングする
システムエンジニアは、顧客からどんなシステムが欲しいのかを聞き、システムの全体から詳細な部分までの設計を担当します。
また、システムが稼働するサーバーやデータベース、ネットワーク周りを構築することもあります。
そして、そのシステムをプログラマーに設計通りに実装してもらいます。プログラマーの作成したシステムをテストして顧客に納品し、運用するところまで持っていくのが仕事です。
フウクマ
システムエンジニアはたくさんの役割があるのね。
プログラマーはシステムエンジニアの作った設計通りに動作するプログラムを作成(プログラミング)します。作成したプログラムを機能的に問題がないかテストも行います。
システムエンジニアをSE、プログラマーをPGと表記することも多いよ。
パパクマ
システム開発フェーズ 仕事内容と担当
システム・ソフトウェアの開発には次のフェーズがあります。フェーズ毎に仕事内容と担当が変わります。
- 要求分析(SE)
どういったシステムが欲しいのか顧客に聞く - 要件定義(SE)
要求分析の内容をまとめる - 基本設計(SE)
システムを何で構成するか決める(サーバースペック、ネットワーク、セキュリティ、開発言語、データベース等多岐に渡る)
※中規模以上の開発ではインフラ専門のエンジニアやデータベース専門のエンジニアが加わることもあります。 - 詳細設計(SEまたは一部をPGが担当)
プログラミングをするための詳細な設計を行う - プログラミング(PG)
プログラミングしてプログラムを作成する - 単体テスト・ユニットテスト(PG)
プログラムがちゃんと単体で動作するかテストを行う - 結合テスト(SE・PG)
複数のプログラムを連携させてテストを行う - システム(又は総合)テスト(SE)
本番さながらに全てのシステムを動作させたテストを行う - 運用テスト(SE)
本番稼働前に顧客に使ってもらい最終チェックを行う - 本番稼働(カットオーバー)
システムが実際に動き出す - 運用
システム稼働後の障害対応やアップグレードなどを行う
フウクマ
開発フェーズってたくさんあるのね。
上記は主にウォーターフォールモデルという上から水が流れるようなソフトウェア開発手法になります。あらかじめ詳細な仕様を決めて、後戻りや変更はしません。企業が内部で使用する大規模なビジネスアプリなどをオーダーメイドで作る際に多い開発方法です。
最近のウェブシステムなどの開発では、アジャイル開発と呼ばれる開発方法が多くなってきています。
- 大まかな仕様を決定
- モックアップシステム(試作品)を作成して顧客へレビュー
- 変更点、改善点などのフィードバックを反映
- これを繰り返し完成に近づける
アジャイル開発は最初に細かい仕様を決めず、臨機応変に顧客の要望に対応できるのが特徴です。システムは開発中に仕様変更が多いものなので、最初から細かく決めてもしょうがない、という思想です。
システムエンジニアはシステムの規模にもよるけど、プログラミングも担当することもあるよ。
パパクマ
アジャイル開発が多くなってきてからは、SEとPGの違いも少なくなってきているように感じます。プログラマーの担当する範囲が増えてきているためです。
また、会社にもよりますが、新入社員として入社後プログラミングをしつつ、じょじょに数年かけて設計などのSEの仕事も覚えていく、という流れが多いです。
その後中堅エンジニアになった頃、金額的メリットや様々な案件へチャレンジしたいという志向などにより、フリーランスに転向する人も最近は増えてきました。
システム業界は3K(きつい・帰れない・給料が安い)って本当?
システム業界は3K(きつい・帰れない・給料が安い)と言うのは本当なのでしょうか?
フウクマ
従来の3K(きつい、汚い、危険)とは違うのね。
これは会社の規模と時期、個人の感じ方によりますがおおむね正しいと思います。
人によって辛さや楽しさの感じ方が違うのですが、働く時間は他の職種に比べて長いという印象です。
短い納期で大量のプログラムを作らなければならない場合は、体力的精神的ともになかなかきつくなります。
そして就業時間が長くなる理由ですが、短納期案件が多い、という理由があります。実際に1年は開発にかかるだろうというシステムの場合でも、なぜか顧客との契約では10カ月後に本番稼働、みたいな案件が多いのです。
その足りない2か月どうするの?と仕事をとってきた人に聞きますが、無視されるか逆ギレされるかのどちらかが多いです(涙)
- この納期じゃないと仕事なんか取れないんだぞ!
- それを間に合わせるのか君たちの仕事だ!
- そんな事言ってたら仕事なくなるよ?
実は、システムのエンジニアは営業さんとのコミュニケーションも大切です。これは他業種もそうではないでしょうか。
そして納期が近づき、いよいよ納期に間に合わなくなってきた場合、予算に余裕があるシステムは追加で人員が投入されます。同じ会社内の他プロジェクトから引っ張ってきたり、他の企業やフリーのエンジニアなどがアサインされます。
予算の厳しい場合(だいたいがこちら)は、気合いと根性(涙)でなんとかしなければならなくなります。
そして、なんとかならないことが多いのですが、そういった場合にはデスマーチと呼ばれる、残業⇒徹夜⇒残業⇒土日出勤⇒点滴⇒残業⇒徹夜・・・というローテーションが発生することもあります。そしてこの時期をきっかけに会社に来なくなる人もいます。
来なくなった人のことを「誰々さんは飛んじゃったか~」なんて表現するよ。
パパクマ
フウクマ
実は体力勝負なところがあるのね。
まあ、実際にデスマーチはそんなにありません。(私の場合、3、4年に1回あるかないかくらいでした)
それにデスマーチの期間はあとから思い返すと、だいたいが話のネタになり面白おかしく語られます。大変な時期を乗り越えた仲間とは、通常よりも固い絆ができることも多いです。
そのため、こういう時期は2K(きつい・帰れない)になります。残業代が多くなるので「給料が安い」は該当しなくなり、忙しくない時期は残業代が出ないので1K(給料が安い)ですね。
おわりに
SEとプログラマーの違いや仕事内容でした!
この業種は常に勉強が必要ですが、逆にスキルアップの勉強が好きならかなりおすすめで、食いっぱぐれることはないでしょう。
どこの会社にもコンピューターオタクな人がいますが、そういう人がコミュニケーション能力もそこそこあるなら天職になり得ますね^^
また、気になる年収についても記事にしました。良かったらご覧ください!
プログラマーとシステムエンジニアの年収!低いの?高いの?SEが暴露!
どのサイトより参考になりました。また、非常に読みやすかったです。
有難うございます(*^^*)
Shinyaさま
嬉しいコメント、ありがとうございます!
とても分かり易い説明でした。自分はまだ学生なのですが、将来SEになるか、プログラマーになるか悩んでます。
あと、このサイトは何と言うテンプレートで作られているのでしょうか?
もし宜しければご回答頂けると幸いです。
まるさま、初めまして!
コメントありがとうございます。
テンプレートはリファインSNOW2です。
これ、使いやすくておすすめですよ~
なるほど。ご回答有難うございます。
今後どちらを目指すか更に迷いました(笑)
あと、リファインSNOWは私も使っているのですがどうやってスマホ版に対応させているのでしょうか?
ご回答頂けると幸いです。
まるさん
リファインSNOW「2」です。
そのため、自動でスマホ対応してくれますよ。