回答(全15件)
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
11
この機能は開放されていません
評価を下げる条件を満たしてません
近い未来に変更予定の仕様を想定して設計してあれば強いと思いますが、何でもかんでも変更に強いかというとそうではないとおもいます。
オブジェクト指向の最大のポイントは"プログラムの再利用"だと思います。コード量を減らすにはいいかもしれませんが、変更には弱いと思います。
変更したことによって、それを使っているモジュールが正しく動くかどうかは未知数です。オブジェクト指向が逆に足かせになってしまうのではないかと思います。
前述のとおり、ちゃんとあらかじめ変更を想定して入出力を設計してあれば最小の手間で変更が可能だとは思いますが、高いスキルと計画性が必要だと思います。
2~4は開発手法などの問題ではなく、日本の受発注における諸問題のせいだと思います。
技術を知らない文系営業が適当に見積もって受注した案件を、プログラムが書けないSEがこねくり回して、頓珍漢な仕様で孫請けひ孫請けの単価もレベルの低いプログラマに作らせる…。
この構造が何とかならない限り改善しないと思います。
日本の電子産業が比較的強い(強かった(涙))のは、無意味な孫請けひ孫請けが少なかったからだと私は思っています。
スーパーハッカーを雇えばいい、という意見ですが、確かにそういうプロジェクトもあると思いますが、銀行や官公庁の大規模プロジェクトといった仕事は、彼らにとっては"つまらない仕事"と思っているとおもいます。もっと稼げて、クリエイティブな仕事がたくさんありますし、そういう人たちは自分で仕事を生み出す人たちです。仮に単価が高かったとしてもやりたがらないでしょうし、そもそも日本の多くの経営者にはそういう人材に高給を出そうという発想すらありません。
2016/09/12 12:45 投稿
コメント(7)
2016/09/12 13:00
> オブジェクト指向の最大のポイントは"プログラムの再利用"
再利用自体はOOP以前の構造化プログラミングから意識されていたわけで、それをOOPの最重要点に上げてしまうのは焦点がずれそうですね。
2016/09/12 13:09
そうですね、OOPじゃなくても適切にやれば再利用はけっこうできます。
それに、官公庁や銀行の業務内容など、根本的には何十年もそうそう大きな変更がないはずであり、だったら再利用がうまく機能していれば年々開発期間は短くなっているはずです。
しかし現実には同じようなシステムを毎回毎回フルスクラッチ的に長期間かけて開発してますので、実際OOPの再利用はうまく機能していないと言えるのではないでしょうか。
銀行の業務システムなんて、日本全体で共通した基本パッケージでも作ってみんなそれ使えばいいじゃんと思うのですが。
2016/09/12 15:38
>公的システムや金融機関システムを開発する人たちの中でスペシャルに能力が高い人
大規模な業務系なシステムの場合、実はプログラミング能力は並みレベルで十分なんですよね。革新的なコードを書く人よりも、仕様通りに、わかりやすく、正確にコーディングする人のほうが好まれます。
スペシャルに能力が高い人が必要な部分は、プログラムよりもマネジメントと設計の部分かなと思います。
ですが、これも日本の産業構造の問題の一つですが、適切なスキルを持つ人に、適切な権限と責任、そして報酬が与えられていないことですね。
2016/09/12 15:56
>スペシャルに能力が高い人が必要な部分は、プログラムよりもマネジメントと設計
おっしゃりたいことは理解できます。
しかし、実はそれこそが問題なのでは、とも思います。
「スペシャルな人は上流やマネジメント工程へ」、すなわち「プログラムを下に見ている」、これが問題の本質なのでは。
良いソース・コードはそれ自体が設計書になる(詳細設計なんか特に)という意見もありますし、スペシャルな人ほどプログラムやるべきだし、そもそもいわゆる上流と下流を明確に分けたり、ましてや下流を文字通り「下」に見る風潮が根本的に悪いような気が。
2016/09/12 18:30
>「スペシャルな人は上流やマネジメント工程へ」、すなわち「プログラムを下に見ている」、これが問題の本質なのでは。
いや、私が言いたいのはそうではなく、プログラムをかけないシステムエンジニアと呼ばれる意味不明職種の人たちが一般的に言う上流工程で設計している、そしてなぜか、立場上プログラマより"えらい"ことになっているのが問題。だと思います。
システムエンジニアという職種は日本独自のものと聞きます。
諸外国では、経験豊富なプログラマが設計を行っているようです。
そこに日本のIT産業の欠陥があるのではと思っています。
設計者もコーディングすべきだと思いますが、本当に大規模なものだと、工程によっては難しいと思います。
2016/09/14 07:53
>諸外国では、経験豊富なプログラマが設計を行っている
日本もそうあるべきだと思います。
もっと言えば意思決定する経営層にもそういう人が一人以上は入っているべき。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
6
この機能は開放されていません
評価を下げる条件を満たしてません
こんにちは。
まず比較対象を明確にした方が良いです。性能比較は常に相対的なものですから。
銀行の事例を上げられているので、COBOLと比較した方がよいでしょうか。
1.オブジェクト指向は本当に変更に強いのか?
COBOLが得意とするような単純だが大規模な帳票処理を実装するにはあまり向いていないと思います。
COBOLのようにひな形も充実していないでしょうし。
では、COBOLが想定していない処理、例えば新しいWEB技術との連携はやはりJava等の方が向いているように思います。
変更に強いかどうかは対象のアプリで変わるでしょう。特化されたものほど想定内の変更には強く、しかし、想定外の変更には事実上対応できません。
OOPはCOBOLに比べて常に変更に強いとは言えないと思います。でも、COBOLに比べて対応範囲は広く、COBOLが苦手とする分野では決定的に変更に強いでしょう。
2.なぜOOP開発での失敗例が多発するのか?
OOP開発を習得するにはCOBOLを習得するより時間がかかると思います。
結果、使える人材が少なくなり失敗のリスクが増えるているのだと思います。
極端な話COBOLはプログラミングを習っていない人でもある程度興味を持っている人なら比較的短期間で使えるようになると思います。OOPはなかなかそうはいかないでしょう。なんとしても習得したいと言う強い意思を持っている人でないとなかなかマスターするのは難しいかと。
ちょっと古いですがCOBOL 言語の評価と展望という資料がありました。この分析には納得できます。
3.失敗例の教訓、改善法はあるのか?
最近の状況を把握していませんが、日経群の中にはきっと分析しているものが多数あるのでは?
昔は本当にたくさんありました。
4.なぜ少数精鋭チームで開発しないのか?
優秀な人の割合が少ないのだと思います。
平均の5倍の生産性を維持できる人はプログラマ100人に一人もいないと思います。
例えば平均レベルのプログラマ1000人の中に5倍の生産性を出せる人は10人いないでしょう。
トータルの生産能力は平均1000人に比べて優秀な人10人では1/20以下の生産能力に下がってしまいます。
生産性を平均の5倍や2倍に下げていったとしてもこの関係が逆転するポイントはないように感じます。
平均の2倍の人は10人に1人とか。
IT土方等の言葉が示すように中々悲惨な職場環境の話が有名になったので、興味がちょっとあるだけで特にやりたいわけではない人は参入してこなくなった。Javaを学んだ人たちが今更COBOLに手を出したくない等の社会情勢的な問題もあるかも知れません。
2016/09/12 13:33 投稿
コメント(4)
2016/09/12 13:46
非常に興味深い考察をありがとうございます。
たしかに生産性が高い人の割合は少ないですよね。
でも個人的な意見ですが、プログラミングにおいては、ダメな人と凄い人の生産性の差って2倍とか5倍とかそういう次元ではないと思います。もう100倍・1000倍違う場面もあるのではないでしょうか。技術・経験・過去の資産、もろもろ合わせると100倍、1000倍の生産性の差が生まれる分野だと思います。
2016/09/12 15:02
横からですが
生産性1が1000人と
生産性5が10人では確かに単純には生産性20:1ですが、
1000人と10人ではコミュニケーションにかかるコストが全然違うので
10人のほうが実はマシなのではと想像してしまいます。
2016/09/12 15:15
ダメな人は決定的にダメですし、ほとんどいませんから(辞めていくなど)、ダメな人との比較は意味が無いです。平均と比較しましょう。大半の人は平均近辺にいますし。
平均的な人には決定的に出来ないことを優秀な人はできると言う差はあるかも知れませんね。その時は100倍、1000倍もありえるでしょう。教育期間が追加されますし、教育してもできないなら生産性0ですから。
でも、平均的なプログラマが対応できない程、難易度の高い部分ばかりの銀行や官公庁系の大規模プロジェクトってあり得ないと思いますよ。大半の部分は平均的なプログラマでも普通の工数で開発できると思います。そのような部分で平均的な人と優秀な人で100倍もの差が付くことはありえないと思います。
2016/09/12 15:28
ozwkさん。
コミュニケーション・コストの問題は確かにありますね。
普通はピラミッドにしてコスト削減しますし、活動時間の大半を打ち合わせやその準備・復習に費やすということもないよう工夫しますから、先に書いたより差の2倍くらいの差で収まるのでは?
1000人で仕事する生産性1の人はコミュニケーションの時間のため生産性が1/2になり、10人で仕事する生産性5の人はコミュニケーションの時間のために5*9/10になるとか。
コミュニケーション・ミスによる手戻りを想定するともっと開くかも。
そこをカバーするのはマネージャの腕ですね。如何に風通しを良くするか。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
5
この機能は開放されていません
評価を下げる条件を満たしてません
まず、前提として、Javaを使ったからと言って無条件にオブジェクト指向になるわけではないと思います。Javaを使ったらオブジェクト指向になるのではなく、オブジェクト指向を実現するための言語としてJavaがあると考えてください。
1-オブジェクト指向は本当に変更に強いのか?
変更には強いですが、程度に寄るし限度もあります。
2-なぜOOP開発での失敗例が多発するのか?
オブジェクト指向で開発されているプロジェクトの母数が多い上に、他の言語をラッピングして再利用するので一番外側の言語に問題が発生しているように見える。
3-失敗例の教訓、改善法はあるのか?
PMBOKではプロジェクトを振り返るフェイズがあります、ここが機能していたらもしかしたら同じ失敗は減るかもしれませんね。
4-なぜ少数精鋭チームで開発しないのか?
1人幾らでお金を貰っていて、作業している人の技術レベルでお金が増減することはないから、利益にならないんじゃないかと思います。
2016/09/12 12:55 投稿
コメント(6)
2016/09/12 13:03
>前提として、Javaを使ったからと言って無条件にオブジェクト指向になるわけではない
銀行や官公庁の大規模プロジェクトに関しては、前提として「オブジェクト指向は当たり前」と考えていいのでは? それとも、そんな数百億円とかが動く日本有数の規模の仕事でも、まともなOOPが出来ない人たちが上流にいるのでしょうか?
>プロジェクトの母数が多い
今回は大規模なプロジェクトに限ってお尋ねしております。
数百億・数千億の仕事で頻繁に失敗されては困ると思うのですが・・・
>1人幾らでお金を貰っていて・・・
現状がそうであるのは分かりますが、なぜ改善しないのか?が疑問です。
内側の人が声を上げて政府なりなんなりに文句言うべきでは。
2016/09/12 13:28
設計者と実装者が同じ人、同じ会社、またはすぐに連絡できる場所にいると思いますか?
設計者はオブジェクト指向に則り設計をします。実装者は設計書をもとに道具「Java」を使ってオブジェクト指向を実装しようとします。
設計がまずい場合もありますが、実装がJavaを使ったなんちゃってオブジェクト指向なら恩恵は減りますよね?
プロジェクトの母数について
そうですか。プロジェクトの成功失敗とプロジェクトの大小とは関係ないと思いますが。
お金について
「私の会社にスーパーハカーレベルの技術者がいて、100人月分は仕事します。」
「私の会社は技術レベルが高いので、100人月を担当しますよ。だから契約単価も高めになりますよ。」
こんなこと言い出したら取れる仕事も取れないような気がしますね。
あなたは具体的に政府になんと言うつもりですか?
2016/09/12 13:33
>設計者と実装者が同じ人、同じ会社、またはすぐに連絡できる場所にいると思いますか?
いないから問題だと思います。
これは技術の問題というよりも受発注の問題だと思いますが。
>プロジェクトの成功失敗とプロジェクトの大小とは関係ない
話がかみ合っていませんね。
あなたが「母数が多いから失敗も多い」と書いたので「大規模の母数はそんなに多くないし、大金かけて失敗されまくったらアカンでしょ」と私は返答しました。それに対する
「成功失敗と規模の大小は無関係」というあなたのコメントは的外れで話がかみ合っていません。
>お金について
ちょっと何を言っているのか分かりませんし、この狂った現状を改革しようという気持ちもないようですね。
2016/09/12 13:52
話が噛み合いませんね。表現が足りない部分が多すぎました、ごめんなさい。
ただ、私が考えてる解決方法はあります。
IT従事者特に専門的な知識を持つ人間がフリーランスになること。または、会社内でフリーランスに近い流動性のある人事をおこなうこと。
2016/09/12 13:56
なるほど、それはいい解決アイデアの一つですね。
でも現状では日本全体の雇用環境が足かせになりますね。
厳しい解雇規制が撤廃されて雇用の流動性があがり、さらに正規・非正規の区別がなくなるような状況にならないと、なかなかサラリーマンを辞める勇気を持つ人はいないでしょうね。
2016/09/12 15:23
これが実現できれば、オブジェクト指向の設計ができる人が設計を行い、Javaを使ってオブジェクト指向を実現できる人が現場に増え、オブジェクト指向の恩恵を十分に受けることができるはずです。
あなたが言う設計者と実装者が同じ開発現場にいることもできる気がします。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
4
この機能は開放されていません
評価を下げる条件を満たしてません
大規模案件に参画経験はないので、
ある程度想像の入った話となりますので、参考までに。
開発モデルの問題
大規模案件では基本的にウォーターフォール開発モデルが利用されると聞きます。
恐らくはそれ単体ではなく、
一部スパイラル開発モデルも利用されているとは思いますが・・・。
この開発モデルの1番の問題点は手戻りが発生した時の差し戻しがとんでもなく手間がかかることです。
でも普通に考えると要求仕様は生き物のように変わり得るので、
開発当初と言ってたことが違うやんみたいなことが簡単に発生し、
結果その部分の元々の設計と大きく食い違うと大幅な遅延を招きます。
じゃあスパイラルモデルとか、
今流行りのアジャイルを採用すればいいじゃんと言われかねないですが、こちらはこちらで問題があります。
それは全体としての見積を取るのが容易ではないことです。
大体大型のプロジェクトとなると、
最初の時点である程度見積を出して、顧客がそれに対して採否を決める形がほとんどだと思われます。
仮にスパイラルモデルとかアジャイルとかを採用してプロジェクトを進めた場合、
それこそ先行きが読めず規模が膨らみまくって破綻するということが予想されます。
またアジャイルとかとなると、
顧客も開発・仕様決定に積極的に関与してくれないとこれも破綻しやすいです。
そのため結局はウォーターフォールベースの開発に落ち着いているというのが現状かもしれません。
産業モデルの問題
IT産業では請負元から、下請け発注をかけて開発を投げるというのがお家芸となっているので、
構造上どうしても色々な企業や多くの人員が関わってきます。
これによって、組織間のコミュニケーションはどうしても発生するのですが、正直この部分でうまく伝達が行えていないパターンも多いように思えます。
少なくても中規模な案件ですら、
伝達ミス、思い違いなどによる実装漏れや実装ミスが生まれるのですから、
大規模案件ではその辺りを徹底的に管理してないとすぐにそのような事態が発生すると思われます。
でもそれでも今のIT産業が冒頭のような構造で成り立っているので、
抜本的に変わらない限りここの変化はまずあり得ないでしょうね。
人員確保の問題
Javaとかではよく言われてますが、
割と良い人材は囲い込まれていますし、
スーパーハッカークラスになると、
案件自体に興味すら持たないことも多そうなのと、
どうやって本当にそのクラスの人材であると判断するのかといった別の課題が発生します。
そうなると結局は大規模案件は、
ある程度信頼のできる実績のある大企業に発注をかけ、
ITの産業モデルに従いずるずるととなるのかなと思います。
最後に
あくまで個人的な意見ですが、
設計スキルや実装技術云々よりも、
管理面とか産業構造によって起こっている遅延とかが起こる側面が強いのかなと思ってます・・・。
2016/09/12 13:38 投稿
コメント(2)
2016/09/12 13:51
ウォーターフォール開発モデル自体に限界があるのに、さらにそこに日本特有の商習慣(多重下請けなど)が混じって悲惨なことになっていますね。
個人的には税金を投入する案件については下請けに投げるのを禁止すべきだと思います。
元請が直接雇った社員のみ開発に参加するように義務付ければ、日本のIT界は改善すると考えています。
2016/09/12 18:19
> zico_teratailさん
確かにそのような制約を付ければ、下請け連鎖による開発現場の分散は防げるかもしれませんね。
ただそうなると元請け側の方に優れた人材を選び抜く能力があるかという点の課題はあると思います。
大企業がどのように人材管理しているかは当方把握してませんが、
スキルマップを明確にした管理があることが前提で、
かつ適材適所に割振りがてきないと結局はポシャる気はします。
下請けに流してその辺りの負荷を分散したいという狙いも当然あると思うので、
一筋縄にはいかないでしょうね。
後はIT産業界のお金の循環の側面も絡んできそうな気もする・・・。
ちなみにですが、
銀行系のシステムでは近年COBOLからJavaのシフトが目立ってますが、
正直そういう案件はCOBOLを熟知したスタッフとJavaを熟知したスタッフを揃えないといけない(どちらも万全にこなせる人はなかなかいないし、どちらのスタッフが欠如しても炎上しやすい)ですし、
結局その場合もコミュニケーションコストがかかるから銀行系は厄介なんでしょうね^^;
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
4
この機能は開放されていません
評価を下げる条件を満たしてません
オブジェクト指向は本当に変更に強いのか?
強いです。
しかしそれは、OO以前の構造化技法に対する相対的な強さで、
絶対失敗しない「銀の弾丸」ではないです。
なぜOOP開発での失敗例が多発するのか?
OOが普及して母数が多くなったから、失敗例も増えたのでしょう。
しかし、OO採用と非採用で比較する必要があります。
OOを採用していなかったら、もっと失敗が増えていたでしょう。
また、ご質問はOOが実施できている前提になっています。
しかし、本当は関数型言語と同じくらい難しいが、
OOPは関数型プログラミングより制約が緩いため、
本当はできていない場合が見分けづらいと考えます。
失敗例の教訓、改善法はあるのか?
あるでしょうが、それはOOのような開発技法ではなく、
組織管理の話になるかと思います。
なぜ少数精鋭チームで開発しないのか?
そもそも、大規模開発は企業間での巨額の契約ですから、
そうなるはずだ、という希望的観測で事を進めるわけにはいかないでしょう。
かりに「ウチの会社は千人分の仕事を十人でこなせます」といったところで、
本当にできるかどうかを検証するのが難しいです。だからリスクがあります。
要するに人月的な発想があるのでしょうが、
しかし、それを捨てたら上手くいくとも限りません。
平凡な人材と精鋭とで、本当に10倍も100倍も差が開くかは疑問です。
精鋭との差は量より質の差に出ると、個人的には考えています。
たとえば機械学習のようなジャンルだと行数より精度が問題になります。
しかし、「銀行や官公庁の大規模プロジェクト」は規模は超巨大だが、
極端に難しい処理が固まっているわけでもないので、
少数精鋭のプロジェクトに向かないのではないかと思います。
2016/09/12 16:20 投稿
コメント(3)
2016/09/12 17:13
> 精鋭との差は量より質の差に出る
> 極端に難しい処理が固まっているわけでもないので、 少数精鋭のプロジェクトに向かない
なるほど!
たしかにそうかもしれませんね・・・
プロジェクトの失敗や無駄を減らしたい、詰まるところ税金の無駄をなくし、IT技術者が幸せになる世界にしたい。そう思ってるんですがなかなか難しいですね。
諸外国ではこういった巨大システムの開発はどうやってるんでしょうね?
2016/09/12 17:40
>諸外国ではこういった巨大システムの開発はどうやってる
アメリカでもやはり大規模開発の多くはウォーターフォール式で、
IT先進国だから大規模も少数精鋭、ってわけでもないようです。
>IT技術者が幸せになる世界
ただ、かりに1000人を10人でやったら、雇用が減って困る気もします。
ですから私としては、大規模開発を少数精鋭化するよりは、
日本も米のようにベンチャー企業を作りやすくして欲しいです。
なぜならたとえば、ビル・ゲイツやスティーブ・ジョブズは、
並の人材の万倍も億倍も、付加価値を作り出してますよね。
もしかりに、彼らが大規模開発の一員だったら、
「たかが百倍や千倍」の生産性で終わり、
今のMSもアップルもありませんでした。
むしろ日本の場合、日本的事なかれ主義で起業のリスクを避け、
本来の「精鋭」はすでに大企業に入っていて、大規模開発に参加しているが、
少数精鋭としては実力を発揮できていないのが、真の問題かもしれません。
だから、日本の精鋭にはベンチャーで市場開拓して欲しい、と私は考えます。
2016/09/12 20:36
>かりに1000人を10人でやったら、雇用が減って困る気も
短期的にはそうですが、長期的には心を病んだり自殺したりする人が減っていいと思います。プログラマ的素養は他の業界・仕事でも必要だと思いますしね。
>日本の精鋭にはベンチャーで市場開拓して欲しい
これはまったく同感です。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
3
この機能は開放されていません
評価を下げる条件を満たしてません
いろいろ書いては消し、書いては消ししましたが、結論としては仕様書を書く人の多くがオブジェクト指向を理解していないのでソースコードレベルでオブジェクト指向にするのに限度があるということが大きいです。
大規模開発は政治に渡り歩く能力が求められ、ある種の専門性が高いので、コーディングやオブジェクト指向などのプログラミング方面の専門性の優先順位が低くなります。
少数精鋭にすれば解決するかもしれませんが、銀行ではOOPやドメインモデルを使ったとしても過去から積み上げられた大量のロジックがあり、発注側に大量の仕様書を渡す必要があるため、少数では回らないでしょう。(発注側がソースを読むつもりになれば話は変わりますが・・・)
恐らく公官庁では、発注側の技術的な能力不足のためにUMLなどであっても受け入れるのは難しいと思います。
テスト結果に関しても、発注側として許容される報告書の作成が必要であり、それなりの工数となることが予想されます。
そういったわけで、私は恐らくOOPと言ってもモデリングをキチンとしたものでやられている可能性はほとんど無いと考えています。仕様書を書く工数があまりにも大きいのです。
OOPがまともに機能していないし、仕様変更を人数でカバーできる体制をくんであるので、技術的な問題でプロジェクトが失敗する可能性を回避しています。違和感を感じない訳には行きませんが・・・
ただし、大規模開発にオブジェクト指向が向かないわけではないです。Webやアプリケーション分野では当たり前に使われている技術なので、かなり有効な技術だと思います。
受注開発の場合に問題がおこる場合が多いと考えています。
改善方法としては、発注側に技術責任者をおいて、仕様書を減らしアジャイルな開発方法を採用できれば、真にOOPの恩恵があるでしょう。しかし、技術責任者に権力が集中するので、専任以外に委員会を設けるなど細かい配慮が必要かなとも思います。
追記
優秀な技術者についてのイメージが回答者によってまちまちなので、私のイメージを書きます。
・おおむねタイプ速度は速いですが、2倍も速いということはないと思います。
・コードが短いので早く仕上がります。
・手順がしっかりしているので手戻りが少ないです。もしくは自動化をしています。
・バグフィックスが早いです。
・テストの回数は多いですが、テストを実行する時間は短いです。
・バグは早期につぶされます。
・潜在的なバグが少ないです。
たぶん、この時点で2~4倍程度の生産性の差が出ます。
バグフィックスにかかる時間は思いのほか大きいものです。
それでも、このレベルの優秀さであれば、大量に人を集めても変わらないと判断する人も多いと思います。
さらに優秀な技術者はプロセスにも精通しています。
・テストの管理・変更管理・デプロイなどの定型業務のあるべき姿を知っていて改善することができます。
・不要なプロセスを指摘することができます。
・チェックポイントをまとめ上げ、可能ならば自動化します。
開発チーム全員の生産性を上げることができるので、寄与した生産性は10人分を超えます。
ただし、そうすることが許されればの話で、個別の作業にEXCELの資料を求められたら意味がありません。
さらに、ほとんどが優秀な技術者のチームとなるとこのような効果があります。
(書いてから気が付きましたが、まんまアジャイル開発ですね・・・)
・設計段階からきちんとしたモデリングをすることができます。
・モデリングされたコードを書くことができます。
・開発段階でリファクタリングを行い設計変更による影響を減らせます。
・設計資料は最小限に抑えられます。
・テストを大規模に自動化できます。
・細かいリリースで、ユーザーテストに十分な時間をかけられます。
これができれば生産性は一人当たりの生産性は100倍になっても不思議ではないかと考えています。
もちろんこれを受託開発で行うにはかなりのハードルがあると思われます。
しかし、これは大規模なソフトウェア開発では普通に行われていても不思議ではありません。
(google・Facebook・Microsoft・LINE・楽天 などを思い浮かべてください。)
2016/09/14 01:05 投稿
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
2
この機能は開放されていません
評価を下げる条件を満たしてません
大規模プロジェクトにおいてコーディング・プログラミングが占める割合は小さいのでOOPとは関係ない箇所で遅延しているんだと思いますよ。
大規模なシステム開発でコードを書く時間はごくわずかです。要件定義から始まって、設計、影響調査、レビュー、顧客の承認、コーディング、テスト、リリースまで作業が沢山ありますし、利害関係者の会議日程調整、チーム間の調整など無駄に時間が過ぎ去る要因もあります。
仮に全体の期間が100だとして、コーディングの割合が20だとします。ここで夢のような技術が開発されて、期間が半分に削減されて10になりました。人も費用も50%削減できました!でも、全体としては1割しか削減されてないんですよね。
よって技術的な部分を解決しても意味はないと思います。原因はそこにはないのですから。
2016/09/12 17:33 投稿
コメント(1)
2016/09/13 09:00
そのような純粋なコーディング以外の「無駄な時間」が多すぎるので、それを削る目的もあって「少数精鋭チームでの開発はどうか?」という提案です。
もっと言えば発注側にも罰則なりペナルティが必要だと思います。
特に税金を投入するプロジェクトの場合、発注側のせいでトラブったり納期が遅れたりしたら発注側にもしっかり責任を負わせるべきです。役人天国すぎ。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
1
この機能は開放されていません
評価を下げる条件を満たしてません
面白そうな議論だったので、大規模プロジェクト視点で私の思うところを。
なお、もし質問者さんが大規模プロジェクトの関係者であれば、
1000人以上のエンジニアが身近にいると思うので、
現場で聞いた方が確実かと思います。
(立場によっては聞けないかもしれませんが)
でもOOPであれば、少なくとも仕様変更には強いはず。
なのに、なぜ失敗しまくるのでしょうか?
なぜ仕様変更のたびに膨大な影響範囲の調査・テストが必要なのか?
ある一部分の機能を変更するだけなら、そのクラスの単体テストだけでいいんじゃないの?
⇒仕様変更内容にもよりますが、
例えば、
「○○画面で出力される△△の帳票のこの項目の出力する仕様を
□から☆にする」ような内容であれば、
最初から影響調査が限定されている、と思うかもしれませんが、
これはこれで、単体試験で済むレベルでは収まらない影響調査が必要です。
たとえば、
「□から☆する部分は本当にこの帳票・この画面だけか」
「□の部分は他に参照していないのか」
「□から☆にするには、情報が十分そろっているのか」
「設計の内容・修正内容で、他への影響は本当にないかどうか」
etc...
上記以外にも、全くのど素人相手でも
「どう説明すれば、影響調査で問題ないと証明できるか」
という内容も考えなくてはならないので、
大規模であればあるほど影響調査には時間がかかります。
小規模であれば、「事前の結果がこれで、事後の結果がこれです」と言えば済む話かもしれませんが、
画面や帳票が500以上あるようなプロジェクトでは、
同じ項目がある他の画面や他の帳票等の事前と事後は?という確認が入るでしょうね。
確認する立場の人(品質を担保する人)はどんな作りをしているかなんて、関係ないですから。
しかし数百億円・数千億円規模のプロジェクトに関わるレベルの人ですら
上手な設計が出来ないのであれば、じゃあ一体誰なら上手に出来るのでしょうか?
現実的に「仕様変更に強い」という夢のようなことは期待できないのではないでしょうか?
⇒何を持って「上手な設計」とするか分かりませんが、
質問者さんの言う「上手な設計」が
『1画面・1帳票・1項目の修正があると分かっていない、かつ、予測も無理な時点で、
1画面・1帳票・1項目の修正の導入を1ヶ所修正して単体試験で終わらせて
リリースできるような設計になっている事』
を指すようであれば、誰にもできないでしょうね。
このレベルの要求になると、OOPは飛び越えて、
設計・製造・試験・リリース・運用・保守を全て人工知能化するとかでしょうか。
それだけで、莫大な費用と工数がかかりそうですが、
(最近流行の)人工知能を活用する場合でも、ビッグデータが必要ですから、
「仕様変更のビッグデータ」を作るとなると、当分、無理でしょうね。
(ここで触れてる実現の可否はあくまで簡単な机上の話です。)
また、大規模プロジェクトの中でも、仮に完全独立していて、
「単体試験してOKならリリースしてOK」という場所があったとしても、
「すぐ対応できた分、安くなります」ではなく、
「上手な設計」をした関係者(顧客含む)の単価を上げて欲しいなぁ、
と個人的には思います。
もしOOPが理論どおりに機能する概念だとしても、
開発に延べ何千人も関われば結局グズグズになっていくのではないでしょうか?
⇒そんなプロジェクトもありましたね。何社つぶれたことか。。。
とはいえ、何千人居てもうまく回ってる(大事なニュースにならない)
プロジェクトは表に出ないだけで、存在しているので、何とも言えないです。
少数精鋭でやったほうが速く安く正確に開発できるのでは?
⇒パレートの法則は無視されますが、机上はそうなります。
ただ、集める段階でうまく行かないと思われます。
100人に1人居るか居ないかのレベルの人は、
既に参加している現場が手放したくない状態でしょうから。
お金チラつかせて既に参加している現場を無視して、
ヒョイヒョイ乗っかってくれれば楽でしょうが、
人間には人情もありますので、
人探しだけで数ヶ月~数年かかるでしょうね。
また、少数精鋭の場合、誰か1人でも体調を崩す等で欠けたら、
スケジュールに大きく影響するため、顧客側が
リスク(スケジュール・追加費用等)に寛容にならないといけませんが、
納期絶対の官公庁系では無理でしょうね。
それと、開発をする上で、
「優秀な人がわざわざやらなくても良い作業」
「優秀な人でなくても出来る作業」
「優秀な人でも普通の人でも作業スピードの差が少ない」
というのが必ず存在します。
こういう作業をわざわざ超高給の人にやってもらうのは、
逆に費用対効果が悪いと思います。
また、保守性について、
ずっと続くような官公庁システムの場合、
いつまでもその優秀な人たちだけにやってもらうわけにもいかないので、
100人に1人居るか居ないかの「卵」を育てるor見つける必要があります。
その優秀な卵も途中でリタイアするかもしれませんが、
今後も安定したシステムを提供し続けるには、数千人のうちの数十人が必要不可欠と思われます。
数千人規模のエンジニアと言っても、
優秀でない人の中身はコロコロ変わっているので、
超優秀な人材数十人を雇う≒数千人規模の開発であることは割と理にかなってる気はします。
最後に半分ボヤキですが、数千人規模の開発において、
優秀な人材は他に行ってしまうリスクが大きいので、
所属している会社側でワークライフバランスをどうにかするか、
受注側で給料の配分はどうにかするか、
発注側で個別支給とかがあると良いのかもしれませんね。
2016/09/13 04:53 投稿
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
1
この機能は開放されていません
評価を下げる条件を満たしてません
オブジェクト指向は本当に変更に強いのか?
オブジェクト指向という道具を適切に使用することが出来れば、オブジェクト指向が出る以前に比べ、変更に強くしやすくなった、と言えます。
何故、このように歯切れが悪いかと言うと「オブジェクト指向」というもの自体は、あくまでツールの一つであり、使わない場合における「万人がよく陥りやすい問題」を、このツールの使用によって少なくする事は可能ではあるものの、同時に、このツールの使用によって新たに生まれた独特な複雑性も存在します。
毒の部分が強調されてしまうか、薬の部分が強調できるかまでは「オブジェクト指向」というツールは関与しない為「変更に強い」という言葉の文脈に応じ、そうとも言えるし、一概にそうとも言えない、とも言えてしまいます。
なぜOOP開発での失敗例が多発するのか?
このご質問の前提とし「でもOOPであれば、少なくとも仕様変更には強いはず。」という思い込みがあるように感じられますが、前述の通り、OOPであってもそうでなくても「仕様変更」というものは要求から設計に落としてコードに落とした過程そのものを覆す、上位の出来事です。(要求の変化、または設計ミスによる辻褄合わせ)
仕様変更の度合い次第では、OOPが適切に使用されていて助かったという局面もあれば、その仕様変更は勘弁…という仕様変更もあります。
しかし、どちらにしても、手を付ければ付けるほど乾燥した砂の城のように意図しない所からボロボロ崩れていく状態になりがちな可能性のある方法と、少しは水分を含んだ砂の城に手を入れるのと、どちらがマシかといったら後者でしょう。
変更に対する強度は、OOPを全く使用しないよりは多少マシというものです。
失敗例の教訓、改善法はあるのか?
それらの教訓から、模索しつつ進んでいる過程と考えます。
OOPの抱える問題点や、開発手法(今回の場合、大規模開発、ウォーターフォールモデルに絞ったほうがイイのかな…)が抱える問題点などを解消する為、OOP+αの何かだったり、様々な開発手法が生まれています。
ただしここにおいても、やはり万能の銀の弾丸は存在せず、宇宙のしがらみによったり、今回はこれでよかれと思ったものがフィットしなかった、という不幸は付きまといます。
むずかしいですね…。
なぜ少数精鋭チームで開発しないのか?
・他社との差別化を要求するが故に共通パッケージのようなものでは済まない
・既存のシステムを完全置換できない、あるいは最低限連携できないと困る為、接合部は共通化できない
とか考えてみましたが、弱いですね。
流石に実績が無ければ任せづらい、という事実はあるにせよ、例えば歴戦のSIerで、いわゆる本当にデキる「公的システムや金融機関システムを開発する人たちの中でスペシャルに能力が高い人」達が結託し、過去のノウハウを集約し、パッケージ化した金融・公的システムに絞って作成・販売する集団が、自前で銀行作って運用し始めちゃうくらいの所から実績もひっさげつつ出てきたりしてもおかしくはないような気がしますが、それが出てこない理由が何かあるのでしょうね…。
2016/09/18 03:57 投稿
コメント(1)
2016/09/18 11:09
示唆に富んだ素晴らしいご意見ありがとうございます。
一つのご意見として非常に具体的で勉強になりました。
>それが出てこない理由が何かある
既得権益層(大企業や役人など)のビジネス上・金銭上の理由だけだと私は思います。
そうでないとこの非合理な多層ピラミッドによる搾取構造と無駄な仕事の利点なんか本当は存在しないはず。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
1
この機能は開放されていません
評価を下げる条件を満たしてません
なんか「面白そうな話題だったので~」みたいな事言ってる人いますが、
全然おもしろくもなんともない話題ですよ、これ。
なのに、なんでみんな、本当のこと教えてあげないんですか?
・なぜOOP開発での失敗例が多発するのか?
・なぜ少数精鋭チームで開発しないのか?
答えは、ゼネコン体質だからですよ。
Nなんちゃらとか、Hなんちゃらとか、Fなんちゃらとか、Tなんちゃらみたいな「名の通った馬鹿デカイ会社」が仕事を請けるけど、基本的にそいつらは何にもしなくて下請け会社に丸投げします。
その下請け会社もさらに下請け会社に丸投げします。それを何回か繰り返して、
4次請けとか5次請けとか、場合によってはさらにその下の会社に来ている、ほとんどがマトモなコードさえ書けないレベルのやつがプログラムつくるからですよ。
そうすっと、その階層構造で伝言ゲームしまくることになって、無駄なドキュメント作成や連絡の時間が膨れ上がっていきます。伝言ゲームやった事あるでしょう?最初と最後で全然違う物になること、しってるでしょう?
で、プロジェクトが遅れ始めると、「やばい、もっと人増やせ!」ってなって、どんどん人員規模がでかくなってくんです。予算だけは無駄に膨大に確保してありますからね。
人員規模がでかくなると、さらに伝言ゲームがむずかしくなっていって、統制がとれなくなっていきます。人を増やせば増やすほど、開発が難しくなるんです。こうなったらもう、手遅れですね。どうしようもありません。
・失敗例の教訓、改善法はあるのか?
教訓はもう、最近、あちこちから声が上がっています。
3,4年前の「特許庁の56億円プロジェクト大失敗」の顛末を読んでみて下さい。
あれが特別な例なのではなく、あれがこの国の本質なのです。
上記が原因なので、つまり、その一番最初のところを改善する以外に方法はないですよ。
要するに、OOPがどうしたとか、そんなのとは全く関係無い低次元なところで失敗しているんです。
だからこの質問は、全く関係ない2つの事を結びつけようとしている、頓珍漢な質問だということです。
ちなみに、最近の例の「みずほ銀行のプロジェクトがヤバイ」という話は、さらに話がややこしくなってます。
銀行の大統合のせいで、今のみずほ銀行のシステムは元あった複数の銀行のシステムをつなぎ合わせたハリボテみたいな状態みたいです。
だから、「これは統合しなければ」ってなったみたいですが、元々別銀行で別の手続きで行っていたものですからね、そう簡単には行きません。
全部の仕組みがわかってる人が何人かいれば簡単なんでしょうが、多分、一人も居ないんじゃないでしょうかね?
そこに前述のすばらしきゼネコン文化開発を持ち込むんですから、うまくいくわけ無いですよ。
現場で働いていた末端のプログラマの声とかも探せばみつかりますが、もはや、人間の働く場所ですら無かったみたいな感じですね。
そんなところに、スーパーハッカーな人がくるわけないですね。
寧ろ、絶対に避けるでしょう。
そういうことです。
2016/09/20 13:07 投稿
コメント(5)
2016/09/20 13:41
そんなことが全部明るみになってきたから
120年ぶりに「契約」に関する民法が改正される運びとなったようです。
http://www.techvan.co.jp/media/quality/civil-code
これを「恥ずかしい事だ」と思えないやつは、本当はシステム開発に関わっちゃいけなかったんです。
2016/09/20 14:12
ゼネコン体質が諸悪の根源だというのは大賛成です。
それによって情報伝達やら何やら、いろいろなコストが爆発的に増えますからね。
で、OOPは全く関係ないのかというとそうでもないと思います。
ゼネコン体質的な方法論とOOPは相性がいいと思うから。
極端な話、OOPだからこそ(それがいいかどうかは別として)多層ピラミッド構造での分業化がしやすいという点はあるでしょう。
2016/09/20 14:27
> で、OOPは全く関係ないのかというとそうでもないと思います。
> ゼネコン体質的な方法論とOOPは相性がいいと思うから。
> 極端な話、OOPだからこそ(それがいいかどうかは別として)多層ピラミッド構造での分業化がしやすいという点はあるでしょう。
そう、そこまで分かってるなら話は早いです。
あなた自身が答えを出しているじゃないですか。
そんなメチャクチャな開発やっていても、現実にはそれなりには結果は出せている。失敗も多いけど、なんとか動いているものも沢山有る。
つまり、OOPは「一定の効果を上げている」んです。
OOPじゃなければそれはもっと難しかったはずですよ。
それが最後に残った質問
・オブジェクト指向は本当に変更に強いのか?
の、僕の答えです。
2016/09/20 14:31
>現実にはそれなりには結果は出せている
いや、多重下請けを法律で禁止すれば、もっといい結果が出せたのでは?
税金投入額は10分の1以下で済んだのでは?
>OOPじゃなければそれはもっと難しかったはず
そうかなぁ?
ピラミッド構造じゃなければ、OOPでない方法でもやれたはず。
私の質問の本質は、OOPの有用性の是非はもちろんですが、そこから結局無駄(特に税金の)をなくせるかどうかです。
2016/09/20 14:36
> いや、多重下請けを法律で禁止すれば、もっといい結果が出せたのでは?
> 税金投入額は10分の1以下で済んだのでは?
勿論そうでしょうね。で、それはあなたが聞きたいOOPの有効性と何か関係があると、
まだ思っているのですか?
> ピラミッド構造じゃなければ、OOPでない方法でもやれたはず。
じゃ、ピラミッド構造にしない方法を考えるのが先ですね。OOPの有効性について考えるのはその後の話ですね。
> 私の質問の本質は、そこから結局無駄(特に税金の)をなくせるかどうかです。
だから言ったでしょう?
>上記が原因なので、つまり、その一番最初のところを改善する以外に方法はないですよ。
って。
OOPがどうしたなんてのは全く関係ない話だと、まだわからないんですか?
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
0
この機能は開放されていません
評価を下げる条件を満たしてません
面白そうな話題なので、私も回答してみようと思います。
オブジェクト指向は本当に変更に強いのか?
本当です。きちんと設計されていれば。
理由は簡単です。オブジェクト指向設計では「変更可能性を織り込んで」設計をする事ができるからです。
ここはこんな風に変更するんだよ。と明示されているわけです。
そのような設計が変更に強いのはむしろ当然のことではありませんか?
なぜOOP開発での失敗例が多発するのか?
OOPだから失敗した、というわけではないのではないですか?
失敗例の教訓、改善法はあるのか?
それがわかっていたら大金持ちになれます。
なぜ少数精鋭チームで開発しないのか?
属人性をなくしたいからだと思います。
SIerはSIの工業化という夢を見ています。
だれがやっても同じものができる。というものです。
そうすれば、工場で流れ作業のようにプロジェクトができます。
優秀なエンジニアに頼ると、その人間がいなくなるとどうにもならないし、それはエンジニアの価値
であって、SIerの価値ではなくなってしまいます。
SIerの価値とは、だれがやっても一定水準のシステムを作れる方法論を持っているということだ。
そう彼らは考えます。
だから、彼らは少数精鋭など絶対にしないのです。
2016/09/17 20:57 投稿
コメント(4)
2016/09/18 00:18
>「変更可能性を織り込んで」設計をする事ができる
具体的にどうやるのでしょうか?
あるいはどういう単語でググればそういう事例が見れますか?
>OOPだから失敗した、というわけではないのではないですか?
OOP「なのに」失敗したケースについて質問しています。
>それがわかっていたら大金持ちになれます。
巨額の税金を投入した仕事で、しかも何十年も知見が蓄積しているはずの分野でいまだに何度も何度も失敗されてたら困ります。いっそのことパッケージ化して業務をパッケージに合わせろよ、と言いたくなります。
>属人性をなくしたいから
属人性をなくしたいからこそオブジェクト指向で作るのであって、チーム人数の多寡は関係ないでしょう。
実際、多人数でやってるのに属人性が散見されてデスマの一因となってる事例が多数あるじゃないですか?
>工場で流れ作業のようにプロジェクトができます
だからもうゴミみたいな特注品はやめて、みんなパッケージにしろよ、と思います。
まあこれは受注側の問題というよりは発注側の頭が悪いせいですが。
2016/09/18 01:39
> >「変更可能性を織り込んで」設計をする事ができる
> 具体的にどうやるのでしょうか?
> あるいはどういう単語でググればそういう事例が見れますか?
フレームワークのコードを読むことをオススメします。
フレームワークを用いてWEBアプリを作ることは、「拡張する事」そのものです。
WEBアプリは「フレームワークの拡張ポイントを用いて拡張」しているのですよ。
> >OOPだから失敗した、というわけではないのではないですか?
> OOP「なのに」失敗したケースについて質問しています。
OOPを何だと思っていらっしゃるので?
上等な包丁を使えば美味しい料理が作れるわけではありませんよ。
>>それがわかっていたら大金持ちになれます。
> 巨額の税金を投入した仕事で、しかも何十年も知見が蓄積しているはずの分野でいまだ> に何度も何度も失敗されてたら困ります。いっそのことパッケージ化して業務をパッケ> ージに合わせろよ、と言いたくなります。
お気持ちはわかります。
しかし、どの会社も同じやりかたで仕事をしていたら、会社ごとの特色はなくなります。
多様性のない業界、社会が良いなどと私は思えません。
問題はパッケージ云々ではないと私は思います。
> >属人性をなくしたいから
> 属人性をなくしたいからこそオブジェクト指向で作るのであって、チーム人数の多寡は> 関係ないでしょう。
> 属人性をなくしたいからこそオブジェクト指向で作るの
誰かそんな事をおっしゃいました?誰だろう。
オブジェクト指向で作っているという現場で、オブジェクト指向で作っているSIerを見たことがありません。中身は全て構造化ですよ?
ER図を描いて、フローを書いていますよ、彼らは。
それを「Javaで作っているのだからオブジェクト指向だ」と言い張っているのです。
> 実際、多人数でやってるのに属人性が散見されてデスマの一因となってる事例が多数あるじゃないですか?
だから、SIerのシステム観や目指す方向自身が間違っていると、世間で言われているわけです。
> >工場で流れ作業のようにプロジェクトができます
> だからもうゴミみたいな特注品はやめて、みんなパッケージにしろよ、と思います。
> まあこれは受注側の問題というよりは発注側の頭が悪いせいですが。
パッケージ好きなんですね。SIerでもパッケージ使っているのでは?
パッケージ云々の問題ではない気がしますが。
2016/09/18 11:06
>フレームワークのコードを・・・
フレームワークも言語によってはかえって毒というかグダグダになりますけどね。
たとえばPHPでフレームワークとか害の方がデカイと思う。
>どの会社も同じやりかたで仕事をしていたら、会社ごとの特色はなくなり
いやいやいや、たとえば基幹系システムと呼ばれるものは、本来は会社ごとに特色あっては困る(いけない)ものでしょう。法律でほぼ決まってる最終形があるんだから。
ある会社に特有の業務・儲けに直結するコアコンピタンスを実現するのは基幹系システムありきじゃないっしょ。
誰かが「基幹業務って言ってるけど実際は間接業務だろう」って書いてた人がネットにいましたが、私もそう思います。特に会計なんかはそう。本来はどの会社でも同じじゃなきゃおかしい間接的な業務。
>多様性のない業界、社会が良いなどと私は思えません
日本ではクソみたいな各社のくだらないこだわりに合わせてカスタマイズするのが一般的ですが、欧米では標準パッケージに業務を合わせるのが一般的らしいですよ。
それで欧米は多様性に乏しい社会だと思いますか?
>パッケージ云々の問題ではない
あなたの論理ではそう主張するだけの論拠に欠けますね。
2016/09/18 18:58
>>フレームワークのコードを・・・
> フレームワークも言語によってはかえって毒というかグダグダになりますけどね。
> たとえばPHPでフレームワークとか害の方がデカイと思う。
それはパッケージでも同じでは?
フレームワークではなくてパッケージのコードでも良いですよ?
同じことです。
> 本来はどの会社でも同じじゃなきゃおかしい間接的な業務。
そういうのはそうでしょうね。
> それで欧米は多様性に乏しい社会だと思いますか?
思います。
ただまあ、業務の種類によっては標準にあわせるべきだ。それに関してはおっしゃるとおりだと思います。
> >パッケージ云々の問題ではない
> あなたの論理ではそう主張するだけの論拠に欠けますね。
え?もちろん私は何の論拠も述べてはいませんが、その前に
あなたの主張の論拠はどこですか?
世の中の開発はパッケージとSIerだけなんですか?
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
0
この機能は開放されていません
評価を下げる条件を満たしてません
強力なツールであることは間違いはないですが、完全なものではありませんし使う人間にも依ります。また、規模が大きい話ならば技術要素でない経営上の要素も当然絡みますし一概には言えません。
ちなみに、「仕様の変更に強い」といっても、これを安直に実施するようでは人間として信頼されません。ましてや「契約」が絡む話であれば「双方の合意」なく変更を行えば信頼問題となります。
(OOPではないですが)私が以前携わったプロジェクトにおいてこんなことがありました。当時の責任者は「仕様変更に強い作業手順を発明した」とか言ってこれを活用すべく仕事をもらってきておりました。私も一作業者としてこれに従事しましたが、責任者のアイディアは「消せるボールペン」レベルのものでした。契約企業の担当者に相談したら怒って仕事を打ち切られました。仕様変更のリスクは技術面だけでないことを留意してください。
2016/09/17 23:47 投稿
コメント(1)
2016/09/18 00:12
>使う人間にも依ります
使う人間によらない(属人性を低くしやすい)のがOOPのウリだった気が・・・
>「双方の合意」なく変更を行えば信頼問題
そういう話をしているのではありません。
>仕様変更のリスクは技術面だけでない
だからそういう話ではありません。質問の主旨からだいぶズレた回答です。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
0
この機能は開放されていません
評価を下げる条件を満たしてません
オブジェクト指向やら言語を選定したら、勝手に仕様通りのコードが出来上がるわけではないですからね。
結局のところ、実装や設計の作業者のレベルによるってことです。
物は物、道具は道具で、手にした人間が正しく扱えるかどうかは別ですからね。
2016/09/20 12:46 投稿
コメント(1)
2016/09/20 12:52
それはそうなんですが、じゃあ誰ならOOPを正しく効果的に使えるの?っていう疑問です。
数百億円とかが動く規模のプロジェクトの人たち(≒レベルが高いであろう人たち)ですら何割か失敗するのだから、OOPって銀の弾丸ではないどころか鉄の弾丸でもないのでは???っていう。
OOPにすることによってまた別の問題(複雑さとか設計の難しさとか)が出てくるし、オブジェクト指向って共産主義などと同じく机上の理想論なのではと思ってしまいます。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
0
この機能は開放されていません
評価を下げる条件を満たしてません
大規模、小規模、あまり関係ないと思います。
プログラミング言語の問題も、さほどないと思います。
仕様がキチンとしていれば、数年現場でプログラマやってればある程度人と同じぐらいに書けるでしょう。
エリートプログラマに任せば。。。なんて話も上がってますが、間違いだらけの仕様書で組んだ物は、誰がやっても間違いだらけです。
私は「発注側にプロがいないための、仕様の不安定さ」という事が諸悪の根源だと思います。
超小規模開発の現場で、それこそエクセルのVBAでこーゆーことをやってくれ、
という程度の仕事ですら、発注する側にエクセルVBAが多少でも使える人が担当についてくれるのと、
事務のおばちゃんが担当するのでは、全然かかる時間が違います。
同じ人間がプログラムをしても、相手の担当が多少物事をわかってるかどうかで、最終的にかかる時間は2倍、3倍となってしまうことはよくあります。たかだかそんな物ですら、です。
これが銀行などの「担当者も全容を把握しきれていない、よくわからないプロセスが複雑に絡み合って凄く面倒な案件」だったら、どうでしょう。何百倍、何千倍に悪影響が出ます。
面倒なシステムほど、しっかりと細かい部分までわかっている人が少ないのも事実です。
大規模な案件では、イの一番に実力のあるSEチームを送り込み、仕様のあいまいな部分を開発に入る前段階で潰していく事が、現実的には一番効果があり、工期を短縮できるのかもしれません。
2016/09/20 13:43 投稿
コメント(1)
2016/09/20 14:01
>間違いだらけの仕様書で組んだ物は、誰がやっても間違いだらけ
いやだから、仕様書の段階からスペシャルな人だけでやってほしいなぁっていう。
>「発注側にプロがいないための、仕様の不安定さ」という事が諸悪の根源
それが一番大きいですね。
そしてそれを知りつつも金をたくさん稼げるからと黙認している大手SIerも共犯者です。
>何百倍、何千倍に悪影響が
そう、だからこそ発注側も受注側も「スペシャル人厳選、少数精鋭で」がいいのではないかと考えています。
>仕様のあいまいな部分を開発に入る前段階で潰していく
もっと言うとあいまいな仕様を要求してくる無能な発注者を潰せたら一番いいんですけどね。
民間は無理としても、税金を投入するものに関してはそういう仕組みなり法律を作って、発注側の無能なヤツがあれこれ好き勝手な要求を出せないようにすべきです。技術がわかっている役人を経由しないと、たとえトップ層でも勝手な意見を出せないようにする。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
回答の評価を上げる
以下のような回答は評価を上げましょう。
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-2
この機能は開放されていません
評価を下げる条件を満たしてません
相対的な強さはあるんじゃないですかね。
仮に下記のようなシステムがあった場合、きちんとMVC分離されたシステムと比べてどちらが変更に強いかと言われたら、このサンプルの方が強いと主張する人はほぼいないと思います。
<html>
<body>
<?php
if($_POST['data']) {
echo $_POST['data']['name'].PHP_EOL;
} else {
echo '<input type="name">'.PHP_EOL;
}
?>
オブジェクト指向は本当に変更に強いのか?
上記のサンプルのようなシステムに比べてとても強いと思います。
が、限度はありますし、仮に「人間」Modelに「100mを5秒で走る」機能を実装せよと言われてもとても難しいでしょう。
どうしても実装する場合、「車に乗る」と言うような進化が必要になり、その場合は車の実装も必要になります。
そしてこの車は変更要件から生まれたモノであっても、新規で開発したモノになる為、人間が車に乗った時の挙動その他についてはイチから設計し、開発し、テストを行う必要があります。なぜOOP開発での失敗例が多発するのか?
多くのプロジェクトは成功裏に終了しています。
だからこそ失敗した時に大きく取り上げられ、問題となるわけです。
そして、失敗しないために当然のようにOOA開発選択されていたので、それがOOA開発の失敗だ!と取り上げる方がいるわけです。失敗例の教訓、改善法はあるのか?
ありますが、それはOOAという問題ではなくPMOの問題ですね。
そして大きなプロジェクトの場合、PMOよりも権限の強い、契約条件という問題が大きくなっています。
安心安全な国産無農薬素材100%で無菌室で調理された料理を提供する手法は多くの料理人が知っていて、実践する事も出来ますが、そんなことをやっていたら店の従業員に安定して給料を払えない事も併せて知っているわけですね。なぜ少数精鋭チームで開発しないのか?
1000人月のプロジェクトを10人で開発すると、100か月かかりますが。
iPhoneが発表されたのでそれに対抗しようと開発を始めていたら、出来上がったころにはiPhone7が出来ていたという事になりますので。
2016/09/12 13:29 投稿
コメント(2)
2016/09/12 13:37
>1000人月のプロジェクトを10人で開発すると、100か月かかりますが
はい????
どういう計算ですか、それは?
アホ1000人が一ヶ月かかって終わらせる仕事(いいものが出来るとは言っていない)は、すごい人10人がやると100ヶ月かかるとでも言いたいのですか?
2016/09/20 13:28
質問者ですら指摘しているとおり、どうみても頓珍漢な計算式です。
isset($replyData['Comments']["total_count"]) ? $replyData['Comments']["total_count"] ?>
15分調べてもわからないことは、teratailで質問しよう!
92.67%
関連した質問
-
解決済
Fatal error: Call to a member function XXX on a no...
Ethna、PHPと新しい環境でアプリケーション開発をすることになったため、現在勉強をしています。サンプル文を使用し勉強していたのですが、下記のエラーメッセージが発生してしまいまし
-
解決済
PHPのレベルを中級者レベルに上げるには
今、PHPを使って色々と開発をしていますが、まだまだ初心者です。
かなり初歩的な構文などは理解してますが、フレームワークを使った開発だったり、
MVCとかデザインパターンみたいな事
-
解決済
namespaceはどこに作成されるのか
プロジェクト作成時にnamespace プロジェクト名
のように自動的にnamespaceが宣言されると思いますが、
この名前空間は、実際にどこかに実体が作られたのでしょうか。
ど
-
受付中
オブジェクト指向とは何ですか?
オブジェクト指向をサイト等を参考に自分なりに解釈した結果、

車だったら、車内部のプログラムや構造は知らないけど運転はできる、
鈴木さん(人)だったら、年齢や所在地は知らないけど話
同じタグがついた質問を見る
- Java
5616questions
Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。
- オブジェクト指向
91questions
オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。
2016/09/12 12:58
ありがとうございます。
技術的な側面については、要するに「変更に強くは現実的に無理」ということですね?
その他の受発注に関する問題については、産業構造などの問題だというのは沸かしも理解しています。
ここは政府などお上が変わらないとダメだと思います。
公務員のタバコ休憩に大騒ぎして文句言うのもいいですが、それならもっと壮大な無駄遣いであるIT開発に文句を言う風潮になるべきだと私は考えています。
たとえば政府や自治体が発注したシステムを受注した会社は、下請けに投げるの禁止。派遣にやらせるのも禁止。直雇用した社員のみ開発に関わる。そういう条件にすべきです。
スーパーハッカー云々の件は私の説明不足がありました。
いわゆるGEEKで自由なハッカーたちではなくて、「公的システムや金融機関システムを開発する人たちの中でスペシャルに能力が高い人」を数十人集めたらどうか、という意味です。