This is Reza! I am a software developer and architect mainly on Java/EE. Here you can find links to my writings, photos etc. My areas of involvement are software development, design and architecture. I am also interested in and study about open source, distributed systems, software metrics, patterns, architecture, methodologies and mathematics. Reza has posted 3 posts at DZone. View Full User Profile

Why do we have Agile today?

03.17.2011
| 715 views |
  • submit to reddit
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 before?

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!

Better Tools

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.
  
Less Design

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 best practices.
Code generators can cover issues of less design or bad design.

Less Architecture

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.

Complex Systems

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.
Published at DZone with permission of its author, Reza Ghafari.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)