ソフト会社って何なん?【第2章】 (第1話)システム開発の進め方
システム開発とは?
システム開発と聞くと、皆さんはどのような光景を想像するでしょうか。
何人かのプログラマがパソコンに向かって、黙々とプログラムを書いている。
あるいは、何人かで話をしながら、画面を見てシステムを作っている。
そんなイメージを持たれるかもしれません。
しかし実際のシステム開発は、単にプログラムを作るだけではありません。
「システムを作る」と一言でいっても、その進め方にはさまざまな方法があります。
どこで作るのか。
お客様とソフト会社が、どのように関わって作るのか。
何をどう作るのかを、どのように決めていくのか。
今回は第2章の最初として、まずこの三つの視点から、システム開発の全体像を簡単にお話ししたいと思います。
まず、どこで作るのでしょうか
システム開発では、SEやプログラマが実際にどこで作業するのかという「開発場所」にも、いくつかの形があります。
大きく分けると、次の三つです。
- お客様の会社の中で開発する
- ソフト会社に持ち帰って開発する
- それぞれ離れた場所で開発する
① お客様の会社の中で開発する
SEやプログラマがお客様の会社に入り、実際に仕事をしている人たちの近くで開発する方法です。
担当者から直接話を聞いたり、実際の業務を確認したりしながらシステムを作っていきます。
② ソフト会社に持ち帰って開発する
お客様との打ち合わせで業務内容や要望を確認し、その内容をソフト会社に持ち帰って開発する方法です。
必要に応じて、お客様と打ち合わせや確認をしながら進めていきます。
③ それぞれ離れた場所で開発する
現在では、開発メンバーがそれぞれ別の場所で仕事をする形も増えています。
SEやプログラマが必ずしも同じ会社に所属しているとは限りませんし、同じ場所に集まって仕事をするとも限りません。
ソフト会社の社員だけでなく、外部の会社の技術者やフリーランスなどが参加し、オンラインで連絡を取りながら一つのシステムを作ることもあります。
まずは、
「自分の会社のシステムは、どこで作られるのだろう?」
ということを知っておいていただければよいと思います。
お客様とソフト会社は、どのように関わるのでしょうか
次は、
「システム作りを、誰が中心になって進めるのか」
ということです。
これも大きく分けると、次の三つくらいの形があります。
- ソフト会社に提案から任せる
- お客様とソフト会社が一緒に考える
- お客様が主導して作る
① ソフト会社に提案から任せる
お客様が自分たちの仕事の内容や困っていることを説明し、その解決方法を考えるところからシステム構築までをソフト会社に任せる方法です。
つまり、
自分たちの業務や課題を説明し、その解決方法を考えるところからお願いする。
コンサルティング的な部分も含めて、システム構築を一式として依頼するような形です。
この方法では、ソフト会社がお客様の業務をどこまで理解できるかが非常に重要になります。
② お客様とソフト会社が一緒に考える
お客様とソフト会社が話し合いながら、解決方法やシステムの形を一緒に考えていく方法です。
業務については、お客様の方が詳しい。
システムについては、SEの方が詳しい。
さらに、経験のあるSEやソフト会社であれば、
「以前、同じような課題を持った会社では、このような方法で解決しました」
といった、他社での経験やノウハウを持っている場合もあります。
もちろん、他社と同じ方法がそのまま使えるとは限りません。
お客様が持っている自社の業務知識と、ソフト会社が持っているシステムの知識や過去の経験を持ち寄りながら、
「では、うちの会社の場合はどうすればよいのか」
を一緒に考えていく方法です。
③ お客様が主導して作る
お客様側にシステムに詳しい担当者や情報システム部門などがあり、お客様が中心となって開発を進める方法です。
何を作るのか、どのような機能が必要なのかをお客様側で整理し、その内容に沿ってソフト会社に開発を依頼します。
どの方法が正しいというものではありません。
会社の規模や人員、社内にシステムを分かる人がいるかどうかによって、適した方法は変わってきます。
何をどう作るのかを、どうやって決めるのでしょうか
そして三つ目が、
「何を、どう作るのか」
を、どのように決めていくのかということです。
これにも、さまざまな考え方があります。
大きくイメージすると、
- 最初に全体像を整理してから作る
- 現場の課題を整理しながら、全体の形を考えていく
- まず形にしてみて、確認しながら固めていく
といった進め方があります。
① 最初に全体像を整理してから作る
まず会社の業務を整理し、どのようなシステムや機能が必要なのかをできるだけ明確にします。
そのうえで要件を決め、設計、開発、テストと工程を進めていきます。
一般的なウォーターフォール型の開発は、このような考え方です。
② 現場の課題を整理しながら、全体の形を考えていく
まず現場で困っていることや改善したいことを集め、一つひとつ整理・分析します。
そして、
「この問題とこの問題は、一緒に解決できないだろうか」
「この業務とこの業務は、つないだ方がよいのではないか」
と考えながら、必要な機能や全体の流れを組み立てていく方法です。
③ まず形にしてみて、確認しながら固めていく
最初からすべてを細かく決めるのではなく、大まかな方向を決めたうえで、まず小さく形にしてみる方法です。
実際に確認しながら修正を繰り返し、少しずつ完成形に近づけていきます。
現在よく耳にする「アジャイル」も、このような考え方を取り入れた開発方法の一つです。
ただし、
「何も決めずに、とりあえず作ればいい」
という意味ではありません。
ここではまず、
「何をどう作るのか、その決め方にもいろいろな方法がある」
ということを知っていただければ十分です。
そして、すべてに関わるのがコミュニケーションです
ここまで三つの視点から見てきました。
そして、どの方法を選んでも共通して大切なのが、
お客様とソフト会社とのコミュニケーションです。
開発する場所がどこであっても、どちらが中心になって進めるにしても、お互いの認識を合わせながら進めなければなりません。
ソフト会社は、お客様の業務を最初からすべて知っているわけではありません。
反対に、お客様もシステムのことをすべて分かっているわけではありません。
だからこそ、お互いに確認しながら進めることが大切です。
ここにズレが生まれたまま開発が進んでしまうと、最後になって、
「こんなシステムを頼んだつもりではなかった」
ということにもなりかねません。
どのような開発方法を選んでも、お互いの認識を合わせながら進めること。
これが、システム開発では非常に大切だと思います。
経営者がすべてを知る必要はありません
経営者がウォーターフォールやアジャイルといった開発手法や、細かな開発手順まで覚える必要はありません。
ただ、ここまでお話ししてきた、
「どこで作るのか」
「誰が中心になって考えるのか」
「何を、どのように決めながら作っていくのか」
この三つについては、自分の会社ではどのように進めるのか、押さえておいていただきたいと思います。
そしてさらに大事なのが、この三つすべてにおいて、お客様とソフト会社がきちんとコミュニケーションを取り、お互いの認識を合わせながら進められるのかということです。
経営者が細かな開発方法まで知る必要はありません。
自分の会社のシステムがどのような形で作られ、その中でお互いの認識をきちんと合わせながら進められているのか。
そこを確認しておくことが大切だと思います。
今回はまず、
「システム開発と一言でいっても、その進め方にはいろいろな形がある」
ということを知っていただければ十分です。
次回からは、その一つひとつについて、もう少し具体的に見ていきたいと思います。
次回予告 第2話 どこでシステムを作るのか?
次回は、今回最初にお話しした「開発場所」について、もう少し詳しく見ていきます。
システムをどこで作るのかによって、開発の進め方も変わります。
そして、お客様とソフト会社とのコミュニケーションの取り方にも大きく影響します。
「どこでシステムを作るのが、自分の会社に合っているのか」
次回は、開発場所によって何が変わるのかを、現場経験をもとにお話ししたいと思います。
※本記事は、筆者が38年間システム開発の現場で経験した内容や考え方をもとに執筆しています。
システム開発にはさまざまな方法があり、すべての企業や開発案件に当てはまるものではありません。
一つの考え方として参考にしていただければ幸いです。