ソフトウェアは時間が経つと劣化していく、というソフトウェア疲労の症状を列挙してみました。ソースコードレベルで改修を繰り返していくと、徐々に設計構造が崩れ、設計意図が分からなくなってしまいます。その様なソースコードを引き継ぎ、担当することになったら大変です。引き継いだコードを、一生懸命にコードレベルで修正すると、さらに状況が悪化する、という悪循環になってしまいます。頑張れば頑張るほど、仕事がきつくなってしまいます。

その時は、一段上の視点で見ることが大切です。コードレベルではなく、設計図レベルで原因を特定し、設計図の改善を検討し、該当箇所のソースコードを修正することになります。そして、設計図の改善に際しては、さらに一段上の視点で、設計意図としてのアーキテクチャに沿うことで、全体の複雑さを上げずに改良することができます。このような「3階建ての設計改善」を繰り返すこと、それを習慣化すること、が日々の仕事が楽しくなり、エンジニアとしてのスキルアップにもつながるはずです。バグや機能追加時に、「まずはコードを見る」のではなく、「一段視点を上げて設計図を見る。もう一段視点を上げて設計意図を考える」ことです。私たちは、これを設計中心の開発スタイルと呼んでいます。

「3階建ての設計改善」は、再発防止策の構造と同じです。「現象」を直接「処置」するのではなく、「現象」から「原因」を考えて、その「対策」を練る、その際に「方針」に沿うように考える、ことと 3階建てを意識して、設計中心の開発を習慣化することで、仕事が「もっと速く、もっと楽に」なるはずです。そのためには、設計図の読み書きと設計意図の表現方法(アーキテクチャ)のスキルを身につけることが、最初の一歩になります。エンジニアライフを楽しく有意義なものにするために、最初の一歩を踏み出しましょう。これらの現象は、多人数の開発における局所最適解が、全体としての構造美を損ねてしまう現象です。これを解決するためには、全体の構造に責任を持つ技術リーダの存在が鍵を握ります。すなわち、ソフトウェアアーキテクトが、全体的な設計ルールを遵守し、構造美を保つ、という役割を果たすことで、ソフトウェア疲労を防止することができます。