BadgerSoft is a fictionalised example of a real problem. I've changed the names and details to protect identities.
Storefront
One team's events came through with the storefront missing. That's a field we'd added to a shared NuGet package so every event says which BadgerSoft storefront it started on. Someone had bumped the package to pick it up.
The team looked at the data, saw the field was missing, and posted in the support channel, which in practice means me. They hadn't tried to debug it.
The package sits inside our .NET APIs and fills in common information on the events they raise. We built it so teams don't have to think about it. They add the package, call one method, and it does the rest.
The PR that wired it into their API came out of a model, with the tells all the way through. The team didn't understand the code it wrote for them.
Three minutes
I opened their Program.cs.
builder.Services.AddScoped<IEventEnricher, TradeEventEnricher>();
builder.Services.AddBadgerEvents();
Inside AddBadgerEvents the package registers its own enricher with TryAdd, which skips the registration if there's one already. Theirs was already there, so the package's enricher never got in. That's the one that fills in the storefront. It's ordinary .NET dependency injection, the way a package lets you bring your own implementation.
Their API has its own enricher because their domain needs one, and they didn't know that adding it switched the package's one off. That makes it worse, because it's their own domain and they don't understand it. Once I'd shown them, they couldn't see how to fix it, so I walked them through that.
It took me about three minutes. The field isn't there, so you find what adds it and rule that out, then work back to the start of the chain. Here that was their registrations.
Dumber
I think AI is making developers dumber.
You used to learn the wiring by doing it. You wire a package in by hand, it misbehaves, and you find out what TryAdd does because you had to. Do that a few times and you know how the pieces fit together. I see some developers hand all of that to a model and never learn it. They lean on it for code they couldn't explain if you asked them to.
I see QAs and people in roles that aren't technical writing code now that they can. They understand it about as well as the team with the missing storefront.
A while back I wrote about AI psychosis. The people I worried about most were the ones who'd used the tools to produce work they never understood in the first place. That piece was about what happens to them when the tokens run out. This time a team came to me over one missing field.
Lazy
If AI can't solve it, it's a shrug and a question for someone who understood this before AI. What the fuck is going on with that?
I've seen non-technical product people have AI throw Jira stories together from the transcript of a Teams call, and think the result is good. Writing a story is where you decide what the team is going to build, and a model summarising a meeting hasn't decided anything.
Self-serve
The storefront bug was a one-off, but I see the same lack of knowledge time and time again. I'm annoyed and tired. I'm also worried about people who can't get out of problems they made themselves with AI.
I might need to change how I support people. Someone asks in that channel and I lean in and help. I could ask "what have you tried?" and "how are you debugging it?" before I do.
I shouldn't need to ask. As a junior I had to self-serve the solution, and I didn't ask anyone until I was stuck.
Optional
We made IEventEnricher optional on purpose, for flexibility, and so we could change the package without breaking the build of any team with its own. If it had been required, the bump would have failed to compile against their enricher and they'd have had to work out why.
Their tests didn't tell them either. They don't check what the API sends out, so they pass whether the storefront is on the event or not. The team wrote them to go green.
I've made IEventEnricher required, because a compile error would have told this team why. Now every team deals with the lack of flexibility.
To finish
A missing field took me three minutes to find, and the team that owned it didn't try. AI is making people dumber, lazier and more stupid, and the rest of us pay for it.