Why didn't we have it 20 years ago?! Why Agile enthusiasts insist on not
having too much design before hand, less documentation, not much
emphasis on architecture,etc? why are we able to actually deliver
projects today with less design, architecture and documentation but not
I imagine IT workers in the back of their minds had thought about doing
some forms of Agile years ago but they simply couldn't do it!
The reason why Agile is possible today is that we have appropriate
tools, knowledge and experience to do it. Based on these assets we can
perform better, estimate more reliably, and predict accurately. These
assets are the reason we can do Agile today but not before!
There are plenty of tools that make development, testing, deployment and delivery faster and more predictable.
There are already many tools and frameworks that make development much
faster. Developers no longer need to re-invent the wheel. Numerous tools
exist for testing and debugging that we didn’t have before. They help
development to be even faster.
In other areas where Agile is interested in such as deployment,
automation, delivery, configuration management, etc we have now better
tools that make the whole process faster and make Agile’s continuous
integration and delivery possible.
These days for many projects we can do less design or less upfront
design not because it is not important but because we have enough
experience and tools to predict development or solve design issues.
Having numerous patterns we can make sure that most of the coding issues will fit into a pattern category and can be fixed.
In most of the fields the domain knowledge has already been explored and
solutions exist. It is just a matter of finding those solutions and
Code generators can cover issues of less design or bad design.
Agile has less emphasis on creating an upfront architecture not because
it is less important but because we already have enough experience and
knowledge in building similar systems. There are already enough
reference architectures, reference models and architectural patterns
available to fit the current project.
There exist tools by which we can create a prototype faster and validate an architecture.
Agile is not efficient in very complex and large systems. This tells us
that when we do not have enough experience and knowledge then the Agile
process will not perform well.
So is Agile bad now ?
Of course not! Above points just indicate that for parts of Agile there
are “enablers” that make it feasible not the Agile manifesto itself!
This is the case with some of the items in the Agile manifesto.
Agile has other values under its veil that were not the topic of this
writing; ideas and mechanisms related to customer satisfaction, team
building, simplicity, etc to name a few. What I wanted to stress here
was only the existence of some enablers that are making Agile what it is
now and without them there was no Agile today.
PS: I borrowed the term “enabler” from Martin Fowler’s writings.