Reminds me of the KSP2 fiasco. Management insisting on reusing the engine from the old game, and firing all the senior devs who could have told them there was no possibility of getting the features they'd announced to work without rewriting the engine from scratch.
My previous work used two mission-critical software for continuous operation.
One was some guy's university project written in Object Pascal and PHP and largely untouched since 2006. I tried offering fixes (I also knew Pascal), but I was rejected every time because the cumulative downtime caused by software issues was not enough to justify the downtime caused by the update (obviously this was determined by a Middle Manager (derogatory)).
The other was (I shit you not) an Excel spreadsheet with 15000 lines and 500 columns. I tried making a copy and cleaning it up, but Excel couldn't handle the amount of data and ran out of memory.
Oh yeah, I remember the good ol' "Our whole business Logic is within this 30 tables spread sheet, that only one person can read, and don't you dare restarting that computer" times.
One person. Sitting in front of three monitors. In front of a spreadsheet that maxed out every resource of that computer. It was glorious.
We had two desktop PCs on the factory floor doing server stuff for a lot of assembly machines. We couldn't move them to proper hardware or virtualize them because the GUI and the server were built as one monolithic application (I still don't trust any Japanese company's developers as a result), so one computer was made the primary server for one half of the factory and the fallback for the other half, and vice versa, to solve the reliability issues stemming from the software's dogshit design.
What it couldn't solve was Windows' dogshit design. One early Monday morning, when we switched on the factory, Windows decided to force-update itself, then failed and bricked both computers. We spent half the shift with our thumbs up our asses periodically checking if tech support bothered to show up yet.
Sums up every Node project I've had the displeasure of looking at. The lock file being the only thing holding the twisted web of versions keeping that franken-app running between a minefield of incompatibilities and buggy hacks.
ffs, every time someone from a community group asks me "Can you have a quick look at our basic website, we just need to change <reallySimpleThing>", and I'm like "sure, i used to do web development, let's have a look [...] FFFFFFUUUUUC...."
I have a coworker who thinks I'm this guy cuz it's apparently absurd for us to add the 5 most popular dependencies on the planet to our environment and I'm sentencing us to the doom of dependency hell.
Yes, and you do it at the point you need to work on that feature. The business pay for it when they want the change.
You do not pay for the refactor with your time, if the company won't pay to fix their code. Just make it clear the risks and how bad it could be if you carry on with duct tape fixes.
You have to be strong and firm and not agree to hacks. You need to work with your team to ensure you're on the same page rather than getting undermined by cowboy dev claiming he can do the feature in 2 days when it needs 2 weeks to do the necessary work.
Sure, refactoring is sometimes necessary. But refactoring also introduces new bugs often. Our code base is constantly being refactoring, and it's not more reliable, stuff is constantly breaking.