I prefer to describe ‘Agile’ in terms of the following key characteristics that are common to the portfolio of Agile methods:
- People driven.
- Iterative-incremental process.
- Measuring success.
Agile software development is not driven by a predictive plan describing how to implement analyzed, designed and architected requirements. Agile acknowledges that requirements cannot be predicted in every possible detail in an upfront way.
Agile is not a process of handing over different types of intermediate deliverables to different specialist departments, where each department performs its specialized work in isolation.
Agile is driven by the continuous collaboration of people ranging over all required departments; whether they are called business, IT, marketing, sales, customer service, operations or management.
People are respected for their creativity, intelligence and self-organizing capabilities. People are respected for their ability to understand and resolve a problem without being overloaded with too much ceremony and bureaucracy. A ceremonial overload only replaces this collaborative thinking, innovation and accountability of people with bureaucracy, paper results, handovers and administrative excuses.
People are respected in the time they can spend on their work via the idea of Sustainable Pace. Work is organized in such a way that the tempo is sustainable, indefinitely.
Agile replaces the traditional command-and-control mechanisms of assigning individuals on a daily basis with executable micro-tasks and totalitarian authorities for invasive control.
Agile teams are facilitated by servant-leadership. Boundaries and a context for self-management exist, upon which teams are given objectives and direction. Subtle control emerges from the boundaries.
Agile processes are not free-play approaches. Agile processes are defined and they require high discipline.
Products are created piece by piece (‘incremental’) with each piece being made up of expansions, improvements and modifications. The built pieces and the total product are frequently revisited (‘iterative’) to assure overall integrity.
Agile requires explicit attention from all players on quality and excellence. Agile replaces the idea that these can simply be poured into documents and paper descriptions.
Progress in software development cannot be measured and guaranteed on the basis of mere compliance with predictive plans and milestones, documents, handovers, signatures, approvals or other ceremonial obligations as is the case in the industrial paradigm.
Agile makes it explicit that success and progress in software development can only be determined by frequently inspecting working software and the actual value it holds for the people who will have to use it.
It is a natural part of software development that the people having to use the software can never be sure on the usability and usefulness until they actually get their hands on it. No paper documentation or virtual process can replace this.
Agile recognizes no business versus IT discord. The two are needed for success, from the perspective of creating both useable ànd useful software products.
Even when requirements and implementations are predicted in an upfront way, they are prone to change. Markets and competitors evolve, users can only know what they want when they get to use it, enterprise strategies change, to name just a few.
Contrary to a predictive process, change is not excluded from the Agile process nor expelled to the ceremonial outskirts of development. New insights, evolving opinions and changed priorities form the living heart of Agile. Agile thrives upon emergence, the emergence of requirements, plans, ideas, architectures and designs. Change is not disruptive because it forms a natural part of the process. Agile encourages change as a source of innovation and improvement.
What we used to know as ‘change’ has evaporated.