It took a while (and a few different iOS releases) to get it right, but here's what we do:
- We both have personal online calendars where we track appointments that occur during the work day; these are things the other parent doesn't need to know about. We both have iPhones (though I'm switching to Android soon) but we don't use the iPhone calendar for this purpose. Instead, our phones are synced to our personal Google Calendars via Gmail Exchange. I found Apple's calendaring products very subpar, especially with syncing between the desktop and mobile devices. Also, GCal's integration with Gmail is pretty awesome.
- I setup a Google Apps account at a custom domain that hosts two shared calendars: "Family" and "Childcare". These also use Gmail Exchange. We put stuff that we're both doing (like "Take kids to the zoo") or stuff that impacts the other parent (like "Ignite Baltimore #11") on the Family calendar. We also put stuff like "Grandma visiting" on the Family calendar. We track the ever-shifting babysitter and nursery-schools schedules on the Childcare calendar.
- We both subscribe to my TripIt account, which automatically generates a nice travel calendar. That saves me having to manually key-in travel itineraries, which if you travel a lot is pretty awesome.
One thing that makes all of the above harder than it ideally needs to be is getting Google mobile sync working properly. But I just checked out the documentation and it looks much-improved from the time I first set all of this up.
Having shared calendars has been a huge stress-reducer for our family, cutting down on many boring logistics and scheduling conversations. Someday soon I'm sure we will be adding individual kid calendars to our setup.
If you have questions about how to do something similar, hit me up in the comments!