プログラミングの知識はもちろん大事だと思うけど、システムエンジニアになった後もどの程度勉強し続けないといけないのだろうか。
上記のお悩みを解決します。
■本記事の内容
本記事で以下の内容をお伝えします。
・プログラマーとシステムエンジニアの違い
・システムエンジニアはどのぐらいプログラミングの知識は必要?
■本記事の信頼性
この記事を書いている私は、プログラミングを仕事として始めて10年以上ほど経ちます。
今も現役のシステムエンジニアです。
プログラミングをせずにいきなりシステムエンジニアになることは少ないと思うので、ある程度経験を積んでいるかと思います。
ただ、プログラミングの技術も時間がたてばどんどん進歩していき、今ある身に着けている知識は使われなくなっていくこともあります。
では、システムエンジニアはどの程度プログラミングの勉強をしておくほうがいいかをお伝えしたいと思います。
システムエンジニアにプログラミングは必要?
結論からいいますとプログラミングの知識はあるほうがいいになります。
ただ、冒頭でも書いた通り、だいたいの人はプログラマーからはじめて経験を積んだ後、システムエンジニアとして仕事することが多いです。
なので、基本的にはプログラミング未経験者や実務を経験していない初心者がいきなりシステムエンジニアになることはないと思っています。
逆をいえばプログラミングの知識はある程度ないとシステムエンジニアとして仕事するのは難しいと考えています。
プログラマーとシステムエンジニアの違い
では、具体的にプログラマーとシステムエンジニアの仕事の違いについて触れていきます。
システム開発の大まかな流れは以下のようなイメージになります。(本当はもっと細かく工程がありますが)
要件定義とは顧客よりどんなシステムを作りたいかヒアリングする工程です。
システムエンジニアは主に要件定義と設計を担当し、プログラマーは製造、試験を担当する形が多いです。
もちろん案件の規模によってはシステムエンジニア自身がプログラミングすることもあります。
簡単にまとめると以下のような感じです。
プログラマー:設計をもとにプログラミングとテストを行う人
他にもシステムエンジニアはシステム開発の進捗管理を行ったりと管理作業もあったりもします。
詳しくは以下の記事にまとめてますので、よければ見て頂けますと幸いです。
【プログラミング初心者向け】システムエンジニアとプログラマーの違い
システムエンジニアはどのぐらいプログラミングの知識は必要?
先ほど簡単にですがシステムエンジニアの主な仕事内容を書きました。
製造はプログラマーがやるのだからプログラミングの知識はそこまで必要ないのでは?と思われる方もおられるかもしれません。
では、プログラミングの知識がどの程度システムエンジニアの仕事に関わってくるか説明していきます。
要件定義
システム開発の一番はじめに行う工程になります。
顧客からこういうことをシステム化したいという要望を具体的にどのようにシステムしていくか検討していくフェーズになります。
この部分でシステムの前提条件が決まったりするので、重要なフェーズになります。
顧客の要望の中には実現が難しいものももちろんあります。なんでも言われたことを引き受けていたら期間や費用的にも厳しくなります。
この判断をするのにプログラミングの知識ないし、システムの環境の知識が必要になってきます。
最終的にはプログラミングを行うことでシステムが出来上がるわけなので、プログラミングで簡単にできること難しいことを理解しておかないと上記の判断ができなくなります。
仮に代替え案など提案する場合も何ができるかを知っておく必要があります。
設計
要件定義が終わり、ある程度システム化の目的が明確になったら次に設計をしていきます。
設計には、基本設計と詳細設計というフェーズに分かれることが多いです。
別の呼び方で外部設計と内部設計と呼ぶことがあります。
違いは基本設計はUIなどの画面の見た目の部分だったり、どういったデータをシステムで管理するか等の大まかなベースとなる設計をしていきます。
上記が決まったら具体的にどのようにプログラミングしていくかを設計するのが詳細設計です。
詳細設計はプログラミングの知識は必須になります。プログラマーが詳細設計することもあります。
システムエンジニアは主に基本設計を担当することが多いです。
基本設計で必要になる知識は、システムの環境やデータベース、後はインフラの知識です。
最近の流行りでいうクラウドだったり、インフラの場合はネットワークだったりがこういった知識求められることが多いです。
進捗管理
最後に進捗管理ですが、まずはじめに各種工程のスケジュールを作成します。
このときにこの作業に何日かかるか見積もるのですが、それを行うためにはプログラミングの知識がないと作業にどの程度かかるか判断するのが難しいです。
自分がやったことない作業に対して、どのぐらい時間を要するか判断するのは難しくこのあたりは経験が必要になってきます。
最後に
システムエンジニアにはプログラミングの知識がある程度必要ですという内容を書いていきました。
ただ、自分の配下に優秀なプログラマーがいるのであれば、プログラミングの知識が必要な判断はその方に任せることによって、プログラミングの知識がなくてもシステム開発ができてしまうことも多々あります。
しかし、上記のようにプログラマーに依存しすぎてしまうと配下メンバーのプログラマーの能力によってシステム開発の成功失敗につながることになるので、システムエンジニアだからプログラミングはプログラマーにすべて任せきりにするのではなく、ある程度理解しておきましょう。
でないとそのまま理解せずにいるとプログラマーからこの人は何も理解しようとしない人なんだなだったり、なんでもかんでもプログラマーに確認していると疎まれる可能性もあります。
このあたりもバランスですが、基本的にこの業界に入る人は技術を学びたいという方が多いと思うので仕事で使用する技術などは積極的に学んでいくことが今後の自分のためにもなると思います。
コメント