Over the past year, like many of you out there I'm certain, I've been leaning more and more on generative AI chatbots like VS Copilot Chat, OpenAI's ChatGPT, and Anthropic's Claude to do research and propose solutions to software challenges that I'm trying to solve.
This has caused a fundamental shift in my workflow. In the past, I'd typically Google a topic such as "how to implement basic auth in a Rails app". From there, I might select a search result from Rails Guides, or perhaps come across a similar Q&A on Stack Overflow. I’d skim the guide or post, head back over to my editor, and start hacking away. I'd try a few things out, see what worked and what didn't, then go back to the documentation. It's a process I have used for much of my career, and while it certainly got results, it was a lengthy, and often frustrating one.
But fast forward to today. I've maybe visited Stack Overflow just a handful of times in the last month (which can't be good for their long-term vitality), and my Googling is at a bare minimum. Much of the time, I don't even find myself conversing with ChatGPT directly. All within VS Code, I've been relying heavily on its Copilot Chat Agent to perform increasingly complex tasks with less and less oversight.
VS Code Copilot Chat, agent mode.
Its capabilities at this point are frankly, pretty astounding. As an example from work I'm currently doing for a current client, SaaS wedding marketplace Novela, I was tasked with upgrading one of our Next.js app's biggest dependencies, the popular UI framework MUI. We've fallen a bit behind from the latest major version (v7 as of this writing) so we need to make the upgrade and jump two major versions. In the not too long ago days, I would have Googled for the upgrade guide, read through it, performed the indicated steps, run the automated test suite, performed some manual regression testing, and then fix whatever issues I found. Usually the find/fix process would take many iterations, needing to go back to the upgrade guide, figure out what I missed, or hope someone on Stack Overflow had the same issue that I was seeing, and someone posted a solution that seemed accurate. This would often be a process that spanned multiple days, and required intense focus.
But how I've handled it this time around, is my starting with a simple prompt within Copilot's Chat interface within VS Code.
The app is currently running on v5 of the popular UI framework, MUI. We're two major versions behind latest.
Following these guides:
https://mui.com/material-ui/migration/upgrade-to-v6
https://mui.com/material-ui/migration/upgrade-to-v7/
We should upgrade the app to the latest version of v7.
We may need to also update other dependencies, such as react, to make things work properly. We're also using various other packages built on top of MUI, that may also need to be upgraded.
The task is not complete until all cypress tests and jest tests pass.
Once complete, we will do manual visual regression testing.
This was all Copilot Chat (and Anthropic’s Claude Sonnet 4) needed to start working on the problem. As I sat there casually overseeing its work, it proceeded to:
read the referenced web pages for the upgrade guides
upgrade the npm packages
apply codemods
edit code that couldn’t be modified automatically
run a selection of the Cypress and Jest tests
examine any test failures and make the necessary code changes
Once I was satisfied, I instructed it to create a new branch using the Git tools MCP server, commit the changes, push everything up to GitHub via the hosted MCP server, and even create a new draft pull request.
All of this was taken care of in less than ten minutes.
Not everything went smoothly, unfortunately. After pushing the code to GitHub, and running our full automated regression suite, there were some failures noticed. So I drafted a new prompt:
take a look at this PR: https://github.com/novelaweddings/frontend/pull/865
it's an attempt to upgrade us to MUI v7 from v5. There's some broken stuff still, as seen in the failed workflow runs.
I know we have issues with our datepicker upgrade that need to be resolved, and probably account for most of our failing tests.
Can you look into this, and see what changes you can make?
and make sure you're on the right branch! copilot/fix-864
Copilot started churning away again. It checked the workflow run status, identified the containers with failed jobs, and pulled the logs. It then orchestrated the tests locally, compared the failures to the logs, and got to work on fixes. Without further prompting, it re-ran the tests, iterated on the code until they passed, and pushed the changes up to GitHub, where the tests subsequently passed.
The results from diagnosing, fixing, and then committing the changes related to the test failures.
Agentic coding with VS Code and Copilot has been an absolutely awe-inspiring addition to my workflow. Not only did it shorten the time needed to complete this daunting task, it also freed me up to do other things while it worked in the background. While Copilot handled this upgrade, I was able to catch up on Slack messages, engage with my team, and even start thinking about the backend design for the next big feature we’ll be adding to Novela’s marketplace.
Will agentic coding eventually put me out of a job? Maybe. But for now, I’m going to continue reaping the productivity gains from this amazing tooling—something that just a few years ago I would never have thought possible.