Software developers need to stop loving the code they create and start loving the value that their code delivers - Jerónimo Palacios
A quote I came across that has a really good point. Way to often nowadays I see developers arguing about topics which might be very nice from an architectural point of view, but without considering the costs associated with it. Every programming paradigm is a solution for an existing problem. Way to often developers just use those paradigms without really grasping what problem they solve just with saying "thats how you do it".
Don't get me wrong, I'm a huge fan of writing clean code and using best practices. The problem I see is that many developers are more focused on the code architecture then on the value they're creating. I took part in meetups where there was a talk about a new way to do routing in Angular and there experiences with refactoring. They spend 2 weeks with a team of 8 people doing it. But they didn't even mention why they did it. Which advantage it had. They just did it because it's now "the way to do it".
In my projects I'm trying to create as much value for the client as possible. When I see that there is a good reason to do some kind of refactoring, then I just do it. Those reasons might be "requirements changed a lot", "technical change that will improve short-term or mid-term productivity" or "reduces error rates my a wide margin". The reason should never be "there is a cool new technology" or "there is a cool new paradigm"!
A good rule of thumb I found was to say: "Would I spend the time on it if it's my own project where I would use my own unpaid time?".