Agile, an adjective often abused in our field, is a term that covers a multiplicity of software development methodologies. We have tried many of them and we came round to the need to take the best and adapt them to everyday reality.
Every software project has its own story and requires different methodologies, suitable to its characteristics.
There are however some transversal principles: incremental development and the continuous involvement of the customer, both of which allow us to limit the unexpected, and to guarantee adequate time frames and costs.