What problem are we trying to solve?

This is a question that I always ask before starting any development task, and I was very happy to see a slide in one of the keynote sessions at nor(DEV):con asking this question.

I'd much rather have a colleague or client come to me with a problem that needs solving rather than a self-diagnosis and a decided solution.

Depending what on the problem is, and other factors like timescales, I may suggest a different solution or approach. This happened recently when I suggested a different approach using Drupal's built-in maintenance mode feature.

If there's no problem to solve, what's the reason for doing the work?