2009-10-10

http://anond.hatelabo.jp/20091010221434

適切に共通化されるというのが、幻想というか、正しい表現ではなくて、何が適切?というのがあるから。

速度に対して最適化するのか、メモリーにたいして最適化するのか、費用に対して最適化するのか、期間に対して最適化するのか?

適切が意味する要素がプロジェクト毎に違う。

なので、適切に共通化 という単語が成立しにくい。ある条件下ではAという共通化が最適でも、違う条件下ではBという共通化が最適だったりする。

そんで、プロジェクト1年目の受注では条件Aだったが、翌年の追加案件ではBだった。みたいなことが起こりえる。他にも色々。

そんで、重要なのは、この辺というのは、人によって解釈が違うし、主義もあるし、宗派もあるってこと。

規律だ設計だ、ルールだを持ち出しても良いけど、現実問題として、人を理由とした摩擦や問題は起きるという事。

そういう事例に対して、設計は正しいのにみんながルールを守らないから、とか言い出してもしょうがなくて、

リーダーに求められるのはプロジェクトを成功させることであって、モジュールを共通化させることではない。という事。

前者目的であって、後者は手段。

よって、目的達成のために、最適な手段をとる。という意味では、共通化という命題は、技術的にはすばらしいが政治的にすばらしくないことがあるので、

趣味ではなく業務としてのプログラムでは、優先課題ではない。という事。

で、結局、どうするかと言われれば、今いるメンバーで、出来る範囲で、次のプロジェクトが来ても、問題ない程度で設計するって話しになる。

ぶっちゃけたところ、共通化の話題は、結構、オブジェクト指向だ、やれなんだで、宗教論争になりがちで、理想を追い求めガチだから、ほどほどにしろ、って口をすっぱくしていわないと、

共通化のための共通化になって、全体を阻害することがあるから、マネージングする側としては要注意だと。

イヤ本当に、正直、理想を追い求めた、高度すぎる抽象化はいらん。結局、ながくプロジェクトを続けられるコツは、次がどうなるか何てわからないんだから、共通化は『ほどほど』にしておく。ってところに落ち着く。

で、技術的に高度なところだけは、信頼できる人にやって貰うか、自分でヤルって話しに落ち着く。そこ以外は、なんつーか、もう、ほんと、手工業だからねぇ、この業界。って話し。

なんというか、適当設計だなぁって言われることもあるだろうけど、そういう風に、各個人毎に機能を割り振って、最低限の所だけ押さえるのも設計と思うわけですよ。

一人でやってるなら、共通化しちゃっても良いことも、複数人でやってると分けた方がよいこともある。その辺のさじ加減が設計。ほんと、人依存

記事への反応 -
  • 構造をキッチリ綺麗に作って、 実質修正箇所1行で20機能の仕様変更に応えても、 シナリオテストのエビデンスは 20機能全部のスクリーンショットが全部必要。 テストの工数は全然減ら...

    • 逆 20機能で同一関数を使っているとその同一関数を1行修正すると20機能全部デグレード試験し直し。 逆に20機能を20関数で使っていると、1つの関数を直しても19機能の...

      • ・機能の共通化は必ずしも、トータルでの工数を減らしたりはしない。どころか、増やしたりもする。 ・共通化する関数に求められる品質依存。その関数に求められるクオリティー...

        • その辺のバランス取りが設計力。設計力に、こうなるみたいな王道はなくて、チームメンバー他 状況次第の水物。 http://anond.hatelabo.jp/20091010201820 たとえば、高度な数学を使った暗号化...

          • 私の理解不足かもしれない。もうすこし詳細教えてください。 私は適切に共通化されるなら、共通化すべきだと思う。 つまり王道は共通化すること。 共通化がわるいというよりは、設...

            • 適切に共通化されるというのが、幻想というか、正しい表現ではなくて、何が適切?というのがあるから。 速度に対して最適化するのか、メモリーにたいして最適化するのか、費用に対...

              • 適切に共通化されるというのが、幻想というか、正しい表現ではなくて、何が適切?というのがあるから。 また適切の基準が曖昧でプロジェクトによってことなるのもその通りでうs...

                • 元増田って http://anond.hatelabo.jp/20091010180917 でいいですよね? 違ったら以下は無視してね。   内部設計書は書いてますよ。 でも元エントリーで私が言及してるのは システムテストの工数...

                • IDとかコテハンの内増田では議論しにくいですねorz 多分http://anond.hatelabo.jp/20091010232609 でいいている元増田はあなたです。 システムテストに関してはhttp://anond.hatelabo.jp/20091010210506 で書い...

                  • 自分自身がエンジニアで共通化を推し進めるべきだとずっとやってきたけど、 その結論として、共通化しない方が良い場合も多いという反省が残ったって事だから。 結局、その見切りが...

                    • 引き継ぎとかも考えると、コピペコードの方が引き継ぎが楽な場合も多いんだわ。これが。   それは、貴方の体験ではそうだったかもしれないけれど、 私の体験では逆だなぁ。   た...

                    • 一応、誤解のないようにいっておくとあなたの責任を追及しているわけではありません。 エンジニア的には共通化することは正しくても、 システム変更の工数とか会社営業的な視点とか...

          • 実際に設計を担当する人間からすれば、任せるプログラマーの力量に応じて作業分担するのも責任。というはなし 時には同じそうに見えるけど2つ作っておくことも悪くないという...

      • 逆 20機能で同一関数を使っているとその同一関数を1行修正すると20機能全部デグレード試験し直し。 逆に20機能を20関数で使っていると、1つの関数を直しても19機能...

        • ちょっと追記。 共通関数をコピペして&修正した場合もコピー先全パス試験しろという職場にはこの方法は向かないですね。 (多分、対官公庁、対銀行の仕事してる人は全パス試験しろ...

    • その辺はバランスだなーと思う。 ただガッチガチに構造化して責任を分離すると、アホでも仕事がしやすくなるってのはある気がする。 結局、システム開発をビジネス的に取り扱いやす...

    • 一見合ってるように見える論だが何かがおかしいな。 これがOKならコピペコーディング万歳!ってことになるが。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん