In my opinion the basics are:
- Start by understanding your customer journey, and the moments your applications will be used, and for what specific features.
- Design the screenflow first, then screens, then iterate to refine
- Make the usage of your app very easy for the user, and guide her/him through the features
- Use very common UI controls. UI controls are elements of a language, so do not use a control to mean something else.
- Adapt to your user level of expertise in using your software. Don’t make it hard when your app is for most people and don’t dumb it down when your user base consists of subject matter experts.
- With respect to the previous point, have a user test the UI as soon as it is ready. Sometimes feeling / experiencing the UI will highlight paths that don’t make sense or misplaced controls.
- Information Architecture is important from day one. Data input validation rules will save tons of time. I refer to “UI Architecture” in my AMASE Product and Service Construction method. See: https://amase.io/amase-business/AMASE-Product_and_Service_Construction_Journey_V01.pdf
- If you expect to run your UI on multiple devices (Android, iPhone, Tablets, smart watches), decouple the UI from the backend, and think API.