11 years ago I created an application for my brother. It was created using Symfony 3.4 and was running on PHP 7.1. I moved on from my own business, but my brother kept using the app on a small scale. Every year that passed by, it became harder to find someone who wanted to maintain it. So it wasn’t really maintained and he decided not to really use it anymore, even though he knew there was a business case there. Eleven years of PHP evolution, framework breaking changes, and deprecated patterns had piled up. Upgrading it manually would have taken weeks of tedious, mechanical work.
Two years ago I decided to see if GPT could help with the upgrade. It cheerfully said it had done it, but it had removed dozens of features, some pages didn’t work at all and overall it was a mess.
One year ago I tried again. This time the LLM saw the pitfalls, but couldn’t work through the complexity.
This year when Opus 4.6 dropped, I read the familiar “This changes everything” articles. Yet those articles somehow had a different tone. The Symfony 3.4 project had now become my litmus test. So I started using Claude Code. There are hundreds of small changes between Symfony 3.4 and 8.0, and most of them are well-documented but incredibly time-consuming to apply by hand. Plus there were deprecations with the pddf generator, the email handlers, translation functionality, user authentication. Claude Code worked through the mechanical refactoring while I made the architectural calls about what to keep, what to restructure, and what to throw away. After 12 hours of back and forth, the application was fully upgraded to Symfony 8 and was running on the latest PHP 8.5. And the top 10 slow pages were now optimized.
It was a good test of where AI actually helps in engineering. The answer, at least for legacy migrations, is “a lot.”