An armada of emerging agile methods of software development (with eXtreme Programming and Scrum being the most broadly used) is both gaining popularity and generating lots of controversy. This high-level tutorial gives an overview of agile methods and provides background to understand how agile teams are addressing modern software engineering challenges. Analysis of empirical evidence is used to discuss strengths and limitations of agile methods in various contexts. The participants are introduced to the innovation diffusion models and environments, and discuss what is needed for agile methods to cross the chasm and move into the mainstream of software development.