This site is a work in progress. Last updated January 2023.
The content editing area should be as large as possible, so consider making utility windows and other editing areas compact and efficient, it can be tempting in this day and age to double or triple pad every control, this is a bad idea with complex software, as you're robbing space from places that need it more and the consequences of doing so will be serious, but won't show up immediately.
Convey the purpose and meaning of controls and items with graphical previews / explanations. This could also be termed graphical feed-forward, this is particularly useful for abstract controls where it's difficult for users to grasp what exactly their choices will mean. The best of both worlds is when you can combine rich graphics to create an interface for abstract controls. Here's a particularly good example of this from Cavalry designed by André Maura.
Put editing controls in the content area - for example there are endless helpers and contextual tools in Google Sheets which speed workflows, in a graphics program this could be editing a gradient in the content area (as shown above). Anything which puts a user closer to the content they're creating and puts distance between them and control panels is a good thing for reducing friction and increasing the likelihood of flow state.
Allow users to customise the interface to suit the way they want to work, or the kind of work that they do. Customising window layouts or toolbar contents are two of the most common ways of supporting this.