The most important thing is that the codebase can grow without too much refactoring. Then you know you got the overarching design right. The rest then doesn't really matter that much. You can always rewrite certain parts when/if needed.
A good way to do this is by making the core really solid, this is called bottom up programming: https://paulgraham.com/progbot.html
None. I'm kind of surprised most people don't use lemmy the same way as reddit, I assume nobody just browsed /r/all?