The conventional wisdom after much time learning from knowledgeable folks in this forum (my understanding of it). And through my own experience building apps is to:
- build light objects
- minimize list fields (only when less than 100 entries), only use them purposefully
- relate objects indirectly but both ways when necessary
- preload searches
- feed from preloaded searches
- avoid inflow searches (… hence preloading them)
- mnimize back and forths between client and server
- use custom events extensively
- schedule custom events when full data is needed within steps
- use backend when processing is not needed immediately
- recursively process key data
And more stuff covered mostly by @petter great guide, as well as, many other talented folks