話が噛み合わない時

http://d.hatena.ne.jp/masayang/20070503/1178254276

ウォーターフォールな人達にAgile開発の話をしていていると、「なんか話が噛み合わないぞ」と思うときがある。ざっと思いつくのを挙げておくと

脊椎反射.

  • プログラミングのことを知らないままに「上流工程が大切だ」という人達。*1
  • コーディング規約を作ることが,ソフトウエアの品質や生産性を高めるという人達*2
  • 「管理職が管理しやすいから」という理由で、採算を度外視して変数名にC001、メソッド名にm002のようなコーディング規約を採用する人達。*3
  • 命名規約なんてその場の文化だ」と、品質や生産性より宗教を重視する人達.*4
  • "Design by Contract"*5も知らないままに、「設計と実装の分離」を「工程の分離」と捉える人達.
  • 設計フェーズ,コーディングフェーズ,テストフェーズ,デバッグフェーズ,リファクタリングフェーズなどが,(概念上の存在でなく)別々のフェーズとして存在していると思っている人達.
  • 実装のことを知らなくても『設計』はできると豪語する人達.
  • 言語が変わっても『設計』を変更する必要はないと思っている人達.
  • ブルックスの法則*6を知らない人達.
  • UMLや要件定義で「プログラムの本質的な複雑さ」に関わる問題を解決できる*7と思っている人達。

参考:http://d.hatena.ne.jp/JavaBlack/20060214/p2
http://www.chrylers.com/top-ten-of-programming-advice-to-not-follow
http://satoshi.blogs.com/life/2006/03/post_8.html
http://d.hatena.ne.jp/JavaBlack/20060321/p2

ドメイン依存な命名規則を無視してまで,C001が馬鹿丸出しの名前と言い切るのは危険(というか世の中知らなすぎ)です。

ごくまれな反例をとりあげる という詭弁のパターンですね。
モデリングで連番を使うのは、後の修正や変更が大変になるだけのアンチパターンだと思うけどな…

その通りですね.モデラーデスマーチを作る典型的なアンチパターンの一つだと思います.

*1:http://d.hatena.ne.jp/JavaBlack/20070428/p1
http://www.atmarkit.co.jp/news/200705/09/nttdata.html

*2:http://d.hatena.ne.jp/JavaBlack/20060301/p5
http://d.hatena.ne.jp/JavaBlack/20060308/p1

*3:http://d.hatena.ne.jp/Isoparametric/20070501/1178028895
http://s03.2log.net/home/programmer/archives/blog38.html

*4:http://d.hatena.ne.jp/Isoparametric/20070501/1178028895 コメント欄.

*5:http://en.wikipedia.org/wiki/Design_by_contract

*6:遅れているソフトウェアプロジェクトへの要員追加は,さらにプロジェクトを遅らせるだけだ」という至極あたりまえの事実のこと.

*7:「本質的な難しさの例としては、プログラムの中の異なる部分同士の微妙な相互作用をなんとかするすることが挙げられる。例えば、新しく追加した機能が他の部分にどういう結果をもたらすかを把握することなどだ。本質的でない難しさは、プログラミング言語の進化によって駆逐することができるが、そのあとには、ソフトウエア開発における本質的な難しさだけが残される。」[書評:Beyond Java]