• ログインログイン
  • 新規登録新規登録

MENU

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

0.はじめに

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

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

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

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

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

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

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

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

3ー1.要件定義

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

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

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

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

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

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

3ー2.システム設計

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4.まとめ

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

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

文=土屋良太

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

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

お名前 (必須)

カタカナ (必須)

大学名(必須)

学部・学科名(必須)

卒年(必須)

電話番号(必須) ※連絡が取れる電話番号をご入力ください。

メールアドレス(必須)  ※連絡が取れるアドレスをご入力下さい。

利用規約および個人情報の取扱いに関する通知文に同意する

※就活相談の実施場所は、下記住所になります。
ーーーーーーーーーーーーーーーーーーーーー
シンクトワイス株式会社 エンジニア就活事務局
東京都港区赤坂4-8-14赤坂坂東ビル5階
TEL:03-6825-5450より個別面談のご案内を差し上げる場合がありますのでご認識をお願いします。
mail:e-shukatsu@thinktwice.co.jp
ーーーーーーーーーーーーーーーーーーーーー

就活学生のための無料・オンライン プログラミング・インターン

プログラミング未経験者OK、文理不問のプログラミング・インターンを開催しています。プログラミングだけじゃなく、スカウト型就活イベントなど、卒業者限定の特別オファーもあるので、内定が一気に近づきます!詳しくは以下のページをご覧ください。
TECH-BASE

完全無料!

1で登録完了!

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

今すぐ新規会員登録
Page Top