「アジャイル開発」とは、たぶん仕事のできないバカが作った言葉だと思っています。
agile
形
- 〔動作が〕機敏な、敏しょうな◆【名】agility
・That player is very agile. : あの選手はとても機敏です。 - 頭の回転の速い
英辞郎 on the WEB
頭のよさそうな言葉ですが、やっていることは、
- 最終的な設計仕様が確定しないまま、
- 思い付きで物事を進めて、
- すべてバラバラになった開発項目に収拾がつかなくなって、
- ひたすらに時間と労力と人件費を浪費して、
- 最悪出来上がらない。
という、頭の悪い開発現場になっています。
自分を顧みて、小学生の頃のプログラミングでさえ、最終的なゲーム仕様ぐらい考えながらモジュール開発していましたよ。
私からすれば、それ以下の開発を、大勢の大人が集まってやってできないという、遊び以下の仕事をして高い給料をもらっている。
それをバカと言わずしてなんと言うのか?
複雑な複合システムを成立させるためには、個々のモジュールをバランスさせて成立させることの方が重要になるんです。
以前、
「スーパーカブに400ccのエンジンを載せればいいじゃない」
と言ったバカがおりましたが、50ccエンジンが標準の、自転車を補強したようなバイクに400ccのエンジンを載せたら、
- フレームを補強しなくてはならない
- 動力を伝達するギアやチェーンをすべて見直す
- タイヤの接地面積を広くするために太くする必要がある
- ブレーキを強化しないと止まらない
と、ここまで考えるまでもなく、普通自動二輪のCB400あたりを買った方が良いことに気づくはずなのだけれど。
個別を見て全体を見ることができないんですよ。
小学生から中学生にかけて、個別のシステムをどんなに精度を上げて、スピードを上げても、他の部分で精度を下げてしまえば意味がないことを感じて、システムすべてを統合的に見て、最適値を探し出す必要性を感じていました。
大学になって、多目的最適化を研究テーマにしたのはそのあたりもあるのですが。
かつてのSEGAのスペース・ハリアーやアフター・バーナーは、3次元的に高速に動くアクションゲームでしたが、それはあらかじめ回転して拡大縮小しているキャラクターを、スプライトというセル画のようなデータとして作って保存して、高速で切り替えて3次元のように見せていたのです。
sin、cos、tanなどの三角関数は、基本的に小数点以下の数が永遠に続く無理数で、当時のコンピュータではリアルタイムに計算すると時間がかかってしまい、高速アクションなどは夢のまた夢でした。
しかし、当時のゲーム画面はブラウン管であって、640x480程度の解像度なので、小数点以下せいぜい3桁程度の精度で回してしまっても、高速で画面を切り替えれば人の目にはわからない水準になっていたわけです。
その割り切りができるかどうかが、システム設計のセンスというか、能力だと思います。
メタルギアシリーズの小島秀夫がゲームデザイナーとして素晴らしいのは、細かい表現にこだわりながらも、全体のゲームシステムとしてしっかりと成立させたうえで、人を感動させられるところだと思います。
最近、SEという言葉がはびこっていて、30年ほど前にはそんな言葉はなくて、すべてプログラマーだったわけですが、業務が細分化されてしまって、そういった統合的な最終完成形を想定したモノづくりができなくなっているように感じます。
全体のバランスを整えるという作業ができるかどうか。
別にソフトウェアだけでなく、機械とか建築とかのハードウェアや、演劇や美術や音楽などの芸術にも求められるセンスなのですが、できない人の方がほとんどだと思います。
それを正当化するためのアジャイルだと思っています。
アジャイルは新しくなんかない。
どちらかと言えば、退化した、子供のお遊びレベルの開発だと結論付けてしまおうと思っています。
そんなもの正当化しちゃだめですよ。