A lot of mistakes are made when it comes to front end design and user experience. I’m not a front end designer by education, more by experience and testing.
First mistake: ‘My users are well educated intelligent people’.
Make your interface monkey proof! Only show buttons that can trigger actions that are available to the user and when the user is allowed to. If they can break it, they will break it!
Second mistake: ‘My users will be patient and wait until one thing is done before pressing anything else’.
They are not and they don’t! Use loading spinners to indicate that a request is being processed, and block the user to initiate the same action again until the first one is complete. Blocking overlays can help, but less dramatically a small spinner instead of the normal button text with a ‘loading, please wait…’ message and disabling the button will be enough in most cases. You can’t help it that the network and server need time, but just let your users know so they will not get into the ‘I think the app froze, let’s click all buttons multiple times until something happens – state’.
Third mistake: ‘Help… the 10k paged book’.
As you probably already know, your users are lazy and 99% of them will not search long if they can’t find the answer immediately. Online chat is more effective and will probably save you time. This way you’ll also hear from your users what goes wrong. If a question is asked repeatedly then you interface is not clear enough and needs to be changed. If some configuration is required before a user can start, create guiding wizards, or show ‘Did you know’ popups if you (in fact the server) notices that it takes to long before the configuration is completed. This way you will not spam users that know how everything works and help those who need that extra push in the right direction the first time.