12-コードは設計である

プログラマが知るべき97のこと」の12個目のエピソードは、設計と自動テストに関する話題です。重要なので引用します。

私たちは、「コードを書くことは設計をすることである」ということ−機械的な作業ではなく、創造的な仕事なのだということーを肝に銘じる必要があります。

ソフトウェア開発が行われ始めた頃に比べ、求められる要件も機能も複雑になっています。一方でプログラミング言語フレームワーク・ライブラリ・開発環境など直接的なコストは下がり、ソフトウェア開発での設計に関する比重が高くなりました。つまり、現在のソフトウェア開発では与えられた仕様をそのままコードに落とすだけの人材は不要になっているのです。各プログラマは優れた設計をすることが求められます。さらに、スピードや要求定義の能力も求められています。
このような状況で、十分な品質を確保して行くには「自動テスト」が有効ではないか?と本文で述べられています。ここでいう設計とはコーディング(コードを書くこと=プログラミング)という意味でしょう。複雑な要件を満たすプログラムを作るには、優れた設計が必要不可欠です。それを保証するにはテストを書き要件を満たすこと、証明しにくい要件であれば証明できるような設計を意識してコードを書く手法、動くコードをより美しくすること、すなわちテスト駆動開発の心です。自動化されたテストは複雑な要件を満たしている事を保証するだけでなく、プログラマの不安も取り除きます。
設計を行うのは人間であるという点を忘れてはなりません。如何に優れたフレームワーク・ツール・開発手法を用いたとしても、設計を行うのは人間であり、それは創造的な仕事なのです。それを行うにはスキルが必要です。ですが、誇りを持って仕事に集中できる環境や文化がなければ、そんなプログラマは育たないでしょうね。

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

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