This post on "Agile" continues a mini-series on misunderstood terms in technology. Previous terms were the cloud and NoSQL.
Why Agile?
We want to make software that is valuable for people cheaply and efficiently. Ideally, the process is also pleasant for the participants.
Agile development achieves that goal. Agile teams build stuff customers want. They do it faster with fewer wasted cycles. Developers have more fun and write cleaner code. They do it at a constant pace that can be sustained forever.
Principles
The Agile Manifesto kicked off the movement with some lofty phrases like "people over processes". It proposes that we value "working software", "customer collaboration", and "responding to change" over some other stuff.
Sounds good, if a little vague. Getting a little more specific, the following subset of principles offered by the Poppendiecks in Lean Software Development are a helpful grouping:
- Eliminate waste
- Deliver as fast as possible
- Decide as late as possible