torutkのブログ

ソフトウェア・エンジニアのブログ

ソフトウェア開発を考え直してみる

火だるまプロジェクトの真っ最中では落ち着いて考えることができませんでしたが、2年がかりのプロジェクトがデリバリー(納入)を終え、カットオーバー(運用開始)となって四半期が過ぎ、いろいろとソフトウェア開発プロジェクトを振り返り考えるようになりました。

ソフトウェア開発を考え直すヒントを得る書籍

ちょうどプロジェクトが一段落したあとに読んだというタイミングもあるかもしれませんが*1、ソフトウェア開発を考えるヒントを与えてくれた2つの本を紹介します。

ソフトウェア開発はなぜ難しいのか ~「人月の神話」を超えて (技評SE選書)

ソフトウェア開発はなぜ難しいのか ~「人月の神話」を超えて (技評SE選書)

ソフトウェア開発というのが、なぜ難しいかを正面から扱った稀有な本です。プロジェクトマネージャやプロジェクトオフィスのスタッフ、品質管理部門、発注者といったステークスホルダーに読んでほしい本です。

ソフトウェア開発の難しさ(「本質的困難」)として本書が挙げているのは次の4つの性質です。

  • 複雑性:大きく複雑なこと。他のどのような構造物よりも複雑
  • 同調性:計算機環境、他システム、人間など外部に常に同調(順応)し続ける宿命
  • 可変性:要求や技術の変更
  • 不可視性:複雑な概念の集積ゆえに目に見えない、意思決定過程が見えない、単純な図面で全体が理解できるものではない

ソフトウェアを仕事にしている多くの人は、おそらく計画を立てろ、仕事とは段取りだ、WBSをきっちり作成して進捗管理しろ、そうすればプロジェクトはうまくいく、という「空気」にさらされていると思います。
この本のすごいところは、この「空気」の存在に気づきを与えてくれ、かつ、「空気」間違ってないか、ということを考えさせられる点にあります。

建築や土木工事のプロジェクトとは異なり、段取りを決めて遂行するということが本質的に不可能

この本にさらに1点ソフトウェア開発の難しさを追加するとしたら、「空気」の恐ろしさです。
この本にあるようにソフトウェア開発の難しさを仕事の場で主張したとすると、村八分に合う、閑職に回される、首になる、といった「空気」に逆らったものへの懲罰を受けることになりかねないからです。

参考までに、「空気」については次の本で取り上げられています。
「空気」の研究 (文春文庫 (306‐3))

さて、2冊目の本はこれです。

知識ゼロから学ぶソフトウェアプロジェクト管理

知識ゼロから学ぶソフトウェアプロジェクト管理

普通のエンジニアが納期、予算、品質を保ってプロジェクトを進めていくかのエッセンス

とあるように、ソフトウェア開発の問題に対して「普通のエンジニア」がどう立ち向かっていくかについて書かれています。

もの作りの本質はPDCAではないか

には激しく同意します。

この本では「本書の4大Tips」として次の4つを唱えています。

  • 一人一人のエンジニアのアウトプットを最大限にする
  • 変更に対して耐性を持つ開発スタイルにする(しかし変更は最小限にとどめる)
  • 品質第一主義
  • 非機能要求は上流から下流まで特別な扱いをする

4つのうち3つが満たされていて失敗したプロジェクトは見たことがない

と言い切っています。

この本は、文章がかなりくだけて分かりやすく、この分野の本にしては珍しく読んでいて楽しい本です。
256倍シリーズを知っている人には、あのような感じの文体といえば伝わるでしょうか。ただ、256倍と違って(256倍シリーズの各著者には失礼)、放言の背景にはソフトウェア工学の各文献の裏打ちがあるので、フィーリングで言い切りしているわけではないことが言葉の端端から感じられます。参考文献に列挙されている本・記事・論文を、著者の知識フィルター(少々アクが強いかも)を通して現場のエンジニアに分かりやすいメッセージとして伝えているので、この本はお得です。

この本のブログが開設されていました

エンジニアとしては既成概念に疑問をもつべきかも

とこれらの本を読んで強く思いました。

*1:というか開発たけなわだったらプロジェクト管理本は読まないだろうなぁ