つづきです。
昨日途中で力尽きて結論を最後まで言っていなかったのが
悪いのですが、実は今回私はソフトウェア開発から工程を
完全に無くすべきだとか、
重量級開発プロセスよりも軽量級開発プロセスの方が
常に優れているとかいうことを
言いたい訳ではありません。
主張したかったことは、もっとシンプルで、単に
工程を分割せずに済むなら、分割しないほうが良い
ということです。
昨日のエントリに対し、tatakahaさんとSaisseさんからコメントを頂きましたが、
注意を促したいのは、開発プロセスを複数の工程に分割すべき
積極的理由、つまり、
「工程に分けるとこんな良いことがある」ということはまだ示されていない、
ということです。
「何でも出来る人でなくても開発が可能になる」
これは積極的理由ではないと思います。
「良いこと」とはソフトウェアプロジェクトにとって良いことです。
ソフトウェアプロジェクトにとって「良いこと」とは
QCD(Quality, Cost, Delivery)にプラスの影響を与えることです。
何でも出来る人でなくても開発が可能になることによって、
品質が向上するでしょうか? 向上する理由は思い付きません。
納期は短縮されるでしょうか? 短縮する理由は思い付きません。
コストはどうでしょう?
確かに何でも出来る人より、限られた事しかできない人の方が人件費は
安いかもしれません。しかし、そのコスト的なメリットは
工程を分割することによって発生する余分な作業、やり直し作業の
コストと見合うものなのでしょうか?定量的なデータはありませんが、
少なくとも、明らかに人件費が安いメリットの方が大きいということは
いえないと思います。
だから、「何でも出来る人でなくても開発が可能になる」が
工程を分割することのデメリットを補ってあまりある程の「良いこと」
であると断定する事はできないと思います。
結局のところ、工程に分割すべき理由の多くは、
消極的理由、つまり、「工程に分けないとこういう場合に
うまく行かない」ことなのです。
工程を分割せずに済むなら、分割しないほうが良い
という主張に反論するためには、消極的理由ではなく、
積極的理由をあげる必要があります。
言葉を変えて、今一度問います。
開発作業を複数の工程に分ける積極的理由はありますか?
工程に分けることによって、品質は向上しますか?納期は短縮されますか?
コストは削減されますか?
まだつづきます。
昨日途中で力尽きて結論を最後まで言っていなかったのが
悪いのですが、実は今回私はソフトウェア開発から工程を
完全に無くすべきだとか、
重量級開発プロセスよりも軽量級開発プロセスの方が
常に優れているとかいうことを
言いたい訳ではありません。
主張したかったことは、もっとシンプルで、単に
工程を分割せずに済むなら、分割しないほうが良い
ということです。
昨日のエントリに対し、tatakahaさんとSaisseさんからコメントを頂きましたが、
注意を促したいのは、開発プロセスを複数の工程に分割すべき
積極的理由、つまり、
「工程に分けるとこんな良いことがある」ということはまだ示されていない、
ということです。
「何でも出来る人でなくても開発が可能になる」
これは積極的理由ではないと思います。
「良いこと」とはソフトウェアプロジェクトにとって良いことです。
ソフトウェアプロジェクトにとって「良いこと」とは
QCD(Quality, Cost, Delivery)にプラスの影響を与えることです。
何でも出来る人でなくても開発が可能になることによって、
品質が向上するでしょうか? 向上する理由は思い付きません。
納期は短縮されるでしょうか? 短縮する理由は思い付きません。
コストはどうでしょう?
確かに何でも出来る人より、限られた事しかできない人の方が人件費は
安いかもしれません。しかし、そのコスト的なメリットは
工程を分割することによって発生する余分な作業、やり直し作業の
コストと見合うものなのでしょうか?定量的なデータはありませんが、
少なくとも、明らかに人件費が安いメリットの方が大きいということは
いえないと思います。
だから、「何でも出来る人でなくても開発が可能になる」が
工程を分割することのデメリットを補ってあまりある程の「良いこと」
であると断定する事はできないと思います。
結局のところ、工程に分割すべき理由の多くは、
消極的理由、つまり、「工程に分けないとこういう場合に
うまく行かない」ことなのです。
工程を分割せずに済むなら、分割しないほうが良い
という主張に反論するためには、消極的理由ではなく、
積極的理由をあげる必要があります。
言葉を変えて、今一度問います。
開発作業を複数の工程に分ける積極的理由はありますか?
工程に分けることによって、品質は向上しますか?納期は短縮されますか?
コストは削減されますか?
まだつづきます。
たとえば、分析や設計は整合性が重要なので、並行作業すると危険ですが、実装に関しては作業を分割して複数メンバーに割り振ることで、並行作業が可能になるのではないでしょうか?
「工程を分割することで、並行作業が可能になり、納期短縮が可能」というのは、「納期短縮のために、並行作業ができるように工程を分割」するということであって、納期短縮のために開発コストを犠牲にしているに過ぎないと思います。
工程を分割し並行作業しても、工程を分割しない場合と同じ開発コストでは納期短縮は可能になりません。
次に、各工程の見積もりを出した結果とクライアントからの要望をあわせて、各工程を誰に任せるのかを決めるはずです。このとき、何に重点をおくかによって、必然的に仕事分担が決まってくるのではないでしょうか。
ここからは管理者のスキルになるのでしょうが、クライアントから要求されている品質、納期、コストから算出した結果、一人に任せた方がよいならそうするでしょうし、複数のメンバーへ任せた方がよいならそうします。もちろん複数のメンバーが関係する場合は、メンバー間の調整に必要なコストなども計算に入れることでしょう。
いずれにせよ、スケジュール管理は必須でしょうから、工程分割は必要な気がします。
いや、さすがにですね、資金調達から設備調達、設定、進行状況の報告、クレーム対応、関係各社との調整をしつつ、開発をして運用まで持っていって、そのままサポート窓口までやりつづけるというのは、かなりしんどいのではないかと思います。まぁ、社長になればやるしかないですし、やるのが当たり前なので、工程をわける積極的理由が見つからない場合は、独立して生きていくことを選択肢のひとつとして考えてみると、よいのかもしれません。
(脱線させていたらごめんなさい)