Re: ソフトウェア工学とソフトウェア開発中二病

id:kwatchさんの「従来のソフトウェア工学が決定的に間違っている点」だが、ありがちかつ決定的な勘違いを1つしている。

それは、『現在のソフトウェア工学は、属人性の排除を目的としている訳ではなく、目的を達成する為の結論として属人性の排除を要素として構築されている。』という事だ。なので、それは間違っている・いないの問題ではなく、むしろコアなのである。ここが問題なのだ。

ソフトウェア工学とソフトウェア開発中二病 - milogicであるかのような日常

『目的を達成するための結論』? 「手段」ではなくて?
「結論」だと何を言ってるのかさっぱりわかりませんし、仮に「手段」の間違いだとしても、手段が『間違っている・いないの問題ではない』ことがわかりません(間違った手段なんていくらでもあるよね)。

ではなぜ現在のソフトウェア工学には「属人性の排除が要素として必要」でなければならないのか。

基本に立ち返って、ソフトウェア工学の目的とはなんだろう。それは「ソフトウェア開発が産業として安定成立する事」だろう。そこでこれを、大目的とする。

これ、本当ですか? ソフトウェア工学の目的は「品質の高いソフトウェアを予算内で期日通りに作成する」とかなんとか、そんな感じだと思ってました。まさか『産業として安定成立する事』だとは、ソフトバンクもびっくりの予想外です。

あまりにびっくりしたので、ぐぐってみました。自分で探した範囲では、産業としての成立を目的とするなんてのはひとつもありませんでした。

ソフトウェア工学は, ソフトウェア開発で必要な一連の活動に理論的な基盤の上に立った実践的な方法論を与えることを目的とし, 手工業的に行われてきたソフトウェアの設計・製造・保守を工学的に扱うための技術体系を提供する.

ソフトウェア工学(電子情報通信学会)

ソフトウェア工学の目的は,いかにしてソフトウェアの生産性と信頼性を向上させるかを探ることである。

ソフトウェア工学B(芝浦工業大学)

ソフトウェア工学が目的とするところは、端的に言えば「ソフトウェア危機を解消すること」である。

第 1 部 ソフトウェア工学とソフトウェア危機(東京情報大学)

milogicさん、ソフトウェア工学の大目的が『ソフトウェア開発が産業として安定成立する事』であると説明された文献なり記述なりを紹介してもらえませんか。いくらなんでもこれだけ前提が違うなら、話になりません。

では、さらに考えて「産業として安定成立」するにはどうしたらいいだろうか。

大目的を成立させる為の、最低限の条件として考えられるのが、

・条件1:成果物の品質安定
・条件2:関連人材の安定供給
・条件3:産業内で流通するマネーの明確化

の3つ。いわゆる「ヒト・モノ・カネ」だろう。ソフトウェア開発が大規模産業であり続けようとするならば、それが接する外部産業との信用関係上、これは欠く事のできない要素であるはずだ。

はあ、左様ですか。
確認ですけど、これは『産業として安定成立』するための『最低限の条件』であって、プロジェクトを成功させるための条件や、高品質のソフトウェアを開発するための条件ではないですよね?

 これは「条件2」に反する。30倍も優秀な開発者が安定的に存在すれば産業として問題ないが、現実にはその存在確立は30分の1以下でしかない。「そんな事はない!30人いれば1人以上はいるはずだ!はてなを見ればわかる!」という話は間違っている。「産業」の意味する対象は広く、産業に従事するはずの人間は全て含まれ、えり好みできないのである。「プログラミングに興味がある人のみ」なんて狭すぎる人材を前提には出来ず、他業種と同じように「経験も無く、単に仕事としてしかソフトウェア開発を考えられない新卒」も含めて成立できなければ産業として十分に大きくなれない。となると、その存在確立は産業全体で1000分の1以下にはなるだろう。

優秀な人材が安定して存在しなければ、本当に産業として成り立たないのでしょうか。
たとえば弁護士のように極めて高度な試験に合格しないとなれない職業でも産業として成り立っているように思うのですが、milogicさんとしてはこれは産業とは認められないのでしょうか。もし認められないのなら、その理由をお聞きしたい。

 それでも「産業全体を、30倍の人だけで形成すれば・・・」というのも考える事はできるが、それは虫が良すぎる話だ。その採用だけでも膨大なコストがかかるし、それを前提としたソフトウェア工学では、逆に破綻のリスクが高すぎる。産業のサイズとしても、大きくできない。

膨大なコストがかかる根拠がわかりません。また破綻のリスクが高すぎると言い切る根拠も分かりません(今のままでも十分破綻のリスクは高いですよ)。
あと、産業のサイズがなぜ出てくるのかさっぱりわからりません。産業を大きくすることよりも、プロジェクトを成功させることや質の高いソフトウェアを開発することのほうが重要ではないのですか? また必要とされるプロジェクトやソフトウェアが滞りなく開発できるなら、産業として大きくする必要なんか別にないと思います。つーか、デスマーチで多くの人が苦しんだり鬱病や自殺者が多数出るような産業なんか、なくなったほうがいいでしょう。少なくとも今までのやり方だと不幸になる人が多すぎます。

