What is Agile Methodology? Modern software development explained

What is Agile Methodology? Modern software development explained

Agile methodology is humility applied to software development.

The very first software development programs followed a waterfall development methodology.

Which means plan everything upfront. Get the funding. Execute. In a couple of years report the results. Rinse. Repeat.

Why Waterfall? Because first software development programs were done by state funded R&D departments of military universities as an experiment. This is the way government institutions do all kinds of experiments. Get a bunch of very smart people from the academia environment, get them to make up some sort of a long plan and throw loads of funds to them. A typical result is $20 billion dollars spent to find a dozen ways how NOT to build a fusion reactor. Sometimes the result is something awesome. If it happens to be awesome - the government tries to replicate it with some variations. If the government succeeds at replicating then the corporations and startups pick up the baton to move the technology to the market.

With the software development the technology was done by the government using waterfall planning. The technology was replicated by the government using waterfall planning. The first market solutions were done by large corporations using waterfall planning.

What do the government and large corporations have in common? Large budgets and large talent pools to pick from. Smaller companies have neither of those. For this reason, a Waterfall estimation-execution does not perform as well on a smaller scale. A small or medium company cannot do realistic planning for years ahead for a multitude of incoming projects. 

This realization is a hard hit on the ego of the owner of a small or medium company. You can’t pull off a Manhattan Project for software development. You want to trust in your team but they can’t do it either. Small and medium software companies do not operate at the same level. 

A small company realistically can build the simplest possible version of a product. Then improve it in small steps.

This is how development companies become Agile. This is how business leaders learn humility.