1章アートかサイエンスか

あなたは科学者ですか? それとも芸術家? エンジニア? 職人? 詩人? あるいはアーキテクトですか?

プログラマー? もしくはソフトウェア開発者? そうだとして、あなたは何者ですか?

これらの質問に対する私の答えは、「そう、どれでもない」です。

私はプログラマーを自認しています。上のどれにも少し当てはまりますが、いずれでもありません。

このような質問は重要です。ソフトウェア開発業界ができてから70年あまり経っていますが、私たちはまだ理解の途上です。どのように考えるかは根強い問題です。そこで先ほどのような質問をしたのです。ソフトウェア開発は家を建てるのと似たようなものでしょうか? 詩を作るようなものでしょうか?

何十年ものあいだ、私たちはさまざまなメタファーを試しましたが、どれも失敗に終わっています。ソフトウェア開発は、そうでないときを除けば、家を建てるようなものです。ソフトウェア開発は、そうでないときを除けば、庭を育てるようなものです。結局、どのメタファーも当てはまらないのです。

でも、私はソフトウェア開発をどう考えるかが、私たちの仕事のやり方を形作るのだと信じています。

ソフトウェア開発は家を建てるようなものだと考えると失敗します。

1.1 家を建てる

何十年ものあいだ、人はソフトウェア開発を家の建築に例えてきました。ケント・ベックはこう言っています。

残念なことに、ソフトウェアの設計は、物理的な設計活動のメタファーに束縛され続けている[5]

ソフトウェア開発のメタファーのなかで、建築はいちばん普及していて魅力的なものの1つですが、これは妨害になります。

1.1.1 プロジェクトの問題

ソフトウェア開発を家を建てるのと似たものだと考えたときに最初にする失敗は、それを ...

Get 脳に収まるコードの書き方 ―複雑さを避け持続可能にするための経験則とテクニック now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.