あと『30倍の人だけで形成』するなんて、誰も言ってませんから。

 では、チームの一部に30倍開発者を含むとするソフトウェア工学を考えてみるとどうなるか。仮に「30倍 対 平凡」の存在比を、非常に高めに見積もって100人に一人の「1:99」で存在するとしよう。この場合、50人(!)の開発チームに30倍の人が存在できる確立は1/2だ。それ以下のチーム人数なら、さらに低い。半分以下の確立でしか存在しえないチームを前提としたソフトウェア工学は、安定的な人材供給と開発品質確保をしているとは言えないだろう。なので、条件に反する。

なんでこんな極論してるんですか? もう一度もとのエントリ読んでもらえます? 個人の能力差はとても大きいのだから属人性を無視するのはおかしい、それよりも属人性を活かした方法を考えるべきだ、というだけの話ですよ?

それから人材を確率で考えるのは新しい視点だとは思いますが、間違いではないでしょうか。問題を解けるだけの人材がいないなら、その仕事は受けるべきではないでしょう。そもそも仕事をこなせるだけの人材がいるから仕事を受けるのであり、1/2の確率でしか人材を用意できないような会社なら仕事を受けるべきではないでしょう(つーかそんなブラック会社は潰れて欲しい)。

 これは「条件1」に反する。ソフトウェア開発がそういう類の仕事でしか存在しえないなら、ほとんどのソフトウェア開発品質*1が安定しない事になり、産業として信頼されず、結果として大きくなれない。

なんかみんな大きさ自慢してますね。大きい事はいいことなんでしょうね、milogicさん的には。
あと『ほとんどのソフトウェア開発品質が安定しない』ことの根拠が分かりません。

そのためには、すごく頭のいい小学生1人にたよらなくても、安定した開発品質を保てなくてはならない。その目的に沿ったソフトウェア工学になっている。さらに言えば「大人100人より、すごく頭のいい小学生」は、現実には前述のとおり10000分の1以下でしか存在しないだろうから、「条件2」にも反する。

『10000分の1以下』ですか。まあこんな数字は正確じゃなくてもよくて、とにかく非常に数が少ないということがいいたいんでしょう。
で、これは30倍開発者の数を表しているということでいいんですよね?

なんか「スーパー」とか「30倍」とかにこだわる人に聞きたいんですけど、なぜスーパーで30倍な開発者だけで開発すると思い込んでいるんですか? 能力が30倍違っていたとして、そのうちで能力がいちばん高い人だけで全部やらなきゃいけないなんて、誰が主張してるんです?

いい加減、自分の誤読に気づいてください。

 このように、近年のソフトウェア工学は「産業工学として色々考えた結果、属人性を考慮していては産業といて安定しないという結論になった」のである。なので、間違っている・いないの問題ではない。

ソフトウェア工学の目的が産業として安定する事であるというのは初耳なんで、それが書かれた文献なり何なりを紹介してください。また現在のソフトウェア産業は十分大きくて安定しているので、milogicさん的には現在すでにソフトウェア工学の目的は達成できたんじゃないでしょうか。

そのあたりを考慮せずに、30倍開発者の不満や、まつもとさん辺りの特殊条件だけを見て「現状のソフトウェア工学は間違っている」というのは、間違っているのではなかろうか。

考慮の仕方が根本的に間違ってるのではないでしょうか。

 もし、「属人性を考慮しても、大きな産業として十分安定する」方法が発見されたり、n倍開発者を量産可能な教育手法が開発されれば、ソフトウェア工学としての前提が変わる*2ので、その方向に行くのだろう。工学には大目的があり、それは明確に存在し、それに向かって構築される・されているのである。結果だけしか知らなかったりや、産業の一部特殊ケースに特化して、ソフトウェア工学について論議を始めるとおかしな話になる。

 しかし思うに、産業全体の大きさや工学の大目的を理解できずに、自分の周辺のみを見て憤るのはよくある話で、開発者としての成長過程で誰もが一度は通る道のように思う。言うならば「ソフトウェア開発中二病」とでも言うべきか。そして優秀な開発者である程、ここで足踏みしすぎたり、最悪は潰れたりする事がある様に思う。ここを抜けさえすれば、自分の立ち位置やアイデンティティ、業界内での動き方もスムースに考え始められるのにもったいないな、と感じるばかりだ。

 もしかしたら、今のソフトウェア産業が、もう一段成長するのに必要なのは「ソフトウェア開発中二病・対策メソッド」なのかもしれない。:p

そうですね、効果の上がらない工学的な方法と、効果のありそうな中二病的な方法のどちらかを選べと聞かれたら、自分なら間違いなく後者を選びますね。何の迷いもなく。

あとこれだけ立派な、日本語としてはほんとうに立派な文章が書けるのですから、文章を書く能力は優れていると思います。あとはもう少し基本的な読解力を身につけていただければ、将来は30倍な開発者になること間違いなしです。