Kyle Wilson attempts to answer that, and amazingly brings up factors that are not usually discussed. Software development, by itself, is complex because there are always unknown factors, and we are still not capable of anticipating all of them. But a software project can easily turn into an abysmal hole where we keep doing things. Probably a re-evaluation of the value and a realignment with it at every point of doubt can help. A very interesting essay, read the piece, I am sure it will churn more thoughts out of you.

