2009年11月6日金曜日

マーフィーの法則

20世紀末に大流行したので記憶に新しいが、マーフィーの法則はプログラミングに関しては極めて役に立つ法則だと言える。
読み直してつくづくそう思う。
ソフトウェアは人間の思考を置き換えたものであるから、人間と同じ失敗をする訳だ。
曰く、

・失敗する可能性のあるものは失敗する

「ソフトウェアは必ず失敗するもの」と言い換えても良い。

・2つの出来事が予想される場合、望ましくない方が生じる
・おかしくなり始めると、次から次へとおかしくなる
・連続した何かがおかしくなる時は、最悪の過程をたどりながらおかしくなる

こでは、「何か条件に合わない時はプログラムは停止しなくてはならない」という基本を怠った、
あるいはミスのために、停止しなくてはならないはずのプログラムの誤動作が連鎖的に広がり、
最終的にシステムがダウンするなどの障害が発生する。
テストでも最後の最後にしかしない異常系のテストの工数が少ないか、あるいはしなかったために、
しばらく運用して初めて問題が発覚することを示唆している。

やはりアジャイル開発の反復型で、運用込みで開発して行くのが望ましいということか。

・危機に臨むと人は最悪の選択をする

これは客先でバグが見つかったので、そこだけ急いで修正したらデグレしたということである。
「バグはそこだけ直してはならない」と思わなくてはいけない。

・隠れた欠陥はかならず表面化する

そうですね。どんなバグも隠してはいけません(笑)

2009年11月2日月曜日

リラックス

プログラムのバグ予防に、ペアプロやアジャイルプログラミングなど色々な対策手法があるが、それ以上に大きな効果が「リラックス」にあると思う。

つまり、
  • オフィスは静かである(電話機はない。休憩室や談話室がある)
  • オフィスは清潔で、グリーンなどの観葉植物もある
  • オフィスの自分や周りの机もきれいに整理整頓されている
  • スタッフとのコミュニケーションも充分取れていて気心が知れている。
  • 締め切りや客先などからのバグ対策に追われていない。
  • 仕事のスケジュールは、ゆるくなくきつくなく適度な緊張が保たれている

などなど、気分的にリラックスしてプログラミングすると、当たり前のことかも知れないが、「間違わない」
しかし、この「リラックス」の状態は、上に説明しにくいし、何とも獲得しにくいものである。
恵まれた職場環境は、「なんだあいつらだけ」なんて陰口を叩かれることも少なくない。
しかし、納品後にバグがみつかり、客先に頭を下げて誤りまくって、深夜作業が続けなくてはならない労力があるならば、「リラックス」環境作成に使うほうが断然マシだと思うのだが。