Everything happens for a reason.


Imagine you stand on top of hill. It is foggy day, you can merely see the length of your own arms. You are trying to climb to the top of hill. What strategy you would use to get to the top in the most efficient way?

This is classic hill climbing problem. Whatever strategies, you have risks of running into local optimization, instead of global maximum.

We can avoid this limitation by occasionally using simulated annealing. This allows search algorithm to break out of local maxima by first making it worse.

Agile promotes incremental, iterative development process, to battle with uncertaintities nature of software development. Sounds similar to hill climbing, right? If you think they are similar, where is simulated annealing in Agile? Where do you see Agile getting worse before getting better?

The truth is Agile is a very lousy way of doing optimization. It creates false hope, and leads to chaos. Why, because it most certainly always create local optimization. It is optimizing for wrong top of hill. Your company is not making enough of money? What the heck has anything to do with Agile. When did Agile says anything with productivity, making more sales, or simply cutting expense.

You think development methodology is the problem? Horribly wrong. Agile is not any succesful in project delivery than any other development methodologies. When did you hear success stories about how Agile helps the firm bring the second life? IBM pushed Agile, look at how it lives now.

If you believe Agile can save your stupid development team, who always make bad decisions, you probably have a better chance in success believing in hill climbing algorithms.