2.1. What Is Agile?
A lot of different definitions for Agile exist, ranging from the superficial to the authoritative and pedantic. Not every definition is useful, nor is every definition really applicable to your job as a software developer. Things only get more confusing once you realize that various Agile methodologies exist, all of them competing for your attention.
At the end of the day, the most important thing to remember is this: Agile software development is a conceptual framework that seeks to minimize risk by developing software in short amounts of time. A typical iteration can last 1 to 4 weeks, during which time a software team performs tasks from a complete project life cycle (planning, design, coding, testing, documentation). Each iteration usually starts with stories (what Agile calls requirements) and culminates in potentially shippable software. Another important aspect of Agile is the team's ability to self-organize as they communicate face-to-face with stakeholders and other team members.
If you're not familiar with Agile, you probably have one of two reactions:
"How is this different from cowboy coding? Agile sounds just like every chaotic code-and-fix project I've ever been part of."
"How does anyone get anything done in so short a time? Agile sounds like a perpetual hamster wheel where everyone burns out."
First of all, if you have doubts when you first encounter Agile, welcome to the club. Rest assured that everyone who takes a closer look and sees Agile ...