I've done it before, in production environments. Now that I'm using CI/CD with Azure and micro services I find that it's indeed a lot easier to drastically change certain parts of the system :D Especially if it's necessary. Just change it, test it, and if anything still happens on production it happens... Of course I don't work on any critical systems, a bug is annoying at worst. Programmers get scared to change anything, then make their changes so that it impacts existing functionality as little as possible. Ultimately, decision making becomes about software rather than business. We want x, but make it y because the software is to hard to change. If the business wants x they should get x even if that means rewriting parts of the application. Although such decisions are also often driven by money. It's difficult, but I always try to own the code and not the other way around :)
Best, Sander sanderrossel.com Continuous Integration, Delivery, and Deployment arrgh.js - Bringing LINQ to JavaScript Object-Oriented Programming in C# Succinctly