I use Outlook 2003 at work, because I am essentially forced to use it.  
We use an Exchange server, and while I could choose to use another email
 client via IMAP, I'd still have to use Outlook for its calendar 
functionality.  After using it for some years, it's become apparent that
 a serious design flaw exists: there is no central authority for event 
information.
Each user has his or her own calendar, and each user's calendar is 
centrally hosted on the Exchange server.  This is all good.  But for 
every event, each user has his or her own copy.  This introduces the 
problem that events can get out of sync.  For instance, I've been 
invited a meeting, so I have a copy of that meeting on my calendar.  I 
then can drag this meeting to a different time slot.  I'm not 
rescheduling the meeting by doing this, and this doesn't effect any 
other attendee of the meeting, but now it appears to me that the meeting
 is at a different time than it actually is.  Outlook does try to warn 
me when I do this, but why would it let me do this at all?  (Ok, I just 
tried this out, so I could quote the warning, but Outlook didn't even 
warn me this time!  Must be some option buried deep in the interface.)
So how does Outlook try to synchronize everybody's calendars?  Email!  
When I propose a meeting, an email goes out to each invitee containing 
all the information about the meeting.  For the user receiving the 
invitation, Outlook detects that this is a meeting invitation, and gives
 the user three buttons: accept, decline, and tentative.  When one of 
these buttons is pressed, Outlook gives the user the opportunity to send
 a reply.  Up to this point, it's not so bad.
When I receive the reply, my instance of Outlook uses the information 
attached to the email to update the meeting on my calendar with 
information about who has accepted and who has not.  Most of these 
emails are empty, except for the attachment, but the invitee does have 
an opportunity to write something.  If I'm proposing a very large 
meeting, these many empty replies are incredibly annoying.  I would like
 to see the ones where the invitee had something to say, and I would 
probably like to be notified in some way of the declinations, but I 
really don't want to sift through all of the empty "accept" replies.
Now let's say I want to invite an additional person, say Jane, to my 
meeting.  I add her name to the list of attendees, and Outlook asks me 
whether I want to send updates to all the invitees, or just send an 
invitation to Jane.  In the first case, all the invitees will get an 
email, and Outlook will ask them to re-accept the meeting.  It won't be 
readily apparent that the only change to the meeting is that Jane has 
now been invited, but they will see Jane's name on the list of 
attendees, if they look.  That's pretty annoying.  If I choose the 
second option, only Jane gets an email, and the other invitees will not 
see Jane's name on the list.  So the choice is basically between 
annoying my invitees while allowing them to keep their copy of the 
meeting current, or forgoing the annoyance and letting the calendars get
 out of sync.
Worse things can happen, due to this replication of data and this silly 
email synchronization.  In particular, since a user can get multiple 
messages about a single meeting, these message can be accidentally 
processed out of order, or old updates that have be obsoleted may be 
reprocessed.  This can lead to a meeting appearing to be at a different 
time or different location that its actual time or location.  Outlook 
does sometimes warn when an update is being processed in the wrong 
order, but sometimes it doesn't.  I haven't figured out what accounts 
for the inconsistency.  But even if it did warn consistently, why should
 the user even be given the opportunity to make this mistake?
A better way to do calendars is to have a central authority for each 
event.  User calendars, instead of having copies of each event, would 
just have pointers to the original.  The calendar would look the same to
 the user, but the data behind the calendar would be coming from a 
different place.  If I've proposed a meeting, and I want to change the 
location, my client would just update the master record of that meeting 
on the server, and then every invitee's calendar would reflect the 
change.  No need to send an email update.  The invitees' clients could 
take care of notifying the user when something has changed about a 
meeting, and the client could allow customization so the user can select
 what sorts of changes actually trigger notifications.  Outlook already 
takes advantage of the central hosting of everyone's calendars, because 
it allows someone proposing a meeting to see the availability of each of
 the invitees.  It could certainly also take advantage of this central 
hosting to avoid replication of data about events and eliminate these 
synchronization issues.
I suspect that Outlook is the way it is because Microsoft wanted to 
support environments where things are not centrally hosted.  For 
instance, the way Outlook currently works, I could invite someone to a 
meeting at a different company, even though that person's client cannot 
talk to my company's exchange server.  But for nearly all of the 
meetings I deal with, all the invitees work for the same company that I 
do, and their Outlook clients talk to the same Exchange servers that 
mine does.  In this situation, Outlook/Exchange does not work anywhere 
near as well as it could.  So listen up, Microsoft.  Get busy and fix 
this, or Google is going to eat your lunch.
