When I talk of agile, I am immediately reminded of the orientation trips organized by many business schools these days. These trips take students to an outdoor spot, where they are given an adventurous assignment. Very few ground rules are set and then the team is left on its own. The team has to come together, know each other, utilize each ones strengths and then venture into unknown territory to achieve a known target. The team members communicate with each other and review performance all through the activity. The team can ask questions to the orientation masters during each activity, but no one is allowed to offer guidance or critique to the team during each activity. At the end of every activity, all teams come together, the orientation masters critique the performance of each team and they are set off to the next activity. Agile software development is quite like the above example. The project usually aims at developing innovative products, the teams are assigned what they are expected to achieve in each iteration, and the teams are self-organizing and work under minimal rules and oversight.