Something I've been saying a lot around the office is the age old joke... I have solid reason every week to bust this out because we're tripping over one of them. [Edit:Spelling]
There are only 2 difficult things in software engineering:
1. Cache Invalidation
2. Naming Things
3. Off by one errors