| I agree with the author. However, I need to do things that must be done now.
Because best code is the enemy of good code. Easy to fall to refactoring and lost everything in the end. Good code is code that works and solves a problem right now.
Otherwise, we will not have clients waiting for a "well-polished" formatted product that is easy to read and maintain for us. And that is the problem of the whole infrastructure.
We needed solutions for X, Y, and Z just yesterday.
And then, if it "shoot," we like idiots yearly fixing all problems that have been done earlier. Speed is critical. More important than perfectionism or wish for well-structured, easy-to-read, maintained code. Is that awful? Yes. I want my code to be good as it can be.
But is it possible to do it in a limited time when an urgent problem must be addressed? Nope. And over time, we increase complexity, multiply complexity, and then leave because not able to maintain it anymore. That's why we touch different things while fixing everyday problems because we do not want to fix them later. Balancing complexity in future. But this is fake. This future never happen in 99% cases. The biggest problem is that if we do not rush right now, there will be no tomorrow for the product we develop. |
The thing is, poorly-structured, hard-to-read, unmaintained code is the enemy of speed. I don't think it's ever a good idea to go too far in either direction. If you spend all of your time on refactoring/cleaning up code, you never get anywhere in terms of functionality. But if you never refactor, you're development speed slows to a crawl, and making meaningful changes becomes impractical.