How does it work?
At its core, Agile does the same thing you and I do when faced with too much to do and not enough time.
You make a list
Sitting down with your customer you make a list of features they would like to see in their software. We call these things user stories and they become the To Do list for your project.
You size things up
Then, using Agile estimation techniques, you size your stories relatively to each other, coming up with a guess as to how long you think each user story will take.
You set some priorities
Like most lists, there always seems to be more to do than time allows. So you ask your customer to prioritize their list so you get the most important stuff done first, and save the least important for last.
You start executing
Then you start delivering some value. You start at the top. Work your way to the bottom. Building, iterating, and getting feedback from your customer as you go.
You update the plan as you go.
Then, as you and your customer starting delivering, one of two things is going to happen. You'll discover:
- You're going fast enough. All is good. Or,
- You have too much to do and not enough time.
At this point you have two choices. You can either a) do less and cut scope (recommended). Or you can b) push out the date and ask for more money.