In my project management class today, one of the students asked about how to schedule interdependent sub-projects. The scheduling tool he uses doesn't deal well with pieces of one sub-project having dependencies of other sub-projects. It's difficult to see the critical path, and to know what's really going on. (It's too easy to have circular dependencies in the scheduling tool.) I asked if they scheduled by architecture component or by feature. I'm not sure if I understood the answer (or if the student understood the question), but I think they're organizing around architecture pieces.
If you have a number of sub-projects and they're coupled (have dependencies on each other), try rethinking how you organize the work. I bet if you organize the work by feature instead of by architectural component, you'll be able to schedule easier. My student wasn't so sure this would work — he has some scarce people resources who need to work on multiple features. I suggested they rank the features by priority (1, 2, 3, 4, …) and have the scarce people work on features in rank order. This requires cross-functional teams and the ability to recreate small feature-driven teams. This would be a huge change for the student's company.
I'm a bit stuck. I only see program management (treating each feature like a project, managing all the projects, and using cross-functional development teams to perform the work) as a solution when you want to break tightly coupled interdependent sub-projects. Since I can't think of three alternatives, it's time to ask for help. Do you know of any alternatives?