It’s easy to get caught up in your work. As an Software Engineer, you think a lot about future proofing your code; You start thinking about scaling and figuring out the best solutions while employing the best practices. You can easily slip yourself into a black hole.
At a startup, I cannot just keep my Engineering hat on; I cannot only focus on Engineering. Because the company has an expiration date, I have to be considerate of the business side of things as well. Would the business flourish if I took my time to write the most beautiful code that humanity has ever seen? No, as long as it works, there is no difference in value towards the customer.
Even though it burns my soul to leave the code in a state that I am not entirely happy with, I have to move on and leave it as “good enough”. It might not be future proof and I may have to refactor it later, but it is still “good enough”. However, this doesn’t mean I should abandon all of the best practices and program in the most terribly lazy way. There needs to be a balance between the two, and the general rule is: If it’s good enough and if it works then move on.
“Work on what matters the most and do the least amount of work that brings the most value.”