Simplicity and usability are not the same thing.

On one hand you have massive GUIs spanning the whole screen containing hundreds of controls. On the other you have airy GUIs with more empty space than actual content and every time you want something you have to open 3 layers of menus to find it.

Both are wrong. The correct thing is to find a balance. The balance depends on the usecase as well as the users.

This is what makes it hard. You can't just code up an app and throw is over the fence. You have to actually engage with the users, watch them perform their work, even try it yourself. You have to understand what is important and what is a distraction. You have to understand when these things chance. And you have to understand that beginner users evolve into experts all the while you have new beginner users coming in.