Acute awareness of the socio-cultural context in which a design must operate is essential. Otherwise you've invested in failure.
Knowledge is incomplete, things change all the time. Space for uncertainty should be a built-in feature, not an afterthought.
Complexity tends to take root and expand in many design processes. It is essential to embrace it, but avoid simplistic solutions.