Many software engineering problems live in a space of solutions that twists and turns like a blanket hastily thrown onto the floor. [...] If the problem is complex enough (and software design and software process decisions can be very complex indeed), there is no best way to find this best solution.
From Making Software edited by Andy Oram and Greg Wilson. (Emphasis is mine.)