Software development has been, is, and will likely remain fundamentally hard. Building quality systems involves an essential and irreducible complexity, which is why the entire history of software engineering can be characterized as one of rising levels of abstraction. As such, the task of the software development team is to engineer the illusion of simplicity.”

– Grady Booch, Inventor of UML

Engineering illusions of simplicity
Alexa Steinbrück