Simplicity is prerequisite for reliability.
Simplicity and elegance are unpopular because they require hard work and discipline to achieve and education to be appreciated.
The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.
Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.
How do we convince people that in programming simplicity and clarity - in short: what mathematicians call elegance - are not a dispensable luxury, but a crucial matter that decides between success and failure?