Whenever project managers ask developers "Are you done?" with a task they will always say "yes". The problem is that project managers assume that means that they are "finished" with the task. This is not true - what they mean is "yes, I am done coding but I still need to test" or "yes, I am done but I still need to package the code up".

Project managers should introduce the concept of "Are you done?" and "Are you done-done?" - Which means I am completely done - there are no tasks left at all.  This makes status updates fun and avoids misunderstandings about what work is complete:)