24-変更を恐れない

プログラマが知るべき97のこと」の24個目のエピソードは、リファクタリングに関する話です。「動いている物は修正するな」という鉄則はアプリケーションのコードの質が低い現場であればあるほど、徹底される傾向があります。本当は品質が低すぎて致命的な問題を抱えているにも関わらず、血のにじむような努力をすることで表面上のテストを通し、サービスインしたというシステムを幾つか見ています。このような状況をこのエピソードでは「ジェンガ」に例えています。

それはまさにソフトウェアで「ジェンガ」をやっているようなものです。直方体のパーツを組んで作った高い塔が倒れないよう、慎重にそっと手を加えていくのですが、いつかは崩れる運命なのです。

きのこ本全体を通して一番笑った所かもしれません。いつかは崩れる運命ですが、日本人の得意分野なのか、ジェンガシステムを崩さずに運用していたケースも見たことがあります。
変更・変化・変革というのは怖いものです。時には痛みを伴います。しかし、恐れと痛みをぐっと堪えて変更を行えば問題を抱えずに済むというメリットだけでなく、開発チームの文化に良い影響があると書かれています。変更を恐れずに改善をしていくことで、メンバーの経験が蓄積されていくでしょう。アンチパターンを知ることで同じ轍を踏む事を回避できます。改善する意識が高まってくれば自然とチームの士気も高まるでしょう。そして、それらの空気は伝搬し、良い文化を生み出していくのです。
最近、この事は実際に感じています。開発チームの中で誰か1人が声をあげて変更を叫んだとしても中々改善しないのです。開発チームの1/3程度のメンバーが変更と改善の意識を心がけると、その空気は伝搬していきます。このような文化は作ろうとしても中々作れないのですが、流れさえできてしまえば勝手に育っていくものです。しかし、ほとんどの会社では開発チームが短期に結成され解散されてしまいます。それでは良い文化を作ることはできませんし、良い空気が出来てきたとしても、解散させられてしまいます。そうなると改善しようという気も起きなくなるのです。
変化を恐れずに改善することは重要ですが、リファクタリングを行う場合には1つだけ守らなければならない事があります。そう、テストをすることです。テストをしなければ変更に対する恐れと戦うことができません。変更を恐れないための勇気のためにテストが必要なのです。もし、テストを行わずに大規模なリファクタリングを恐れしらずにやったとしたら、それは無謀なだけです。勇気と無謀は異なります。テストスキルはリファクタリングを広めるためには習得しなければならないスキルです。
テストできないレベルのジェンガソフトウェアと遭遇した場合は、戦いを避けるのも重要ですね。

プログラマが知るべき97のこと

プログラマが知るべき97のこと