ソフトウエアの開発で、開発管理ってなぜ必要なのでしょう?

2019年10月18日その他

管理というのは具体的に何の事か説明できますか?

会社に勤めて組織やチームの一員としてソフトウエア開発の仕事をしていると、必ず管理という言葉に出くわします。あなたが開発担当者だと開発リーダや上司から、日々の作業を管理される事も多いでしょう。あなたが開発リーダやラインの管理職だとしたら、業務管理やら工程管理やら人員管理と、いろいろな管理を組織から求められますね。ところで管理って何でしょうか?

管理なんてしても実際のソフト開発は進まないのだけど、管理って必要なの?

なんか、上司が管理・管理と煩く言ってくるのだけど、管理をしても実際のソフト開発は何も進まないので、正直邪魔だなーと思ってる人は、わりと多いのではないでしょうか? (多くない? 最近の人は上司の言う事を素直に聞くのかな?? グータラ親父が若かった頃は、結構アバウトな時代だったので、あまり上司の言う事を聞かなかったような記憶があるのですが、、、まあグータラ親父が個人的に我儘だったというだけかも知れませんが)

おっと話が逸れました。 会社に入って間もない人には、管理と言われても具体低に何の事かよく分からないし、管理の必要性もイマイチ判りにくいかもしれません。という事で、この記事ではその様な人向けに、管理について少しお話をしてみましょう。

管理なんてしなくても、知識や技術と経験があれば仕事はできます

実はソフトウエアの限らないのですが、管理なんてしなくても仕事はできます。では仕事をする上で絶対必要なものは何かというと、その仕事を行うための知識と技術や経験です。例えばケーキを焼くという仕事なら、ケーキの材料や下ごしらえの方法や焼き方についての知識と、何分くらいどの程度の温度で焼けば良いのかという経験が無いと、美味しいケーキが出来上がりません。これが知識や技術と経験ですね。

ではケーキを焼く事という仕事をする上で、知識や技術と経験だけがあれば問題な無いでしょうか? はい、ケーキを焼くという仕事についてはそれだけで全く問題無いです。知識や技術と経験さえあればケーキを焼けます。管理なんて要らないです。

では何のために管理が要るのでしょうか?

管理が無くてもケーキは焼けるので、焼いたケーキをお客さんに売って喜んでもらうためにケーキ屋さんを開く事にしたと仮定します。 お客さんという他の人との関わりができた事で、管理というものが必要になってきます。 例えば、夜中の10時に「そうだケーキを焼こう!」と思いついて、材料を混ぜてケーキを焼き始めて、真夜中の1時にケーキが 30個焼きあがったとします。 焼けたケーキをお店のショーケースに並べたら売れるでしょうか? たぶん、殆どが売れ残りますね。真夜中の1時にケーキ屋さんにお客さんが来てくれる事は殆どなさそうです。

ケーキ屋さんを開いてお客さんにケーキを買ってもらうには、お客さんが来そうな時間帯にケーキがショーケースに並ぶように、ケーキを焼く時間を考えて、売れ残りや売り切れが無いように焼くケーキの数を決めなければいけません。つまりケーキを焼く時間と、焼くケーキの数を予め計画して、その計画に従ってケーキを焼くという仕事をする必要がでてきます。 そして、ケーキを30個約という計画をたてて材料をまぜていたら、途中で常連のお客さんから電話があって、明日はいつもより10個多めに買いたいので、取り置きをお願いします。と電話が入ってきたら、焼くケーキの数を30個から40個に計画を変更する必要も出てきます。

この計画を立て計画に従って仕事を進め、途中で計画に変更が入ったらそれに従って計画を変えていく、というのが管理なのです。つまり管理というのは、ケーキを焼くという仕事ではなく、お客さんにケーキを買って食べてもらい喜んでもらう、という他の人に関わる時に必要になるものなのです。

自分の仕事の成果を誰か他の人に渡す時に管理が必要になる

