> "I joined this company after they'd gone a stretch without any developer, and the bug queue showed it."
I think maybe if you're at a company like that, you should be very cautious in suggestions/timeline/etc about literally anything and everything technical. Certainly much more than you would be at a company that has a basic level of software engineering competency. It's kind of a different world...
Yeah, I'd be reluctant to commit to a hard timeline for a mess like that. Be extremely clear about what they're up against, that it's going to take a lot of time, and that there will probably be unexpected surprises which will take even more time.
At the same time, don't tackle everything at once. Cut it up into pieces, define interfaces between different parts, make sure the behaviour is documented in test cases. That way you'll be able to refactor parts of it while keeping the system working.
Go from working system to slightly better working system. It might seem like the overhead would take longer, but your sanity will save you much more time. You'll be able to quit or pause and maybe implement some new feature for the newly redesigned part, to keep business happy and to show that the refactor does help.
I think maybe if you're at a company like that, you should be very cautious in suggestions/timeline/etc about literally anything and everything technical. Certainly much more than you would be at a company that has a basic level of software engineering competency. It's kind of a different world...
“We’ll design it, test it, release it, and never touch it again !”
At the same time, don't tackle everything at once. Cut it up into pieces, define interfaces between different parts, make sure the behaviour is documented in test cases. That way you'll be able to refactor parts of it while keeping the system working.
Go from working system to slightly better working system. It might seem like the overhead would take longer, but your sanity will save you much more time. You'll be able to quit or pause and maybe implement some new feature for the newly redesigned part, to keep business happy and to show that the refactor does help.