受託開発の仕事内容はどんなもの?7つのステップ
受託開発という言葉を聞いたことがありますでしょうか?
受託開発とは、仕事を受けてシステムやソフトウェアを開発する事を言います。
つまり、どこかの企業や組織から「こんなシステムを作ってくれないか?」と依頼を受けて、それにあわせたシステムを作り上げることを言います。
たとえば、
・企業の予算を管理するシステム
・研究機関で得られたデータをインターネット上に公開するサービス
・顧客情報を管理するシステム
・データを解析してわかりやすいようにビジュアル化するシステム
・在庫を管理するシステム
など、たくさんの依頼があります。
企業や組織の中でシステムを組んで効率化したり、みんなに利用してもらいたいのだけど、自分たちにはその技術がないために、システム会社に頼んで作ってもらうことになります。このシステムを作る作業を、SEやプログラマーが担当することになるのです。
実際に依頼を受けてから、開発に着手するまでのおおまかな流れについて、うちの会社では次のようになります。
1.会社に仕事の依頼が来る。
2.担当する予定のSE、プログラマーや時には上の者が一緒になって、先方の担当者と打ち合わせをする。
3.打ち合わせ内容に基づいて、どれくらいの費用が発生しそうか見積もりを送る。
4.先方の予算とすり合わせを行い、問題なければ開発に着手。
5.SE、プログラマーが中心になって、設計・実装をしていく。
6.途中で先方の担当者と進捗状況を適宜確認してもらいながら、フィードバックしていく。
7.最終的なシステムが完成したら納品を行う。
では、1つずつ見ていくことにしましょう。
1.会社に仕事の依頼が来る
会社に仕事の依頼が来る段階には、いろいろなパターンがあります。
・顧客から直接電話やメールで依頼が来る
・以前お付き合いのあった会社や組織の紹介で依頼が来る
・営業が依頼をとってくる
以上が主なものです。
顧客から直接電話やメールで依頼が来る場合というのは、お試し版をダウンロードして使っていただいたときやホームページを見たときなどに来ることが多いですね。
お試し版を使って使い勝手がよく、だけど自分の会社の業務には少し足りない部分があるからそこを作ってくれ、というパターンがまずあります。
また、ホームページを見てとても参考になったからとか、自分の会社の業務に似た事例があったから詳しい話を聞いてみたいといったパターンもあります。
この両者に共通して言えることは、ホームページで公開している情報(ソフトやサービス、情報)が、宣伝の役割をしていることですね。何もしなくても営業活動してくれるので、楽ができます(笑)。
以前お付き合いのあった会社や組織の紹介で連絡が来ることも多いです。1つのサービスを納品して、その噂を聞いた同系列の会社や組織が、「うちにも作ってくれないか」と依頼をしてくるパターンです。
このような連鎖的な口コミによる依頼と言うのはとてもありがたいです。
口コミによる依頼を得るためには、以下のようなことがポイントになるのではないかと思っています。
・きっちりとした正確なシステムを作ること、
・顧客の要望にキメ細やかに対応すること。
・丁寧・迅速な対応。
当たり前のことなのですが、これが信頼を得るためには必須なのだとおもいます。
営業が依頼をとってくるのが一番多いかもしれません。
以前納品したサービスの拡張であったり、新規案件である場合もあります。
2.先方と打ち合わせをする
依頼を受けたら、どういったシステムを開発するのかという打ち合わせを行いに行きます。発注を受ける立場ですので、当然我々が出向くことが多いです。
打ち合わせに参加するメンバーは、システムエンジニア(SE)と実装を担当するプログラマーの二人で行くことが多くあります。企業によってはまずはSEだけが参加して、実装内容をプログラマに伝えるだけというところもあります。そして、相手がお得意さまであったり大きな案件であったりするなど、場合によっては上司が参加することもあります。
先方で資料を提示されることもあれrば、口頭でこんなシステムがほしいんだが、と相談されることもあります。
また、簡単なデモンストレーションを行ったりすることもあります。デモを行うとイメージがわきやすいので、「この部分をこんなふうにしてくれ」といった具体的な要望が聞けることが多いです。
依頼の内容によって、自社で実現できそうであればいったん持ち帰って再度提案書を持って打ち合わせを行うことになります。提案書には、想定しているシステムの画面イメージや仕様案を書きます。この段階でのイメージや仕様と言うのは、方向性としては正しいのですが、開発が進むにつれて少しずつ修正が入っていきます。
打ち合わせの段階で、「いつまでに完成させるか」といった納期の確認を行います。打ち合わせを行った段階で、どれくらいの日数が必要かということは、ある程度想像ができるようになります。
仕事量や開発に携わることができる人員の関係もあるので、こちらの事情をお伝えしながら先方の希望とのすりあわせを行う必要があります。
3.見積もりを作成する
打ち合わせを行ってどんなシステムを作ればいいかがつかめたら、どれくらいの工数が必要でどれくらいの費用が発生するかという見積もりを行います。
依頼された内容を実現しようとした場合、どのくらいの人数と工数が必要かをまず考えます。
人数と工数が見積もれたらr、次は費用を計算します。システムの構築に要する費用を算出するのに、IT業界では「人月単価」というものを使うところが多いです。
人月単価とは、エンジニア1人が1ヶ月働いたときの人件費や諸経費を1人月として表します。
1人が10ヶ月働けば10人月、5人が10ヶ月働けば50人月と言う具合です。
そして、この1人月にかかる費用が会社によってそれぞれ違います。1人月100万円のところもあれば、150万円のところもあります。この値段の決め方はなかなか難しいのですが、専門性の要求される内容であれば対応できる企業や担当できる人材が少ないため、単価は高くなることもあります。逆に比較的容易に実現できるような内容であれば、単価は低くなる場合もあります。
費用を見積もることができれば、先方にご連絡します。
4.予算のすり合わせ
費用の見積もりを送ったら、先方との予算のすりあわせが発生します。予算内であればそのままゴーサインが出ますし、予算オーバーということであれば、必要な機能に優先順位をつけて、削る部分が発生することもあります。削った部分は、次回に予算がとれたときに追加しましょう、となるパターンもあります。
お金に関する部分なので、少し緊張する場面ではあります。他の部分でもそうなのですが、丁寧な対応を心がけたいものです。
費用の面で折り合いがつけば、開発開始となります。
5.設計と実装
ここからがいよい開発段階に入ります。
作業分担が明確になっている会社であれば、SEが中心になって設計を行って、実装はプログラマーが行うところもあります。規模が小さな会社であれば、主にSEが担当する部分もプログラマーが担当する部分もすべて1人でこなす場合もあります。いわゆるSE兼プログラマーというやつです。
いずれにしても、開発する機能を洗い出して、システムの設計をすることが大事です。
データベースを使うのであれば、どんなテーブル構成にするのか、プログラムの構成などを設計します。
実装段階に入ると、ひたすらプログラムを書いていく作業が続きます。プログラミングに没頭する日々が続きます。
社内では定期的にミーティングが行われて、進捗状況の確認が行われます。プロジェクトに遅れが生じると納期前に大変なことになるので、この打ち合わせは大事です。必要であればサポートしてもらえる人を増やすことも検討されたりします。
6.先方との定期的な打ち合わせ
依頼を受けて開発が始まると、そのまま最後までずっとプログラムを書いていくと思われるかもしれません。
しかし、作っているシステムというのは大体において先方のイメージとずれが生じています。
ずれが生じたままのシステムを納品してしまっては、「使えない」、「作り直し」となってしまいます。下手をすれば「金返せ」となってしまい、評価を大きく落としてしまうことにもなりかねません。
このような事を防ぐためにも、依頼主との定期的なミーティングを持って、フィードバックを受けることは大事です。
進捗状況の確認ということで、今どこまで進んでいてどんなシステムになっているかを適宜確認してもらうと、ずれが小さいうちに対応することが可能になります。パソコンを持っていって操作してもらったり、ウェブシステムであれば、ネット経由でお客様のパソコンから操作してもらうこともあります。簡単にインストールしてもらえる場合であれば、インストーラーを作って、お客さんのパソコンに実際に入れてもらって動作確認をしてもらうパターンもあります。
実際に打ち合わせを行うこともあれば、メールや電話で具体的な指示をもらうこともあります。
動作確認をしてもらった上で、具体的なフィードバックをもらい、修正に反映していくという作業を行います。
7.納品
先方から定期的にフィードバックをもらいながらシステムを開発していきシステムが完成したら、いよいよ納品です。
操作に必要なマニュアルやシステムの運用マニュアル等のドキュメントを準備し、システムをCDやDVDに焼いて納品します。
納品前はなかなかか忙しい日々が続くのですが、納品日を迎えるとものすごくホッとしますし、解放感・充足感・達成感が得られます。
顧客先で自分が作ったシステムが動いていると想像すると、うまく動いてくれるかなと心配になることもありますが、世のため人のために役立っているようでとてもうれしい気持ちにもなります。
関連記事
1.受託開発の面白さ〜3つのポイント
2.ソフトウェア開発の3つの面白さ
3.WEBプログラマーの仕事とはどんなもの?
4.WEBプログラマーに必要なスキルとは?(基礎編)
5.WEBプログラマーに必要なスキルとは?(発展編)
6.内定を得るための就活サイトの利用方法
7.新卒でプログラマーへの就職活動をする方法