「大規模開発」と「大規模な開発」

Agile開発の話をすると、ほぼ必ず出てくるのが「うちらは大規模開発だから。Agileなんて無理でしょ。」という指摘。

「あ〜そうですか〜 大変ですね〜」と頷きながら、「本当は『大規模開発』と『大規模な開発』を履き違えているんだろこの野郎」と心の中では思っているのであった。

Slashdot: Hello World? That's easy!より引用:

public interface MessageStrategy {
      public void sendMessage();
}

public abstract class AbstractStrategyFactory {
      public abstract MessageStrategy createStrategy(MessageBody mb);
}

public class MessageBody {
      Object payload;
      public Object getPayload() {
            return payload;
      }
      public void setPayload(Object payload) {
            this.payload = payload;
      }
      public void send(MessageStrategy ms) {
            ms.sendMessage();
      }
}

public class DefaultFactory extends AbstractStrategyFactory {

      private DefaultFactory() {}

      static DefaultFactory instance;

      public static synchronized AbstractStrategyFactory getInstance() {
            if (null==instance) instance = new DefaultFactory();
            return instance;
      }

      public MessageStrategy createStrategy(final MessageBody mb) {
            return new MessageStrategy() {
                  MessageBody body = mb;
                  public void sendMessage() {
                        Object obj = body.getPayload();
                        System.out.println((String)obj);
                  }
            };
      }
}

public class HelloWorld {
      public static void main(String[] args) {
            MessageBody mb = new MessageBody();
            mb.setPayload("Hello World!");
            AbstractStrategyFactory asf = DefaultFactory.getInstance();
            MessageStrategy strategy = asf.createStrategy(mb);
            mb.send(strategy);
      }
}
  • 本当はもっと軽やかに実装できる所を、上記例のように(あるいはもっとズタズタに)重く実装してしまう。
  • 結果、体制は膨れる。「大規模な開発」だ。
  • いや待てよ...
  • 体制が膨れちゃうから実装が重くなる?
  • その方が金取れるからね...