誰か他の人との関わりがあって、自分の仕事の成果が誰か他の人に関係する時に、その人に自分の作業の成果を渡せるようにするために、管理が必要になるのです。ケーキ屋さんの例では、お客さんがケーキ屋さんに来てくれた時に、ショーウインドウにケーキが並んでいて買ってもらえるようにするために、ケーキを焼く時間とケーキを焼く個数を管理する必要がある、という事ですね。

ですので、自分の家で自分が食べるためにケーキを焼く、という様に他の人との関わりが無いのなら管理をしなくても問題はありません。 自分がケーキを食べたいと思ったときがたとえ真夜中であっても、それからケーキを焼いて、焼けたケーキを食べればそれで十分満足できるので、管理は要りません。

どうですか、管理って何の事かなんとなく判ってきた気がしますか? ソフトウエアの開発でも同じなのです。自分が趣味で使う自分のためのソフトウエアを自分一人で作っている時には、管理は必要ありせん。

でも、会社の組織の中で、或いは気の合う仲間とチームを組んでソフトウエアを開発する場合には、何日には各自の分担部分を仕上げて結合しよう、というように他の人との関わりが出てきます。また、例え一人で開発したとしても、そのソフトウエアを他の人に提供して使ってもらうつもりなら、何月何日からソフトウエアが使えますよ、と予め計画を伝えるでしょうから、その時点で他の人との関わりがでてきます。

他の人との関わりができた時点で、約束した日時までに約束したものを作り上げておかないと他の人に迷惑が掛かるので、ソフトウエアの開発について管理が必要になってくるのです。

ソフトウエアの開発には色々な管理が必要です

ソフトウエアを開発する時には、どんなソフトウエアを作るのかという要件管理や、何時迄にどんな日程で作るのかという工程管理や、どんな品質で作るのかという品質管理など、色んな種類での管理が必要になります。

そしてどの管理も、まず計画(目標)を立てて、ソフトウエア開発作業がその計画を達成できるように順調に進んでいるか、開発の実績を時々確認して、計画が達成できなさそうな状態があったら、何かの対策を行ってできるだけ計画を達成できるように工夫をしたり、計画を変更したりしながら、ソフトウエアの開発を進めていく必要があります。

そして、このようなソフトウエア開発で必要な管理を行うのが、チームリーダとか開発部門の管理職と呼ばれる人の役割です。 なので、チームリーダや管理職の人は、いつもいつも計画と実績はどうなってる? と口うるさく聞いてくるのです。 まあ、「管理される側」から見れば煩いだけなのですが、チームを組んでソフトウエアを開発いう開発方法を取る限り、管理という手法は必要な物だと諦めて下さい。

ソフトウエアの開発は目に見えないので特に管理が大切です

計画を立ててその計画どおりに作業を進める管理は、ソフトウエア開発に限らずいろいろな仕事で必要な事です。しかしソフトウエア開発は目に見えない作業なので、うまく管理をしていないとソフトウエアのリリース日が来たけれど出来てない! というマズイ事態が結構簡単に起きてしまいます。

ケーキを焼くという仕事の場合なら、材料を混ぜ合わせた段階まで仕事を進めると、目の前には混ぜられた材料が物理的にあるので、これが30人分か5人分かぱっと見でわかります。つまり、仕事の進捗が目で見て判り易いのです。ところが、ソフトウエアの開発の場合は、例えばソフトウエアの設計作業を考えてみてください。誰かが進めているソフトウエアの設計作業がもう終盤で90% 出来上がっているのか、まだ途中で 50% 程度の出来なのか、その進み具合なかなか判断は難しいです。 

ソフトウエアの開発で良くあるのが、工程の進みぐあいが80%程度までは順調に進むのだけど、80%を超えたあたりでパタッと進まなくなり、いつまで経っても90%にならない、というのがあります。これなどは、実は開発が遅れていて実際には 60% 程度の出来具合だったのを 80%と言っていたのが、終了時期が近づいてあまり誤魔化せなくなって、80%から進めなくなった、というのが良くあるパターンです。

なので、目に見えないソフトウエアの開発については、仕様や工程や品質など、いろいろな種類の管理が、とても大切になってくるのです。