連休だ本を読もう

アンチパターン ソフトウェア危篤患者の救出」という本より。
正直、あまりおもしろい本じゃなかったなぁというのが全体的な感想。
比喩が多くて(日本で伝わるように)訳者さんがんばったなぁと感じる本。
アンチパターンは「ソフトウェア開発」、「ソフトウェアのアーキテクチャ」、「プロジェクト管理」の3レイヤーについて列挙してある。
一番良かったのはアンチパターンの部分ではなく、会議に参加するときの心得。
参加する時には2つの質問を自問自答しておく。

  1. 「自分はなぜここに居るのか?」
  2. 「どんな結果を自分は望んでいるのか?」

これによって会議への参加意識や自覚された目的に向かって会議を進めていくことができる。

1.ソフトウェア開発のアンチパターン

肥満児

肥大化したクラス。1つのクラスが処理を独占し他のクラスはデータを持ってるだけみたいなやつ。
複雑なので再利用もテストも難しい。
要リファクタ。

溶岩流

継ぎ足し継ぎ足し作られ、必要なのか必要でないのか分からないクラスが出現した状態。
人が変わると起きやすい。

機能的分解

手続き型プログラミングをそのままクラスにしちゃったよ〜パターン。
クラスがネームスペースのような扱いになっている。

お邪魔妖怪(ポルターガイスト

有効寿命が短く、コントローラー的なクラスに多く発生する。
冗長な処理、不要な抽象。

打ち出の小槌

特定製品・技術のマニアになってしまい、何でもかんでも同じ製品・技術を使いたがる。
特定の製品・技術で2〜3回成功経験があると発生しやすい。

スパゲッティコード

古典的な悪いプログラミングの例

切り貼りプログラミング

コピペですこし変える。
既存部分はそのまま残るから保守を気にせずに作れて一見生産性もあがっているように見える。
どうせ自分たちが作ったのではないから・・という気分にさせる気持ち的なマイナスもある。

絶え間なき陳腐化

採用した技術がVer1..Ver2...Ver3...早すぎるよ!

あいまいな視点

OOAなの?OODなの?

はしご外し

採用した製品の開発元が非サポートにした

入力クラッジ

ちょっと不正な入力したらバグが!

地雷原

採用したライブラリがバグばかり!

暗室栽培

プログラマに要件を与えない

2.ソフトウェアのアーキテクチャアンチパターン

おんぼろ煙突化

即席修理でつぎはぎだらけ。

全社的おんぼろ煙突化

企業内の複数のシステムがあらゆるレベルで個別の設計。
共通性がないので再利用も連携もできない。

システムのおんぼろ煙突化

1システム内のサブシステムが別サブシステムに点と点で依存していて、依存関係が複雑すぎる
レイヤー化するなどしよう。

砂上の楼閣

特定ベンダの製品に完全に依存されるとその製品と一蓮托生
隔離層をもうけよう。

文書化軽視

・言語とその用法、ライブラリの用法、コーディングの規格、メモリ管理など。
・クライアントとサービスのコンフィギュレーションなど。
・ネットワークプロトコル、デバイスの選定/用法など。
・データベースやファイルの取り扱いの仕組みなど。
・スレッドの形式など。

組織硬直

平等主義のチームでできあがる一貫性のない設計や不明確な優先度

自作固執

とにかく自作したがる。
自作されたものは長年使われてきたライブラリよりも信頼性が低い

総花主義

焦点の定まらない文書が何百ページも!

羊頭狗肉

「標準規格に準拠」な製品を信じるな。
同じ「標準規格に準拠」な別の製品では動かなくなるぞ。(データベースとか)

万能ナイフ

汎用的を目指しすぎたインターフェイス
なんにでも使えるようにとがんばりすぎた結果、複雑化しメンテナンスできなくなる。

3.プロジェクト管理のアンチパターン

分析地獄

分析がいつまでたっても終わらないよ!

計画倒れ

完璧な計画を作ったら終わりじゃないよ!
ちゃんと進捗にあわせて更新しなよ

文句屋

破壊的な言動など扱いにくい人がチームを妨害する

理性の欠落

管理者が意思決定をすること!

暴走プロジェクト

実装しづらい設計や検査がほとんど行われないなどまいっちんぐな事がおきる。

口八丁手?丁

雑誌やネットの技術評論記事に管理職が踊らされて答えるのに時間を使われる。

文書化地獄

エンジニアたちに絵や文章ばっかり書かせると才能を活かせず、スキルを腐らせる

取り越し苦労

最終段階でメンバーが不安に襲われる。
管理職が成功宣言をすること!

知的暴力(知ったかぶり)

理論や技術や最新情報を持っている人がその知識をひけらかして、会議などで他の人を馬鹿にする。
新しい概念を知らない人はその話題を避けるようになり、コミュニケーションが崩壊する
情報を共有しようよ!

あとは野となれ

「ほらコード書いたよ」(試験なし、ドキュメントなし)

泥縄(防火訓練)

さまざまな技術的問題を管理者のレベルで解決している間に、設計も開発作業も数ヶ月棚上げされる

お家騒動

特に管理者間の確執はメンバーへの悪影響大

人食いメール沼

メールって思ってるより時間かかるんだよ