I meet a lot of people who are opposed to Agile. This used to annoy me and I used to think of them as ignorant or snobs. But when I started thinking deeper and kept myself in their shoes, I realized they have their version of reality which makes perfect sense from their position.
In my view, this hostility (or apathy in some cases) exists on three different levels:
(a) End result sought
(b) When to use Agile based frameworks/methodologies
(b) A lacuna in the current approach to various Agile-compliant frameworks and methodologies.
Let's consider an example from the business world. Different businesses have different objectives - one may run for profit maximization while other may seek sustainable profit optimization with a healthy workforce. Can Agile be used in both scenarios? Maybe not. In a given context we need to understand what is the expected end result of a way of working - Valuable outcome, sustainable pace, immediate gratification, or something else.
As Cynefin framework has defined five decision making contexts - simple, complicated, complex, chaotic, and disorder. Most of us try to stick to the Agile way of working in all five which essentially ruins the Agile way of working. Agile fits well in Complex context and maybe a working solution in Complicated. For Simple context, Agile is over do while for Chaotic context Agile is certainly not a way to go. For Disorder context as Cynefin framework recommend - try to contextualize in remaining four.
While talking about Agile, we invariably focus on utopia - no difference between employees & contractors, co-located teams, flat organizational structure, and much more. But in reality, this state doesn't exist. Most of the frameworks and methodologies claiming to be Agile are mute about:
1. Distributed teams
2. Outsourcing partners
3. Expertise based silos
4. Contractual obligations
5. All team members are not expert or skilled. There are Yodas as well as Padawans
6. Even emergent architecture requires upfront thoughts
7. Divide in onsite and offshore
8. Divide among full-timers and contractors
9. Resistance to breaking away from existing organizational pyramid
10. The existence of the project
11. Usage of Agile to squeeze more out of IT and Engineering teams instead of focusing on optimizing effectiveness
12. Marketing of various non-Agile frameworks, methodologies, processes, practices, tools, and techniques by various very successful people and organizations
13. Ignoring existence of various other functions beyond IT and Engineering
14. Silence on individual performance. We are not the only a team but love our individuality too.
Should we abandon Agile? Certainly not. Agile is evolving and I expect that in near future, it will tackle the questions beyond today's narrow scope.
All this big talk is fine, but what should I do in the meantime?
As an Agilist, I prefer to address the underlying causes rather than any specific framework. Also, anything which questions the establishment is bound to face resistance.
I hope, this small write up will raise more questions which will help all of us to think little deeper.