2014年4月21日月曜日

似て非なるものは分けて考える

前回の続きとなりますが、

「似て非なるものは分けて考える」

についてです。

ソフトウェア開発は、「似て非なるもの」だらけでは無いでしょうか。

私もこの業界でいろいろとソフトを作ってきましたが、
ほとんどが似てるけど、ちょっと違うもの な気がします。

例えば、
ある機能を少し拡張した開発は
変更前とは少し違うもの になりますし、

例えば、
組込み機器の外部I/Fを変更する開発は
やる事は同じだけど、I/Fだけを置き換える

例えば、
機種Aのある機能を機種Bに移植する開発は
機能は同じでも、機種B用の少し違うものになる

例えば、
以前実施した機能移植作業を新人技術者を入れて実施する開発は
やる事は同じでも、体制が少し違うものになる

などなど

この他にも、視点を変えると
似て非なるものが、たくさん発見出来る気がします。

それらを、分けて考える事って、とても大事だと思うのです。

なぜかというと、

理由その1:シンプルになる

細分化する事で、要求や変更内容など
「非なる点」をシンプルにする事が出来ます。
異なる点がシンプルになれば、対応もシンプルに出来ます。


理由その2:早くなる

上記と関連しますが、対応がシンプルになれば
対応時間が早くなります。
つまり、生産性の向上に繋がります。


理由その3:似てるから「同じ」と決めつけない

本当に同じなら問題無いのですが、
よくある失敗に、
「〇〇と同じだと思ったが、実際は違った」
という事があります。
分けて考える事で、決めつける事の防止と、
「同じ」である事の確認となります。


理由その4:似てるものを共通化しない

似てるものを共通化し、結果的に複雑になってしまい
メンテナンス性を低下させてしまう例があります。
これを回避する為に、分けて考えて
違うものである場合は、共通化せずにシンプルにします。


「似て非なるものは分けて考える」
と同じように、理由やその効果についても
視点を変えると、違う効果、理由がまだまだ見つかる気がしますね....




2014年4月10日木曜日

「分ける」と「分かる」と「分かち合う」

2014年度、AVASYSとしては35期のスタートです。

4/4 の全社キックオフでは、

中竹竜二さんの講演があったのですが、

その中に、今期のRibbonModel推進テーマがずばり!


というのも、

2014年度は「分割」をテーマにする予定でした。
(キックオフ会場の成果展示には、いちおう掲載していましたが....)

すると講演の中で、

曖昧な問題の解決策として、

「似て非なるものは分けて考える」


「分ける」と「分かる」

というキーワードとお話を聞いて、

胸に突き刺さりました。
これだ! と言う感じです。

そして、これに、共有の要素を追加すると、

まさに、リボンモデルです!

「分ける」と「分かる」と「分かち合う」


いったいどーいう事???


と感じるかもしれませんね。


簡単に説明すると、

リボンモデルの特徴である
「単体テストとリファクタリング」

は、「分ける」事から始まります。
というより、分けないと不可能、もしくは困難になります。

そして、当然ながら「分かる」から

「単体テストとリファクタリング」
が可能となります。

「単体テストとリファクタリング」が可能となると

属人性や担当依存が低くなり、共有に繋がっていきます。
これが「分かち合う」ですね。

もう一つの特徴である

「小さな改善を繰り返す」
も同じです。

改善するには、問題や課題を「分ける」事が重要となります。

「分ける」事で、解決すべき問題がシンプルとなり、
「分かる」となります。

すると、チーム、顧客含めた情報共有がし易くなり、
「分かち合う」が可能となります。

そして、いずれも「分ける」事による

単純化(シンプルにする事)は、
開発スピードを劇的に向上させる事に繋がります。

但し、単純化の為には、

「似て非なるもの」を「分ける」事が大前提となりますが。

大前提となる ソフトウェア開発での

「似て非なるもの」を「分ける」については、また改めて!