2015-01-24

Team Geek を読みました

このエントリーをはてなブックマークに追加

先日、第67回 Ruby関西 勉強会 - Ruby関西 | Doorkeeperに行ってきました。ささたつ(@sasata299) さんの発表を聞いていて、気になった本がコレ。

O'Reilly Japan - Team Geek

Google の中の人が著者。エンジニア集団がチームとしてソフトウェアを開発するときに役立つ読み物です。リーダ的な立ち回りをする人も、リーダの下で開発をする人も読者の対象です。絶妙な翻訳による軽妙な語り口で、飽きることなく最後までスイスイ読めました。

全ては HRT (ハート)という言葉に集約されています。謙虚(Humility)・尊敬(Respect)・信頼(Trust) の略語で、共同作業において忘れてはいけない姿勢として挙げられています。

読んでて気になった部分がひとつあります。ユーザも人間であるという前置きがあり、その上で HRT を実践して、6.2.6 節では面倒でもユーザにとって使いやすくしよう、と述べられています。

これが、YAGNI の原則から外れる場合があるのです。YAGNI は、いわゆる You ain't gonna need it. という原則で、いずれ必要にはならない という格言です。

Web エンジニアとしての経験則ですが、ウェブアプリケーションでユーザの利便性を上げるための小さな改良は、たいてい大きなコストを伴います。古い IE をサポートしないといけない場合なんて、暴れ牛に必死に掴まって乗りこなすようなものです。

そして、その小さな改良は、いずれ必要にならない(かもしれない) わけです。リソースと納期が無限ならば、できるところまでやるべきです。しかし、現実にはリソースも納期も 有限 です。

そう考えると、リソースと利便性のバランスを保ちながら、その利得を最大化できるようなジャッジを感覚的にかつ瞬時にやってのけるエンジニアは、シックスセンスの持ち主だと思うわけです。

この問題をモデル化して最適化問題に落とし込めば、ソフトウェア工学のひとつのネタとして成立するのではないかなーとボンヤリ考えていました。既にそういう分野が存在するかもしれないけれども。