I had a conversation with Yoaz Ziv, Director of Marketing for Realization the other week on using Critical Chain at the program level. I was gathering some information for an internal project, but one concept, Resource Flexibility, struck with me. I'll admit, I don't like referring to team members as "resources" but I'll stick with Yoaz's terminology.
To use resource flexibility, you first plan out each project in the program assuming full staffing. Then you pull 10% of the resources and put them in a pool that isn’t assigned to any one project yet. By watching the consumption of buffers on each project, you can predict which project may be running into trouble. You can then throw your extra resources at this project to help get it on track.
Be using Resource Flexibility, you take some of the politics out of staffing decisions. Each project manager knows that if their project goes critical to the point of impacting the overall program, they will get resources to help them recover. It's like having a SWAT team around to come in and save the day on the critical project. They come and help out, then go help the next project that needs assistance.
I know there's one school of thought that says putting additional resources on a late project will make it later. It increases complexity, complicates communications, and the new team members have to be "brought up to speed" - taking someone else away from doing their job. But in this case, you start the project deliberately lean and by adding the additional people, you are only bringing the team up to its full size. I think this is better than starting a project with to many people. I've experienced over-staffed, bloated projects that just don't seem to move very fast.
Will this approach only work with Critical Chain? Probably not, but if you don't have buffers, you will need some other indicator to show if a project is getting behind. It could be a burn-down chart. It should be more than just a hunch by the program manager. But regardless of what project management methodology you are using, Resource Flexibility may be a good program level tool for you.