War story time!
Once, I worked on a website. It was healthy and profitable, and had been around for a while. In fact, it had been through at least two rewrites before I showed up, gaining features and complexity each time. The last version took longer than expected, and by the time it was done the dev team wanted to add some ambitious new features to keep up with the state of the art in cool websites, which had shifted out from under them during the rebuild. Management was fine with that… so the devs went off and made a bit of a front-end mess with jQuery. And then added some backbone.js to try to fix it up… etc. And almost a year later when the new CTO (former tech lead) finally made the call that it wasn’t working out, some devs were bitter, others probably relieved, but everybody was a little disappointed and skittish. A few minor bits were salvaged. The mercurial repo was archived, and a git repo was born. So the failure wasn’t visible, it was only recorded in living memory. Senior devs started to trickle out.
That’s about when I showed up. Soon after that, some mildly ambitious new folks started advocating for a site rebuild using React, the new hotness at the time. Management had already been sold on the proposed new features last time, although they weren’t really sure what all the fuss was about, or why it was so hard. The new CTO had been bitten once already. A compromise was worked out: most of the front-end devs could use the new tech, but it had to be incremental, and it had to exactly and seamlessly match the feature set, look and feel of the current site. Meanwhile, a few of us (including me) would maintain the existing code base, while building a JSON API to serve the new SPA-esque front end. The API was ready in a few months, but the new front end kept running into UX edge cases and couldn’t quite release. The CTO was getting stretched between the dev team (many of whom were new, as his old buddies had mostly moved on) and management who couldn’t understand why it was taking so long. Blame got shuffled around.
And then, the hammer fell. The entire dev team was laid off in one stroke, except for an ops guy and an especially dedicated “full-stack” dev, who kept the frozen site running while a new version was rebuilt from scratch, using a completely different technology, by a consultancy. I don’t know if it was on time or on budget, but it definitely went online a few months later. It didn’t look or feel quite the same… but I guess it turns out that neither the user base nor the management really cared as much as the CTO.