The biggest source of developer headache is complexity. Specifically unexpected complexity. The kind that pops out of nowhere from the simplest of settings and makes you rip your hair out.
As an example, here is a partial and simplified state machine for what should happen when using a laptop’s trackpad.
If you have an idea of what should happen in the states marked “WTF?”, do send me email.