金を払ってでもやりたいメンテナンス、退職してでも逃げたいメンテナンス

メンテナンスは趣味として出来るのか、出来ないのか、という話題で盛り上がっている人たちがいる。
http://mput.dip.jp/mput/?date=20070924#p01
http://d.hatena.ne.jp/higayasuo/20070924#1190604766
メンテナンスについては、こんなにハイレベルなアウトプットを出しているわけでは無いけど、自分でもちょっと思う所があったので、せっかくなのでつらつらと書いてみる。
自分からソースを書きたくなる場合って、どんな時だろうか
「それが好きだったから」とかいうノリで、ハイレベルなソフトウェアを作り上げていく人たちが多くいる一方で、できあがったソフトウェアのメンテナンスはネガティブに受け止められがちで、お金をもらわないとやりたくない、できない、という人たちがいる、という現実は、確かにあると思う。
理由はいろいろあるだろうけど、そもそも、オープンソースソフトウェアとしてソースコードを書く、という作業が、多くのケースにおいて、自分の意思を通しやすい、自由にソースコードを書きやすい、特別な行為だからなんじゃないかと思う(自分でOSSをリリースしたことはないので、間違っているかもしれないけど、敢えて書きます)。
メンテナンス作業と減点法
だから、もし、企業のフルタイム労働者として、ライセンスがOSSというだけで、残りの側面は、他のクローズド/受託開発と同じように、上司から指示された要件を厳密に満たすためにソフトウェア開発を行うようなケースがあるなら、それは特別楽しい作業にはならない可能性が結構あるんじゃないか、と思っている。少なくとも、「減点法」で評価されるようなソフトウェア開発、たとえば期限を守れているか、バグはゼロか、性能は出ているか、必要な機能だけが忠実に実装されているか、といった項目"だけ"を、満点からいくら足りないか、という尺度"だけ"で測られるような開発現場であるならば、(たとえ扱う技術が魅力的なものであっても)それだけで魅力が大きく損なわれていることは間違いないはずだ。
一方、メンテナンスという作業はどうか、というと、こちらはかなり「減点法」になりがちな作業であるように思う。問題の特定を、求められているスピードで行えるかどうか、とか、デグレードが発生しないように改修できているか、とか、設計に悪影響を与えていないか、とか、はたまたドキュメントとの整合性はとれているか、とか、告知はきちんとできているか、といったソフトウェア内外のあらゆる項目について、細心の注意が求められる。これらの項目は、基本的に「問題が無くて当たり前」「(問題箇所以外は)それまでと同じで当たり前」、といった基準で裁かれる。そこには、プラスアルファはまず求められない。改良を目指した結果として、ちょっとでも問題が生まれてしまえば、その結果が生み出すインパクトに応じた厳しい視線を浴びることになるからだ。少なくとも、そういった「減点法」でしか裁かれないような部分が、メンテナンス作業の魅力を落とし、「しんどい(お金でももらわないとやってられない)」側面を作っていることは確かでは無いか、と思う。
楽しいメンテナンス、とは
まあでも、ソフトウェア開発に結構快楽的な側面があるように、メンテナンス作業にも楽しみはあるんじゃないか、と僕は思う。僕の少ない(非OSSの)開発経験では、メンテナンスのために、対象となる出来のいいソースコードを読む、という行為は楽しかったし。クオリティの高いソースコードを、範囲をしぼって、一定の解決ができるまで読む、という行為は、とても勉強になるし、プログラマの意図を考える事が楽しかったりする(何でこういう設計にしたんだろう、とか)。作業全体が減点法で評価されるのは仕方の無いことだけど、でも全体としてはプラスになっていた、と思う。
もっとも、実際には、ひどいソースコードをメンテナンスすることとか、そのひどいコードの結果の尻拭いがメンテナンスする側に降りかかってくることの方が、ずっと多いというのが、悲しいけど現実(システム構築の現場は、ひどいプログラマーの方が多いので)。しかも担当するときは、当然減点法で裁かれるし、後始末が大変だったりする。COBOLによる保守開発(汚いソースが多い一方で、要求品質は厳しい、という環境での保守開発)の現場の怨嗟の声なんかを、よくネットで読むけど、僕も確かにそんな仕事は、できれば避けたいな、と思う。
まとめ
まとめると、しんどいものの趣味として挑戦しがいのあるメンテナンス作業、というのはあると思う。ただし、それは保守環境に魅力がある場合のみ。それ以外のケースは、「減点法」による魅力減をお金(フルタイム雇用とか)で埋めあわせるような形でないと、メンテナンスは結局成立しないのではないか、と思う。