【ゲーム業界用語集】SEとは|意味や解説
SEは、システム開発を行う上で特に重要なお仕事です。
業務内容は多岐に渡り、特に必要な力として、的確に状況判断を行う力が求められます。
今回はSEの主な仕事内容と必要なスキルを詳しく解説しています。
SEとは
SEとはシステムエンジニアの略称です。主に、ソフトウェアの設計・開発を担当します。
システムを構築する仕事がメインで、SIという一貫したサービスの構築に携わります。
いくつかの工程の中で、主に案件定義・基本設計・詳細設計の上流工程を担当しています。
特に案件定義では、顧客がシステムを構築したい理由と運用方法を把握し、的確なサービスを提案しないといけません。それ故、SEとしての経験が問われます。
自社システムに関する業務を担当する社内SEの場合は、企業によって担当範囲が異なります。例えば、開発工程は外注し、社内SEは運用・保守のみを担当する企業もあります。
SIについての詳しい解説は下の記事で紹介していますので、併せてご覧ください。
ここに公開後のSI記事挿入予定
- ここに公開後のSI記事挿入予定
SEの仕事
以下、SEが主に担当する仕事内容について解説します。
①案件定義
顧客からなぜシステムを開発したいのか、そしてどのようなシステムにしたいのかをヒアリングします。
開発目的を深く理解した上、機能面や性能面を「どのような条件下で動作するか」を含め、必要となる条件を定義します。
プロジェクトの根底に位置する重要な段階で、ここで決めた定義により開発を進めていきます。
入念な打ち合わせが必要で、経験豊富なSEが担当することが多いです。
この工程で予算や納期を調整し、以下の工程に移ります。
②基本設計
案件定義で得られた情報を元に、これから構築するシステムの骨組みを組みます。
基本設計の工程では、デバイスや画面などのハードウェア設計から、システムを動かすことに必要なプログラミング設計に至るまで、幅広い分野の設計を行います。
この工程も案件定義と同じく、顧客とともに打ち合わせを行います。
③詳細設計
詳細設計では、基本設計で構築した骨組みを元に、これからの方針に合わせて肉付けを行います。
この後の開発工程はプログラマーが担当しますが、その際に必要となるマニュアルやフローチャートを作成します。
基本設計では顧客と一緒に打ち合わせをしますが、詳細設計ではサービス開発に携わる内部の人材で擦り合わせを行います。
開発する上での予算管理や人員配置、進捗管理などのマネジメント業務はSEが担当します。
④テスト
開発工程でプログラマーがプログラミングを行い、ソフトウェアが完成した後は、テストを行う必要があります。ここで不備があればプログラマーに修正を依頼します。ここで不具合を見逃してしまうことは後々大きなトラブルを生むことにつながるため、問題点をクリアしてからでないと納品には至りません。
テストの工程はSEが担当することが主ですが、組織によってはテスト専門のデバッカーが在籍している場合があります。
プログラマーとの関係
SEとプログラマーでは、担当する仕事の分野が大きく違います。
SEは顧客との目的や条件のすり合わせや、プロジェクト進行におけるマネジメントを行います。
そのため、開発に関する幅広い知識やコミュニケーション力、マネジメント力が必要になります。
プログラマーは、SEが構築した流れに沿って、プログラムを入力します。
SEはプログラマーが無理なく職務をこなせるよう適切な納期を設定します。これにはプログラマーの目線に立ったプランニングが必要です。プログラミング技術がなくてもSEを目指すことはできますが、技術を持っていたほうが「どのようなコードを入力するのか」「どれくらいの時間がかかるのか」などをイメージしやすいため、知識を有していた方が良いです。
また、不測の事態や遅延などが発生した場合、知識をもとにリスクマネジメントを講じることができるので、専門知識を持つことは大きなメリットになります。
SEに求められるスキル
以下では、SEに求められるスキルについてそれぞれ説明します。
コミュニケーションスキル
SEは、顧客が求めているシステムを聞き出し、顧客の悩みを解決するための提案をしなければなりません。それらを引き出すためには、コミュニケーション能力は必要不可欠です。
このヒアリングの時点で顧客の要望を引き出せないままであったり、間違った解釈のまま設計を進めてしまうと、満足してもらえるシステムが作れなくなってしまいます。
また、プロジェクト全体やプログラマーに対してのマネジメント能力も必要です。マネジメントするには当然会話が必要になり、その際にコミュニケーションスキルが低いと円滑にプロジェクトが進まなくなります。
プロジェクトごとに開発メンバーが変わることが一般的なため、初対面の相手やあまり自身のことを知らない相手とも認識を共有できるスキルは必要不可欠です。
マネジメントスキル
プロジェクトはチームで取り組むものです。全体が足並みを揃えてゴールへと向かうためには、適切な指揮統率が必要になります。
万が一不測の事態が起きた時の対処をシミュレーションしておける余裕があるとなお良いです。トラブルや作業遅延が発生したときに、適切な対応策を冷静に構築し、周りに指示できるスキルが必要です。この際、それぞれの役割を持っているエンジニアに過剰な負荷や無理なスケジュールを提示することなく、対応可能な範囲内での対策を持つことが重要です。
無理のある指示をしてしまうと、新たなトラブル発生の根源になってしまう可能性やチームワークとしての精神的団結が強固ではなくなってしまうリスクがあります。
また、先述の通りプロジェクトごとにチームのメンバーが入れ替わることが一般的です。
マネージメントする上で、自身が持っているイメージを的確に相手に伝えるスキルは必須です。
プログラミングなどの技術的スキル
SEは基本、本格的にプログラミング言語を用いてコードを入力することはありませんが、プログラマーをマネジメントする上で技術を持っていることは有利に働きます。
顧客にサービスを提案する際もプログラミング技術の知識があれば、より具体的なサービスの仕組みを説明することができる上、納期やそのサービスの機能を説明することもできます。
また、プログラマーを束ねる上で自身がプログラミングに関する知識を持っていれば、具体的な指示を行えたり、トラブル発生時には臨機応変に対応できたりと、マネジメントの幅が大きく広がります。
プロジェクトの円滑な進行のためには、プログラミングの知識をつけておくに越したことはないでしょう。
まとめ
SEは、幅広い開発知識はもちろん、プロジェクトの進行を逆算して納期を導き出したり、顧客が必要としているシステムを聞き出す力が求められます。
エンジニアという単語を聞くと、一人でパソコンに向かい、黙々とコードを打ち込んでいる姿をイメージしがちです。しかし、実際は様々な人と関わり、たくさんコミュニケーションを取ることが必要です。
また、プロジェクトの進行に際してのマネジメントスキルも必要になるので、状況に合わせて臨機応変に対応できる柔軟性が必要不可欠です。
この記事がSEを目指す方の手助けになれば幸いです。