君のための本 -- ソフトウェア開発を一生の仕事としていいのか悩んでいる開発者に贈りたい1冊:2015年版

(これは、『100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊』に寄稿した原稿の草稿を元に、XP本完全新訳版に合わせて加筆修正したものです。なんで完成稿ではなく草稿を元にしたかというと、草稿の方が長かったため短くまとめたものが完成稿になったからです。完成稿の方は『100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊』をどうぞ。)


エクストリームプログラミング

エクストリームプログラミング


コンピュータ書を読むのが好きだ。だから「誰かに贈りたい本」と言われると、たくさんの本が思い浮かぶ。

たとえば君の問題が「プログラミングのスキル向上に思い悩んでいる」という話であれば、『Code Complete』辺りを勧めるだろう。プログラミング技術の本を10冊あげろと言われれば20冊くらいあげるかもしれない。

けれど、つまるところ君の悩みは「プログラミングを一生の仕事として取り組み続けていくべきかどうか」なのだと思う。であれば、必要な本はプログラミング技術に関する本ではなく、「なぜプログラミングなのか」という問いに答える一冊だろう。そういう人に勧める本なら、Kent Beckの『エクストリームプログラミング』をおいて他にない。

旧版の書名(『XPエクストリーム・プログラミング入門』『同第2版』)とは違って、この本はいわゆる「入門書」ではない。これを読んでもXPができるようにはならない。そういう本を期待する人には例えば『アート・オブ・アジャイルデベロップメント』などを勧めたい。
また、アジャイル開発の概要を理解するなら『アジャイル・サムライ』でも、小さな規模でのソフトウェアビジネスを理解するのであれば『Eric Sink on the Business of Software』でもいい。要するに、「ソフトウェアの作り方」や「ビジネスの行い方」に関する優れた書籍だ。

エクストリームプログラミング』はそういう本ではない。本書は、人の生き方や社会のあり方をプログラマの立場から考えた本だ。



正直に言ってXPはどこか異様な風貌がある。端的に言えば「変」だ。たとえば「価値」。XPは元々4つの価値があった。「コミュニケーション」「シンプリシティ」「フィードバック」「勇気」。第2版では新しい価値が一つ加わった。それは「リスペクト」だ。……と言われて、この5つはソフトウェア開発の本質を鋭くついた、素晴らしい見識に基づく考え方だ、と思う人はあまりいないだろう。

勇気やリスペクトだけでバグが取れたら苦労はしない。はっきり言ってそんなものでソフトウェアがうまく作れるようになるとは思えない。しかし、本当に必要なものは「そんなもの」だと、Kent Beckはこの本の中で熱く説いている。

なぜKent Beckはそんなことを主張するのだろうか。

幾多あるソフトウェア開発手法の中には、「尊重しあっていない人々同士の集まりでも、それなりのプロダクトを安く作り上げるにはどうすればよいか」ということにフォーカスした手法も少なくないだろう。しかしそのような態度が本当に優れたプロダクトを生み出すのだろうか。それはディスカウントの嵐やソフトウェアの環境変化による価値の下落に巻き込まれてしまい、優秀な人たちがみな他の分野へと去っていき、ソフトウェア開発は産業としては失速してしまうのではないか。そしてソフトウェアが持ちうる社会への力も失われてしまうのではないか。そういう危機感が本書の背景にはある。



この本のハイライトはの1つは23章、「時を超えたプログラミングの道」だ。ここでは「パターン・ランゲージ」で有名なアレグザンダーの試みを通じてソフトウェア開発の役割と未来への可能性が語られる。いわく、アレグザンダーは建築の世界を変えようとした。「作るひと」と「使うひと」が完全に分かれ、力の不均衡が生じ、素晴らしいものが作れないのではないか、という疑問を持つアレグザンダーは、それを解決しようとしたが、失敗した。

