We should think of an universal standard for error messages, some of the points made in this document have caught of guard many times and should be standard practice for errors across all kinds of software.
For developers, needs probably revolve around being able to comprehend what logical situation resulted in the unexpected behaviour. Meaning that errors should give some sense of what internal state cause it to appear and where the input that formed this state came from.
(edit: typos)