Sunday, November 29, 2015

Agile Principle Clarity

Agile is both philosophy and methodology; mindset and framework.

Agile is a great emergent methodology, however, there is such trend that industry has been a way to be preoccupied with asking all the ‘HOW’ questions and focusing on methodologies, with ignorance of in-depth understanding about the principles, values, and philosophy behind Agile. What are the values behind Agile, and how to clarify agile principles and apply them to practice agile management more wisely?

Agile approaches expect you not to get everything right upfront: So for some definitions, "failure is expected," and expects failure. “Failure" is an emotive word. Agile redefines failure to mean 'continuing after it has become clear that you cannot deliver sufficient value.' It allows you to stop at the beginning, or earlier than you expected to, and adjust the methods and practices to adapt to the changes. Thus, that approach lends itself to a much greater chance of success vs other methodologies and approaches. Agile redefines failure to mean "you need to change your plans based on what you learned. That might mean to re-think the last certain amount of time worth of work, or it might mean canceling the project, depending on what failed. Agility is the ability to adapt to changes, not following the plan too rigidly. 

Changing your mind is not necessarily as failing. Only continuing after it becomes clear that you are unlikely to deliver sufficient value. Once you remove the idea of a fixed destination for a project, the concept of failure is less absolute. So one might say we are geared toward learning by trying things out, by experimentation. That is a positive spin on "learning through mistakes" or "learning from failure." The "Scientific method" takes an even braver / smarter step, to qualify as a scientific fact one must have tried one's best to disprove the fact, and failed. what you need to do is to move away from the Waterfall idea of failure, where anything that you didn't get right up-front was a failure and deserved blame.

Agile encourages creativity. The manifesto values and principles are designed largely to allow creativity to flourish. Maybe start with the problem you are trying to solve in your current process and it will lead you to what type of agile framework to experiment with. Agile is a fantastic way of working to involve everyone in the process of creation and delivery. Agile stifles innovation when stakeholders dictate "how" and not get "why" and "what." The people who are drawn towards software development are, on the whole, more "processes and tools" orientated;  you 'apply' agility to the things you do during your creative process, not the creativity directly, though. Agile frameworks are a function you apply to convert the requirements of your process into high-level descriptions of things that can be said to have been 'done,' without going too far down the road are rigid proceduralization. Similarly, when you make software, you are often trying to be the agents of change. However, you are also the ones in control of that change. So it is important to have an in-depth understanding of the Agile principle to "respond to change" - even late stage change - imposed on the team from outside is also a very hard skill.

The inherent values of agile promote transparency, trust, collaboration, respect, open communication, customer centricity, creativity, etc.  In a top-down adoption, there should be a business objective for moving to agile. In a bottom-up adoption, development teams may need to prove a capability that leads to a business objective. In either case, the business objective should serve as a unifying goal for the various groups. Early on, isolation between groups may be appropriate. There is a great deal of internal improvements that can be done before the teams are ready to play nicely with others. Eventually, the groups must find a way to work together to achieve the overarching business goal.

Agile needs more engineering discipline, not less: Engineering practices are the core. Everything else is built on that. You achieve the ability to be agile in your software development by following engineering practices that allow you to adapt as efficiently as possible. Then things like Scrum and a more flexible mindset simply allow you to leverage the agility you've already built in. The benefits of Agility are not sustainable unless engineering practices are adopted in the earnest. So while practices related to business analysis and project management will yield quick wins, the optimal level of benefits and impact come in only when engineering practices are adopted.

Agile is principles, but it comes from many different groups of practices finding common ground. Agile is both philosophy and methodology; mindset and framework, the organizations and teams just need to experiment and learn; run and adjust; interact and improve; with the end business goals in mind, to achieve project result with customer satisfaction and value creation.


Post a Comment