本書には書かれていないが、Kent Beckも一度失敗をしている。Kent Beckは、本書が書かれるよりもずっと以前、ユーザと開発者がともに開発に参加できるように1つの試みを始めた。それが「デザインパターン」だ(Kent BeckWard Cunninghamオブジェクト指向プログラムのためのパターンランゲージの使用』http://kdmsnr.com/translations/using-pattern-languages-for-oop/ を読んでみて欲しい。本書の訳者、角さんが10年前に訳した記事だ)。まさしくアレグザンダーの試みと同じものをソフトウェアの世界の導入しようとしたが、それはユーザのものにはならなかった。デザインパターン自体は広まったが、それはKent Beckが当初望んでいたものとは大きくかけ離れてしまった、としか言いようがない。エクストリームプログラミングは、Kent Beckの新たなチャレンジなのだ。

もっと言うと、XP自体も進化しつつある。XPの第1版のころは、今よりもずっとプログラマにフォーカスが置かれていた。が、「高みに到達することが目的であれば、ソフトウェア開発は「プログラマーとその他大勢」で成立するものではない。それが、過去5年間で私が学んだことだ。(第23章より)」。利用者と設計者を含めたチーム内での力のバランスと調和がなければ、優れたソフトウェアは作り上げられない。すなわち優れたソフトウェア開発にはならない。

念のため付け加えておくが、Kent Beckは開発技術を軽視しているわけではない。むしろKentの主張はその逆で、優れた開発技術を持った者と、開発技術を持っていないが何かを作りたいという者との間で、力と責任のバランスをとらなければならない、ということなのだ。本当に技術がいらないのであれば、開発者のスキルなどどうでもよいはずだ。開発者と利用者のバランスなど改めて考える必要もない。XPが成功するかは「信頼できるソフトウェアのすばやい見積り、実装、デプロイができる優秀なプログラマーの増加にかかっている(同)」のだ。

しかし、しかしである。それほどまでに開発者が「優秀」であるにも関わらず、開発者とふつうの利用者との間で適切なパワーバランスを保つことをXPは要求している。だからチームやコミュニティについてKent Beckは熱く語るのだ。5つの価値を掲げるのだ。それはソフトウェア開発に限らず、他の分野でも見かける「よくあるやり方」とは大きく異なるマインドセットを、開発者と利用者の両方に要求するのかもしれない。だからXPは「ソーシャルチェンジ」なのだ。



君の悩みは本書を読んでも解決しないかもしれない。本書には答えは書かれていない。しかし、一人の優れたプログラマが、同じ悩みを真正面から捉え、それを本気で解決しようと、今も苦闘を続けていることはわかるだろう。Kent Beckの悩みは君の悩みだし、Kent Beckの夢は君の夢でもあるはずだ。

「XPの課題は、このような深い変化を促し、個人の価値と相互の人間関係を新しいものにして、ソフトウェアに次の50年間の居場所を用意することだ。(The challenge of XP is to encourage deep change, to renew individual values and mutual relationships to give software a seat at the table for the next fifty years.)」(23章より)


エクストリームプログラミング』は君のために書かれた本だ。だから、君に読んで欲しい。


100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊

100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊

アジャイルサムライ−達人開発者への道−

アジャイルサムライ−達人開発者への道−

Eric Sink on the Business of Software 革新的ソフトウェア企業の作り方

Eric Sink on the Business of Software 革新的ソフトウェア企業の作り方

アート・オブ・アジャイル デベロップメント ―組織を成功に導くエクストリームプログラミング (THEORY/IN/PRACTICE)

アート・オブ・アジャイル デベロップメント ―組織を成功に導くエクストリームプログラミング (THEORY/IN/PRACTICE)

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

CODE COMPLETE 第2版 下 完全なプログラミングを目指して

CODE COMPLETE 第2版 下 完全なプログラミングを目指して

時を超えた建設の道

時を超えた建設の道

パタン・ランゲージ―環境設計の手引

パタン・ランゲージ―環境設計の手引