You now have an end-to-end working system. Every piece can talk to each other, and all the code compiles and runs. It’s time for you to start making it do real work. Even as good fences make good neighbors, good interfaces make for good team interactions. Each team can now work in complete isolation if necessary and can start to fill in the logic behind each interface. Each of your teams now has a basic framework that they can begin to fill out. You can do whatever you like, as long as you don’t break the existing interfaces. No one can change APIs between layers unless both teams agree. Don't implement the simple stuff first. Instead, target any area that contains new technology, is inherently difficult, or is core to your product.
Tip 22: Solve the hardest problems first
Use The List to prioritize. Do not let the system break aka Don't leave Broken Windows.
It seems to me that in order to prevent breakage of the system, you need to have automated builds and tests in place. If you have notifications of when people check stuff in, you can probably get an idea of what the "other guys" are doing without requiring lengthy status meetings.