Most late projects were not late because of technical difficulty. They were late because the scope was never settled. So we begin every engagement with a session that defines what is out of scope as clearly as what is in it.
If we cannot describe success as a number, we have not understood the request yet.
Then we split the work into two-week increments, each delivering something usable. That makes slippage visible early, whereas on monolithic projects it appears all at once at the end.