改善と改革
ソフトウェア開発プロセス改善。
言葉の響きは良いが、自分はこの手の活動が大嫌い。新人の頃から何回この手の活動があったろう。そして現実は、改善活動の都度、仕事はつらくなっていくのであった。会議が増えたり、作業工程が増えたり、報告資料が増えたり。映画Office Spaceの「テスト手順書には表紙をつけること」みたいな話はシャレじゃなくて現実なのだ。
分業制度が抱える根本的問題
20年前の話にも書いたけど、昔はプログラマとコーダが別だった。プログラマはコーダに指示書を書き、コーダはその指示書に従ってコードを入力する。出来上がったコードはフロッピーではなく、カードに打ち込まれる。
[*1]
そのカードを計算機センターの読み取り機にかけて、コンパイルジョブが走る。結果は紙のリストに出力され、それがプログラマに返される。
指示した仕事の結果を検証できるのは数時間先だ。つまり、指示に間違いがあるとそれはとても高くつくことになる。半日無駄にすることになるからだ。ならば指示書作成の段階で入念にチェックするしかない。紙に書いたコードを脳内で文法チェックする。非常に高い能力を要求される作業ではあるし、厳密にやればやるほど指示書確認に時間をとられる。かといって手を抜けば半日後にがっくりするだけだ。
データベース担当とアプリケーション担当を分けるのも本質的には同じ問題を抱えている。特にテーブル構造の変更は影響もでかい。作ってみてから「やっぱこれじゃだめだ」となると、大幅な手戻りが発生する。ならば設計段階で入念にチェックするしかない。モデル図や設計書をもとに、脳内でロジックをチェックしていく。ものすご〜〜く高い能力を要求される作業である。コンピュータと同じ事をやれ、といってるわけだ。そして手を抜けば数週間後、数ヵ月後にものすご〜〜くがっくりすることになる。[*2]
「設計」「開発」「テスト」の分業にも同じ構造は当てはまる。作業指示して、結果が判明するまでの時間が長ければ長いほど、手戻りは高くつく。だからこそ、作業指示の段階で徹底的に人間がチェックせざるを得なくなる。本当はコンピュータがやる仕事を人間がシミュレーションするわけだ。だからSEの給料を高くしろ、などとは言わない。そもそも無茶なんだよこんなこと。
改善=根本的問題はそのままだから辛くなる
プロセス改善というのは、そういう分業構造が抱える根本的問題には手をつけず「できることからやっていこう」という所から話が始まってしまう。つまり「誰もが改善に寄与した気分になれる」性質を持っている。だからひょいひょいとアイデアがでてくる。
でも出てくるアイデアは「報告書のフォーマットをそろえよう」とか「ネーミングルールを決めよう」とか「確認会を開催しよう」とか、重箱の隅つんつんなレベルで終わるのがオチだ。いわゆる標準化の策定と徹底、ってやつね。
そして報告書のフォーマットが決まれば、必ずそれをチェックする担当が必要となる。ネーミングルールも然り。確認会が定例化されれば、そこに向けての資料整備が増える。標準化チェックシートみたいなのが配られて、うぜーーーーーと言いながら答えていく。映画Office Spaceみたいに、ウザい上司が入れ替わり立ち代り「テスト手順書に表紙つけた〜?」と確認してくるという世界はプロセス改善の典型的な結末だ。
- 手順を増やせばルールが増える。
- ルールが増えれば手順は増える。
- 分業制である以上、手順の事前検証は必須。
- つまり、プロセス改善では仕事はどんどん増えるだけ。
根本的問題を放置する理由
ちょっと考えれば当たり前な話なのに、なぜ根本的な問題には目をつぶり、重箱の隅をつつくようなプロセス改善に走るのだろう? これは自分もよくわかってない。 二つの仮説を書いておく。
AgileとRailsが実現する改革
そして前者の「技術の壁」が崩壊するときが「改革」の機会ではないか、と考えている。TSS端末が安くなり、プログラマが自らコーディングできるようになったのはその典型例だろう。
Agile開発も、その「技術の壁」を崩す可能性を秘めている。
- テスト駆動型開発により、コーディング→テストのサイクルが短くなる。テスト手順書でテストチームに作業指示する、という分業が無意味になる。
- フィーチャードリブンな開発により、要件分析→実装のサイクルが短くなる。設計書でプログラマに作業指示する、という分業が無意味になる。[*3]
Railsはこの流れに追い討ちをかけていて
改革の壁
20年前の例で注意したいのは
という二点だ。
新しい技術を活用して改革を行うには、職種や組織の変革も伴うことになる。
20年前のコーダーは主に外注委託だったから、簡単に切ることができた。でも、同じ社内で分業制を敷いている場合には、そう簡単にはいかないであろう。古い体質の組織はそのまま老化していくだけで、Agile開発というのは新興組織が主役になるのかなぁ...
*1:写真は http://www-03.ibm.com/ibm/history/exhibits/storage/images/PH001.jpg を拝借
*2:あるいは関係者一同デスマーチで無感情無表情になっているか...
*3:これについては近日書きます