He prefaced this saying it might sound <i>too</i> obvious. My reaction was that it&#x27;s a non-obvious but brilliant way to think about it. That was only reinforced as I continued to read his reasoning.<p>Thinking this way acknowledges in advance that software is complex, it&#x27;s more complex than you think it is, and any software project you start is likely to take longer than you think it will. Both sides of a software project or contract ought to know this and say it out loud before starting. More importantly, it underscores that a large software project nearly always starts under pressure. Rarely is something big and expensive undertaken without at least mildly unrealistic goals. Having been there many times, I know the management thinking is often that if we don&#x27;t have pressure and forces squeezing every bit of developer performance toward unrealistic goals, then we won&#x27;t even achieve the realistic goals, and we&#x27;ll be even later than we are.<p>Contractors are probably most affected by and in need of this way of thinking, though I&#x27;m well aware of how hard it is to admit you might be late on something when you&#x27;re trying to win a contract, especially when the competition makes impossible promises.