The hardest single part of building a software system is deciding precisely what to build.
Design work doesn't just satisfy requirements, it elicits them.
Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won't usually need your flowcharts; they'll be obvious.
Conceptual integrity is the most important consideration in system design.
Even the best planning is not so omniscient as to get it right the first time.
Einstein repeatedly argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer.