こんにちは。
IT業界の求人募集を見ていると、
- プログラマ(PG)
- システムエンジニア(SE)
と分けて記載されていることがよくあります。
小規模の開発会社では、経験が浅いとプログラマ、経験が長いとシステムエンジニアという区別になっていることがよくあります。
しかし、本来、プログラマとシステムエンジニアは、行う仕事が違うのです。
プログラマは、プログラミング言語を用いて、システムやアプリケーションを作成するのが仕事です。
一方、システムエンジニアは、システム開発の上流工程(要件定義、基本設計)を行うのが仕事です。
大規模な開発会社になると、この辺はきちんとしていて、システムエンジニアが顧客と仕様の調整を行い、プログラマが設計、製造、テストを行うようになっています。
ただし、大規模な開発会社の場合、システムエンジニアは正社員が行い、そのあとの工程は、下請け企業や派遣社員が担うことが多いようです。
プログラマとシステムエンジニアの違い
導入部にも書きましたが、プログラマとシステムエンジニアは、違う仕事です。
以下で、それぞれ、詳しく書いていきます。
プログラマ
プログラマは、システムをプログラミング言語を使って、どうやって動かすかを考えます。
つまり、仕様を、機能ごとに細分化し、それぞれの機能がどのように関連するかを考える必要があります。
また、それぞれの機能も、クラスをどう分けるのか、メソッドはどうするかと細分化し、それぞれのメソッドの処理を決めていきます。
ここまでが、詳細設計で行う作業です。
次に、製造を行います。
詳細設計に基いて、プログラミング言語で製造を行なっていきます(ここが、一般的にプログラミングと言われる作業ですね)。
製造の次は、単体テスト(ユニットテスト)を行います。
製造したコードが詳細設計に記載された通りに動作するかを確認する作業です。
単体テストが終われば、他の機能と合わせて、要求定義にあった動作をするかをテストします。
これが結合試験です。
以上が、プログラマの仕事の大きな流れです。
システムエンジニア
システムエンジニアは、システム開発の上流工程を担います。
上流工程とは、要件定義をまとめることと、基本設計を作成し、お客様の合意を得る作業になります。
要件定義は、お客様の要望をヒアリングし、システムがどうあるべきかを明文化していきます。
>>> 要件定義については、こちらでも詳しく説明しています。
そして、システムの全体像や画面などを作成し、ここもお客様の合意を取る必要があります。
なので、常にお客様とコミュニケーションを取る必要があります。
また、下流工程(詳細設計、製造、テスト)の開発が、順調に進んでいるか進捗の管理をするのも、システムエンジニアの仕事になります。
開発の進捗をお客様に報告し、スケジュールの管理を行なっていきます。
つまり、常にお客様と打ち合わせを行うのが、システムエンジニアの仕事になります。
必要なスキル
では、次に、プログラマとシステムエンジニアに必要となるスキルについて書いていきます。
プログラマ
一般的に、プログラマには、論理的思考が必要と言われています。
しかし、実際には、論理的思考だけては不十分です。
一度、作成されたシステムは、必ず追加や変更が発生します。
プログラマは、そんな追加や変更が容易に出来るようなソースコードを作成する必要があります。
そのため、機能を細分化したり、ソースコードの可読性、変更容易性を常に考えながら詳細設計を行う必要があります。
そのほかにも、フレームワークを使用する場合は、使用するフレームワークで用意されているクラスを理解する必要もあります。
つまり、プログラマには、論理的思考の他に、機能を細分化するスキル、ソースコードを整理するスキル、フレームワークの説明書を解読するスキルが必要になります。
なお、フレームワークの説明書は、英語に記載されていることが多いので、英語のリーディング力も必要になります。
システムエンジニア
システムエンジニアに必要なスキルは、コミュニケーションのスキルです。
お客様の業務はさまざまです。
なので、お客様の業務をコミュニケーションを取りながら理解し、どのようなシステムを開発することで、お客様の業務がどのように楽になるのかを理解する必要があります。
お客様の業務を理解した上で、システムエンジニアから、どのようなシステムにするかを提案することも必要となります。
そのようにして作成された要件定義が、見積りで出したコストで作成可能かを検討することも、システムエンジニアの仕事になります。
もし、コストオーバーになるようでしたら、機能を削減したり、追加見積りを提出しコストオーバーにならないようにする必要があります。
つまり、システムエンジニアは、コミュニケーションのスキルがとても重要になります。
今後必要となるのは?
近々で必要となるのは、AIやブロックチェーンが扱えるプログラマです。
AIもブロックチェーンも、とても複雑なフレームワークを使用することになります。
主要なフレームワークがあるので、一見難しくないように見えます。
しかし、細かく見ると、さまざまな機能があり、これまでの知識・経験では理解できないことがたくさんあります。
なので、AIやブロックチェーンを扱えるプログラマは、これから重宝されるのではないでしょうか。
もちろん、しばらくの間は、今までと同じように、ホームページや基幹システムの開発は続くと思いますよ。
そして、少し未来の話なりますが、将来、AIが自動でシステム開発ができるようになると、プログラマは不要になるかもしれませんね。
そうなると、システムエンジニアのみが必要となるのかもしれません。
求人情報を見る時のコツ
では、ここからは、これからプログラマやシステムエンジニアとして働きたいと考えている方向けに、求人情報をどう見るかを書いていきます。
求人情報を見ると、経験の浅い方向けには「プログラマ募集」、即戦力が欲しい場合だと「システムエンジニア募集」と書かれていることが多いです。
でも、そこで使われているプログラマやシステムエンジニアは、本来の意味ではない場合が多いです。
大規模な企業(社員数が500人以上)の場合は、本来の意味でのプログラマやシステムエンジニアを募集していることが多いです。
でも、求人情報を出している企業の大半は中小企業です。
中小企業の場合、人数が少ないために、システムエンジニアがプログラマの仕事をしたり、プログラマが要件定義を行なったりすることはよくあります。
なので、中小企業に応募する場合は、プログラマの募集であろうと、システムエンジニアの募集であろうと関係ありまん。
また、中小企業の場合、システム開発会社であっても、SES(システム・エンジニアリング・サービス)を事業としている企業が多いです。
※ SES(システム・エンジニアリング・サービス)事業とは、顧客企業に常駐しシステム開発を行う作業です。作業指示は、客先のプロパーが行います。チームで客先へ常駐することもありますが、ほとんどが1人で客先へ常駐することが多いです。
SESで常駐する企業は、大手企業が多いです。
そのため、下流工程の作業が多くなり、上流工程や納品などの経験ができないというのがあります。
中小企業で請負開発を行なっている場合は、システム開発の上流工程から下流工程、納品までを経験できるので、経験を積むにはとても良い環境だと思います。
また、中小企業の場合、上司との距離が近いため、柔軟な対応が出来る点もメリットかと思います。
私の個人的な意見を書かせていただきますと、経験が浅い場合は、中小企業で経験を積むのが良いと思います。
特にSESで他社へ常駐していると、多くの企業のプログラマやシステムエンジニアと交流を持つことができます。
多くのエンジニアとの交流は、視野を広げ、今後のキャリアをイメージすることにとても役に立ちます。
私がプログラマを名乗る訳
私は、このブログやSNSではプログラマを名乗っています。
でも、実際、会社での肩書きは上級システムエンジニアです。
中小企業のシステム開発会社で働いているので、仕事はシステム開発全般を行なっており、インフラの経験もあるため、サーバーの管理も行なっています。
ただし、本来、私が目指しているのはプログラマなので、プログラマを名乗っている次第です
まとめ
プログラマとシステムエンジニアは、それぞれ行う仕事が異なり、必要なスキルも異なってきます。
大手企業では、プログラマとシステムエンジニアが明確に区別されている場合が多いです。
そのため、プログラマは、直接顧客と話すことは少なく、どちらかと言うと、PCに向かっている時間が多いです。
中小企業の場合は、プログラマとシステムエンジニアの区別は曖昧です。
中小企業の場合は、プログラマであろうとシステムエンジニアであろうと、顧客と打ち合わせを行うことが多いです。
しかし、請負開発を行なっている場合は、上流工程から下流工程、納品まで経験することができるため、経験を積むには中小企業はお勧めです。
1つ注意しないといけないのは、中小企業の場合、SESを事業の主軸としているシステム開発会社が多いことです。
SESで客先へ常駐すると、多くのエンジニアと交流することができるし、経験も十分に積むことができます。
しかし、常駐先は大手の企業が多いので、上流工程や納品といった経験を積むことができません。
就職活動をする場合は、このような点も理解した上で会社を選ぶことで、自分のキャリアを磨くことができるでしょう。
では、今日はこの辺で。
コメント