While agile development is about transparency and cooperation, you still need to protect your time. Here's a few things that you may have heard clients say:

- "Can I sit with you so we can work on this together?"

- "Can we squeeze in (this huge feature) real quick, it's very small and shouldn't be very hard."

- "I have a friend who could do this in a day, could we do this at half price?"

- "Can we go back to the first version? Also we shouldn't pay for this if we won't be using the code."

These scenarios can cost you a lot of time and money if you don't stand your ground. Your first line of defense is a good project management system.

If you need to be able to respond to unexpected issues or maintenance stuff, use a Kanban board. A Kanban board is essentially a to-do list that imposes a strict limit on how many work items can be in progress at a given time. It's a great system for keeping your team from getting overwhelmed by interruptions - if an unexpected issue occurs you can prioritise it, but otherwise it goes into the queue.

If you don't need to worry about maintenance or if the project isn't made up of many interconnected parts, you can use a Scrum system. Scrum limits a team to working on a highly specific goal in sprints lasting typically between 2-4 weeks. Its whole idea is to keep the team fully focused on their goal.

Both Scrum and Kanban rely on discipline to work, so make sure your client knows you're not using either just to annoy them.