Summary
Salesforce provides a great standard UI experience that is highly customizable and adaptable to new features of the platform without you necessarily releasing new revisions of your application. At its core, it is a data-centric user experience, which means that most tasks come down to creating, editing, or deleting records of some kind. Having a strong focus on your Domain layer code ensures that it protects the data integrity of your application.
If you want to express a more complex process or a series of tasks, Visualforce and Lightning allows you to be more expressive using components or other HTML libraries to create the user experience needed for the task at hand. While this is very powerful, it is important to always consider the standard UI, and, wherever possible, augment or complement it with the Visualforce page and/or Lightning components rather than making this the only way of interacting with your application.
Equally important is to observe best practices around engineering...