The Critical Chain Project Management demands higher flexibility of your team:
From Wikipedia Critical Chain Project Management:
A Critical Chain project network will
tend to keep the resources levelly
loaded, but will require them to be
flexible in their start times and to
quickly switch between tasks and task
chains to keep the whole project on
schedule.
But also (from Wikipedia Critical Chain Project Management):
when they are running their "leg" of
the project, they should be focused on
completing the assigned task as
quickly as possible, with no
distractions or multitasking.
And also (from Wikipedia Critical Chain Project Management):
Because task durations have been
planned at the 50% probability
duration, there is pressure on the
resources to complete critical chain
tasks as quickly as possible,
overcoming student's syndrome and
Parkinson's Law.
What concerns me the most is the probability of the team end up doing a bad multi-tasking. See the Human Task Switches Considered Harmful article by Joel Spolsky:
From Joel's article mentioned above:
The trick here is that when you manage
programmers, specifically, task
switches take a really, really, really
long time. That's because programming
is the kind of task where you have to
keep a lot of things in your head at
once.
As you specified that you are working with software development, try to make sure your development team will understand the Critical Chain process otherwise they will freak-out and start doing many tasks at the same time.
Also from Joel's article:
In fact, the real lesson from all this
is that you should never let people
work on more than one thing at once.
Make sure they know what it is. Good
managers see their responsibility as
removing obstacles so that people can
focus on one thing and really get it
done. When emergencies come up, think
about whether you can handle it
yourself before you delegate it to a
programmer who is deeply submersed in
a project.
To eliminate your conflicts between Scrum/Agile and Critical Chain:
Critical Chain hinges on the fact that you don't have enough time to
complete the work (eg. they give you 2
days to complete 4 days worth of
work). In Agile, if stories are not
complete, they're simply cancelled or
carried forward into the next sprint.
This conflict can be solved if you assume the fact that a 4-days-task actually is a 2-days-task. The real work is done in less time than dimensioned.
From Parkinson's Law:
The Stock-Sanford Corollary to
Parkinson's Law reads, "If you wait
until the last minute, it only takes a
minute to do."
Of course some tasks will take more time than expected, but Critical Chain assumes half tasks finish early and half tasks finish late.
Critical Chain uses a buffer at the end of the project. (If your
project schedule is eight weeks, they
give you four weeks to do the work,
and a four-week buffer at the end of
the project.) In agile, you only have
sprints (iterations) when you have
work to do.
The eliminate this conflict you will have to set your sprint in a way that you always have work to do.
With the reduced time to finish the tasks as stated on first conflict much more tasks will fill the sprint-backlog. The overall time for project completion will reduce, than set it as the ideal time for project duration and let the remaining time as buffer.
It is very important to set priorities on tasks, like must do
(justification needed if not completed) and should do
and could do
(justification not needed if not completed).
Basically, you will run a pragmatic Scrum methodology under Critical Chain's eyes.