開発SEの仕事とは
IT業界におけるエンジニア職について、仕事内容や役割は細かく分かれており、プログラマーからシステムエンジニア(以下、SE)までさまざまな職種・業務内容が存在します。それぞれの分野で専門家として活躍するエンジニア職は、当然、どの部門でも、技術力を武器に仕事を進めていく職種ですが、技術力だけでなく、実は意外と、コミュニケーション能力も重視される職種です。
エンジニア職の職種代表格としてよく聞く「SE」については「PCの前に座ってプログラミングをしている」というイメージを持つ人が多いかと思います。しかし、業務の割合として、実際は、顧客との打ち合わせやヒアリング、システムの設計など、プログラミング以外の仕事も多数あり、開発を中心にキャリアに応じて幅広い業務があります。ここでは「開発SE」の仕事について、仕事内容や、やりがい、魅力、目指せるキャリアなどを解説していきます。
●仕事の内容
パッケージシステムを開発する企業では、システムの設計から開発、導入、運用、保守までのすべての工程を自社内で行っています。パッケージ開発企業で働くプログラマーやSEは、設計部分と開発に携わるようなこともできますし、また導入、運用や保守を担当するようなこともできます。自社内ですべての工程を経験することができますので、エンジニアとしていろいろな経験を積んでみたいと思う人にとっては、社内で様々なチャレンジができる、とても魅力的な環境があります。
当社の開発SE職では、プログラマー、SE、PL、PM等の業務があります。業務内容や役割によってそれぞれ部門が分かれているわけではなく、キャリアに応じて担当業務を決めていきます。
●各職種の役割・担当業務
プログラマーは、設計書(仕様書)をもとにプログラミングを行い、機能を実装していく仕事です。
SEは、提案から設計・開発・テストまでの一連の業務を担当します。
PL(プロジェクトリーダー)やPM(プロジェクトマネージャ)は、経験を積んだSEがステップアップして任される役職です。
いずれの職種でも、エンジニアのリーダーとして、多くのエンジニアをマネジメントしていく業務です。
PLは、プロジェクト(案件)単位の総指揮官を務め、予算や人員の管理を行います。さらに大規模なプロジェクトになると、自社リソースだけではなく、開発の一部分を他社に業務委託して開発を依頼することもあります。
PMは、自社リソースだけではなく、他社リソースも含めての大規模案件の開発プロジェクトのマネジメントを行います。開発業務にかかる社内工数や外部への業務委託の工数見積もりを行います。エンジニアとしての豊富な知識と経験が必要なだけでなく、プロジェクトを円滑に推進するための進捗管理など、マネジメント業務に対する知識が必要になります。
仕事の流れ
システムを開発する際は必ずプロジェクトを発足し、複数の工程で作られます。各工程の担当は異なり、一つのシステムを作り上げるために大勢の人が関わっています。具体的には下記のような流れで進めていきます。
①要件定義
②設計(基本設計~詳細設計)
③開発(プログラミング)
④テスト(単体テスト~結合テスト~総合テスト)
⑤導入(本番移行)
⑥運用保守、サポート
⑦管理
この中で開発SEが主に携わる工程は、①の要件定義から④テストまでです。⑤以降は、主に導入運用SEの業務になりますが、運用フェーズに入った後の⑥保守、サポート、⑦管理の部分については、開発SEも連携して担当する部分もあります。
<各工程の業務詳細>
開発工程の各フェーズの具体的な仕事内容は下記のような流れで進めていきます。
①要件定義
システム開発において必要になる機能や性能、システム化する範囲などを明確にしていく工程です。顧客の要求が文書化された資料や打ち合わせでのヒアリングから、顧客がどのようなシステムを望んでいるのかを明らかにしていきます。それを踏まえて「どのような機能が必要か」、「どのような技術を使って実装していくか」を考え、併せてプロジェクトを行うための人員数や時間、リスクなども検討していきます。
②設計(基本設計~詳細設計)
要件定義がまとまったら、次は設計です。
外部設計とも呼ばれる基本設計では、「どのような操作画面や操作方法なのか」、「どのような機能が使いやすいか」など、主に顧客が関わる部分を設計します。
内部設計とも呼ばれる詳細設計では、システム開発に必要なものを明確化し、「開発はどのような環境で行うのか」、「実装予定の機能に対してどのような技術や仕組みで実現するのか」などを取り決めていきます。
パッケージ開発において最初の段階である設計は、実際に使用するユーザーが使いやすいかどうか、便利かどうかを判断するのを決める重要な工程です。また、ソフトウェアの方向性を決めたり、プログラミングや保守のしやすさを決定したりする、重要なフェーズでもあります。実際に使うユーザーと、プログラミングに関わる社内の人間の両方のことを考えて行う必要があります。
③開発(プログラミング)
設計が完了したら、その設計内容は「仕様書」と呼ばれる設計書のようなものにまとめられ、実際に開発を担当するプログラマ(以下、PG)に渡ります。PGは、仕様書に基づいてプログラミングを行い、システムを開発します。開発の工程では、設計されたとおりにプログラムを書いて、ソフトウェアが動くようにしていきます。プログラムが正しく動くようにし、不具合が入り込まないように作っていきます。
④テスト(単体テスト~結合テスト~総合テスト)
システム開発が完了したら、システムが正常に作動するかをテストします。バグが発生した場合はPGに修正を依頼し、改めてテストを行います。全てのテストが完了したら、クライアントの元へ導入します。この導入フェーズからは、「運用導入SE」へのバトンタッチとなります。
⑤導入(本番移行)
⑥運用保守、サポート
テストが完了したら、そこからは導入運用SEにバトンタッチします。セットアップ、環境構築、システムオペレーション指導、稼働サポートまで、非常に幅広い業務があります。
⑦管理
システムの稼働に関しては、サーバーとの通信が不可欠です。サーバーの維持や管理などを行う必要があります。そのため、サーバーの知識やネットワークのスキルを持つ開発SEが、導入運用SEとタッグを組んでサーバー管理業務も担当します。
また、自社パッケージを持つ企業は、当然、自社で開発を行っているので、自社のエンジニアがサポートを行います。開発を担当したSEと導入を担当した導入運用SEが、本稼働後もユーザーのサポートを担当しますので、クライアントは安心してサポートを受けられる体制が整っています。パッケージ製品は一度作ってしまってそれで終わり、というわけではありません。クライアントから「こんな機能がほしい」、「こんな機能があったらいい」といった要望が多く寄せられます。そのようなクライアントからの意見を元にして、次のバージョンの企画を行い、バージョンアップした製品を開発、提供していきます。
やりがいや魅力、どんな人が向いているか
●求められるスキルとやりがい
システム開発は、どのシステムにおいても、長い工程を経てリリースを迎えます。パッケージシステムとしてある程度仕様が固まっている場合でも、受注を受けて、稼働に繋げるまで、どのプロジェクトにおいても多くの山場があります。クライアントと打合せを重ねたり、安定的な稼働のために動作検証を行ったり、クライアントに使用感を確認したりして、システムの本稼働に繋げていきます。営業や導入運用SEも含めたプロジェクトメンバー全員で協働して、システムの完成と稼働を迎えた時には、大きな達成感につながります。
システムが実際に導入され、旧システムと新システムでの同時並行で業務を進めていく並行稼働期間を経て、綿密な運用テストも終えた上で、無事、本稼働を迎え、新システムのみの稼働に切り替えられた時の達成感は、非常に大きなものになります。長らくプロジェクトを一緒に進めてきたクライアントからは、「発注元」「発注先」という立場を超えた感謝の言葉をもらうことが多くあります。導入したシステムがただ稼働を迎えただけでなく、プロジェクトを通じて、感謝の言葉を頂き、好評の声を頂くということは、打合せ段階から稼働に至るまで、クライアントの要望を的確に捉え、期待に応え、さらには期待を上回る価値を提供できたということになります。ただ単にシステムを開発し、導入し、運用に繋げるだけではなく、システムを通じて、お客様の課題解決に繋がったという喜びを直接感じることができます。そういった「システムが完成した時の達成感」と「クライアントから直接感謝の言葉を受けられる」ことが、開発SEのやりがいだと言えます。
●どんな人が向いているか
開発SEとして、自社のパッケージシステムの開発に携われる、当社のようなプライムベンダーに就職した場合には、パッケージ製品のバージョンアップの企画から設計、開発、すべての工程に携われます。
自社で製品の企画・開発を行っているため、新バージョンをリリースする際にはゼロから企画してアイデアを出す機会にも恵まれるチャンスがあります。アイデアを出して、今までにないシステムを自社のリソースで作っていくことができるというのも大きな魅力です。
現状のシステムのバ-ジョンアップだけではなく、常に新しい開発言語、エンジンを搭載した次世代のバージョンの企画検討などのプロジェクトもあります。そのプロジェクトにも社歴等関係なく、チャレンジできるチャンスや環境もあります。新バージョンの検討・企画会議ではアイデアを色々出していく中で、実際に自分が提案したアイデアが採用されることもあり、自らの技術力で、数多くのクライアントの課題解決に繋がるような、社会に大きな影響を与えられるエンジニアとしてのキャリアを積むことができます。エンジニアとして、幅広いキャリアを積んでいきたいという想いを持っている人には活躍できるチャンスが多くあります。