会員登録
26卒向けのインターンシップ、説明会はこちら

SEはどのくらいプログラミングの理解が必要?

SEはどのくらいプログラミングの理解が必要?

0.はじめに

当記事では、システムエンジニアになることを検討されている方に向けて、プログラマーとの違い、業務内容、そして、どの程度プログラミングを理解すべきかをご紹介します。

1.プログラマーとシステムエンジニアの違い

プログラマーはその名の通り、プログラミングを行う役割の人です。一方、システムエンジニアはシステム開発全般に携わることが期待される役割の人です。ただ、システムエンジニア自身でプログラムを書くこともありますが、プログラミング以外の業務をメインに担う役割だという解釈でよいでしょう。

視点を変えると、プログラマーが苦なくプログラミングに取り組めるお膳立てをする仕事ともいえます。

2.システムエンジニアの業務内容

システムエンジニアの仕事は、要件定義、システム設計、(プログラミング、)タスクマネジメント、テストと幅広くシステム開発に携わります。

これら業務の中から今回は、要件定義、システム設計、タスクマネジメントに絞って、具体的な業務イメージとともに、プログラミングに対する理解がどのレベルだとシステムエンジニアとして何ができるようになるのかをご紹介します。

3.システムエンジニアの業務内容とプログラミング理解

3ー1.要件定義

要件定義とは、”何を”作るかを定めることです。目的とする成果物を決める行為で、後続の仕事の前提になります。

たとえば、飲食店のクライアントが「リピーターを増やしたい」と考えていたとします。これを実現するためにシステムで「お店に会員登録できること」や、「会員にクーポンが届くこと」、「来店ポイントがつくようにすること」など、様々な方法を考えることができます。

システムにおいて、何の機能があると良いか。これを定める仕事が要件定義といえます。厳密にいえば、このような機能要件と、非機能要件の2種類が存在します。非機能要件とは、処理速度、反応速度はどれくらいが望ましいかということや、セキュリティ面、拡張性の観点で抑えておくべきことは何かといったことに関する要求を指します。

ですので、この段階では、プログラミングの知識自体が直接的に必要になるということは稀です。

プログラミング知識よりも、機能要件についてはビジネス寄りの知識が求められ、非機能要件については、ITの各種専門的知識が求められます。

要件定義の段階でどのような機能を有するシステムを作るかという構想ができたら、次はシステム設計に入ります。

3ー2.システム設計

システム設計とは、”どうやって”作るかを定めることです。要件定義で決まったシステムの機能をプログラム化することに向けた第一歩となります。

システム設計には、基本設計(または外部設計ともいう)と詳細設計(または内部設計ともいう)の2段階が存在します。

基本設計では、画面の見え方(いわゆるユーザーインターフェース)という表に見える部分から、サーバーを何台配置するのかという裏の部分まで、構成要素を設計します。

このあたりからプログラミング知識が求められ始めます。

たとえば、画面Aに何の機能のボタンを配置するかを決めるとき、ユーザーにとって使いやすいように設計するのはもちろんなのですが、それが実現可能でなければ意味がありません。ある程度、プログラム上で工夫をすれば機能の実現は可能です。しかし、長期的にシステムが存続することを考えると、プログラムに落とし込んだときに複雑だと、トラブル発生時の対応が遅れたり、改善が不可能になるというリスクが生じ得ます。運用のことも考慮した設計が求められるのです。

プログラミングの経験や知識をもったシステムエンジニアであれば、プログラムコードを書くときにどのようになっていくかがわかるため、機能の切り分け方もスムーズにいきやすいです。万が一のときにも対応しやすいシステムを意識するはずです。

逆に経験や知識が著しく乏しい場合、後々、プログラマーが困るケースも出てきます。コミュニケーションで解決を図るところですが、知識の差があると妥当な解がでてこないかもしれません。するとシステム開発プロジェクトの遅延、炎上などのリスクにつながります。

詳細設計では、プログラミング知識は必須といえます。イメージとしては、プログラミング言語になる寸前までを設計する段階で、具体的なコードの記述法も知っていなければ、詳細設計書が書けません。

たとえば、このような内容を書いた詳細設計書もあります。「if 性別コード = 男」「if 天気 = 晴れ」など。これらは、プログラムコードになるときには、「if($weather == ‘01’)  」のように書かれるのですが、ほとんど見た目に変わりありません。

つまり、基本設計においてプログラミング知識は、よりスマートな設計に役立ち、詳細設計においては必須ということです。

3ー3.タスクマネジメント

最後に、タスクマネジメントというものについて言及します。スケジュール管理、進捗管理とも呼ばれるタスクの状況把握です。仕事の基本ともいえますが、システムエンジニアも修得しておく必要があります。

自分がメンバーであるときも、リーダーであるときも、進捗具合を自身で把握できることはプロジェクト進行において重要です。

ミーティングで、「この機能は何日かかるか?」という質問がされることは珍しくありません。これに対する答えを妥当な日数で答えられると、リーダーの立場の人はリソースの調整がしやすくなり、チームとして良い成果をだすことにつながります。

また、クライアントとのコミュニケーションの際、時間とお金と人というリソースがどれくらい必要になるかという観点をもっておくことも大切です。それによって、予算や納期にあたりをつけ、契約の調整ができるからです。そのためには、クライアントが求める機能から、どのようなプログラムコードが必要か、その難易度はどの程度で、複数人で手分けして開発できるのか、何日かかりそうなのかを想像できることが条件となります。やはり自身でプログラミングをした経験なくしてその想像力は身につけられません。

このように、プログラミング知識は、仕事を進めること、タスクマネジメントにも活きてきます。

4.まとめ

当記事では、システムエンジニアという職種の業務とプログラミング知識についてご紹介しました。プログラミング経験には、プログラムコードを書くこと自体の他に、バージョン管理や効率的なツール、問題解決方法など、システム開発における様々な実務が必要です。

システムエンジニアとして設計する役割を希望する方も、プログラミングの実務経験は欠かせません。

【関連記事】
SEのやりがい・魅力とは?【現役SEが語る】
SE業務の実態とは?システムエンジニアのある1日
SEの開発・保守・運用の違いとは

SEを目指すならエージェントと話をしよう

エンジニア就活には、IT業界・SEに強いエージェントがいます。彼らに話を聞いてもらうことで、自分が何をやりたいのか、自分が大切にしているのが何なのか、就活するうえでの軸が見えてきます。さらに、各人に合った未公開の求人情報も紹介してもらえるので、まずは気軽に相談してみましょう。登録や相談・セミナーなど、すべて無料で活用できます。

登録はわずか1分。以下のボタンをクリックするとフォームに移動します。

ここから会員登録をしよう

オススメ記事一覧

もっと見る
完全無料!

1で登録完了!

エンジニアの仕事・年収や選考ノウハウ記事が読めるほか、
会員にはプログラミング講習やES・面接対策などリアルな無料サポートも充実。
ここだけの求人情報も多数。

今すぐ新規会員登録

会員登録はこちら(無料)

エンジニア就活に登録して
ワンランク上の就活を始めよう!

「エンジニア就活」に会員登録をすると、求人情報への応募ができるほか、便利な機能や就職、就活支援サービスを利用することができます。

登録はこちらから