優れたシステムでは、属人性のみが残る

システム開発から属人性を排除しようとして失敗する: プログラマの思索という記事を見て。いつも興味深い内容で、お勉強になります。

その現場のプロジェクトは大規模で人数も多いから、少数精鋭チームで自由に動くわけにはいかない。
その開発プロセスの意図は、誰が作業しても同じような品質を保つ所に重点を置く。
つまり、属人性を排除しようとする。
システム開発から属人性を排除しようとして失敗する: プログラマの思索

理想的なシステムで最終的に残るものこそが属人性がある仕事なんじゃないかと、改めて思った。そのシステムには、ソフトウェアシステム開発プロセスも含むのは当然のこと。

思えば、コンピュータの歴史は属人的作業からの開放の歴史そのものじゃないですか。ハンドコンパイルが不要になったとか、メモリ管理を考えなくてもよくなったとか、目視のユニットテストが不要になった*1とかとか。「昔はこんなことに時間使ってたんだ」なんて話をしだしたら、諸先輩方の方がよっぽど面白い話が聞けそう。

ソフトウェアシステム開発プロセスでは、「誰が作業しても同じような品質」…品質というか単に結果と呼んでも良いけど、そんな綺麗に手順化できる箇所は必ずプログラムに落とせる。SI屋に求められる製品はソフトウェアがほとんどで、ソフトウェアの管理はソフトウェアで可能だから。これは、最終的にハードウェアを求められる建築業界との最大の違いだと思う。彼らがコンピュータで幾ら計算しても柱を立たせることは(少なくとも現在では)できない。できたとしてもおーっきな機械が要るだろうし、ウチ等の「あ、subversionって便利らしいぞ。導入してみよう」とは雲泥の差がある。

SI屋が自らのシステムから属人性を排除するためには、それをコンピュータに作業させるっていう結論以外にはないんだよね。で自分達人間は、残ったドロドロで属人的な作業に注力する。コレに気付いた人が、アジャイルとかXPとか称して変革をもたらしてるんじゃないでしょうか。もしかして、大所帯プロジェクト管理手順はSI屋にとってのレガシーシステムかも知れない。

*1:ウチではまだ目視テストだけど(笑)