I had to make a few changes to a SQL Saturday event recently. The repo is public, and some of the organizers submit PRs for their changes, and others send me an email/message/text/etc. for a change. In this case, an organizer just asked for a couple of image updates to their site. I opened VS Code, created a branch, added a URL for the images, and submitted my own PR. After the build, I deployed it.
And it didn't work.
I had a broken image. I checked the URL in code and realized I had "events" copied before the URL, which wasn't valid. Ok, edit the URL to be correct and repeat: new PR, build, merge, deploy.
And it didn't work.
I was looking at the code live on the site, the code in the repo, and I was trying to reconcile paths and file names and keys and values and a few other things.
I realized the world for a developer hadn't changed a lot, and in fact, I was in the age-old loop: deploy, patch, patch the patch, fix the patch for the patch, and so on. I don't even know that I could have gotten better here with testing, as these were one-off data changes that affected the site for users. If I enter the wrong data, it's wrong. I can't easily test for this.
I have written code that was wrong, and a few simple tests would have caught my issues. I've also written code that isn't easy to test. If I am adding or changing data, it's hard to test that. Often, I might do some copy/pasting between the code and the test to generate the test. If I've typoed something, the typo continues through the test (in some cases). Even using a code generator or an AI to produce the INSERT or UPDATE code might not solve the problem. They might read my typos in a prompt.
One of the best things to help code quality in the last few decades is continuous integration (CI), where we have automated systems that compile code, test it, and run it. It's not perfect, but it does help reduce the silly mistakes many of us likely make every day when writing code. These can't prevent typos and issues, but if we are testing intermediate systems, hopefully somewhere along the way, a human or AI agent tries to verify that the things we were typing exist and can catch a typo.
In this case, I had to find where I'd mistyped the line and realized that I had the path wrong. The image was in a subfolder and I needed to add that to the img url.
Working with data is hard, and it's a constant source of simple mistakes. I don't know we'll ever get away from patching the patch when data manipulation is involved.