A short note on building products you don't hate later
If you're still explaining the product in five years, you built the wrong abstraction.
Good software becomes invisible. Bad software stays visible because it never quite does what users expect.
The test: would you be embarrassed to open this codebase in three years? If yes, you already know what needs to change. Do it now, while you still remember why.