Complex systems require a special approach.It is almost impossible to foresee everything from the very beginning.One bad decision can be repeated hundreds of times across the design.This kind of work is more of a strategy than a marathon. It is necessary to look back often, analyzing your solutions.