As a programmer, it’s a hundred times more important to not over-engineer than to “avoid tech debt”.
You will have to refactor and throw away code in the future one way or the other because it’s impossible to know what requirements you may have.
The less code you have, the easier it is to replace.
And don’t forget to write those tests, and not only unit tests, but also high-level functional, system and integration tests.
@thomasfuchs I'd add that it's also important to accept you won't always get it right the first time and the simplest solution sometimes takes a couple of attempts
But it's especially important to finish refactoring work because unfinished refactors are twice as complicated as if you'd never started them
@thomasfuchs I think most developers will have differing views about what over-engineered and technical debt means. Could you give an example for an over-engineered solution? I doubt that it'll be free from technical debt.
Server run by the main developers of the project It is not focused on any particular niche interest - everyone is welcome as long as you follow our code of conduct!