One way to have less complexity is to remove features.
But what if features are fixed ?
Do not hide it or you will get a leaky abstraction, just move the right complexity to the right person so that the wrong person will not have to see it.
In terms of code it means :
- For the coder : do not put Database code near the View code. (Most of the time, a UI designer is not the same person as the DBA or database designer)
- For the architect : do not put the Accounting code near the Home Automation code.
In terms of interface design it means :
- Do not show any information the user do not need,
- Do not create big color contrast where the user should not look,
- Do not show advanced options, if your user is not an advanced user
In terms of enterpreneurship it means :
- do not ask to your lawyer how to save your money,
- do not talk about accounting with your banker,
- do not talk about your decision process to your contractor.
Maybe it sounds obvious said like this, but having the right person seeing the right thing and nothing more is exactly what managing complexity is about.