Engineers, AI Just Killed Your Best Excuse for Leaving Bugs in the Backlog. Now What?

Originally published on LinkedIn

๐—˜๐—ป๐—ด๐—ถ๐—ป๐—ฒ๐—ฒ๐—ฟ๐˜€, ๐—”๐—œ ๐—๐˜‚๐˜€๐˜ ๐—ž๐—ถ๐—น๐—น๐—ฒ๐—ฑ ๐—ฌ๐—ผ๐˜‚๐—ฟ ๐—•๐—ฒ๐˜€๐˜ ๐—˜๐˜…๐—ฐ๐˜‚๐˜€๐—ฒ ๐—ณ๐—ผ๐—ฟ ๐—Ÿ๐—ฒ๐—ฎ๐˜ƒ๐—ถ๐—ป๐—ด ๐—•๐˜‚๐—ด๐˜€ ๐—ถ๐—ป ๐˜๐—ต๐—ฒ ๐—•๐—ฎ๐—ฐ๐—ธ๐—น๐—ผ๐—ด. ๐—ก๐—ผ๐˜„ ๐—ช๐—ต๐—ฎ๐˜?

For decades, engineering has divided responsibility. - Support owns support issues. - Product teams build features. - Platform and Ops own infrastructure and keeps things running.

A lot of that separation wasnโ€™t because it was the best model, it was because of capacity.

๐—œ๐—บ๐—ฝ๐—น๐—ฒ๐—บ๐—ฒ๐—ป๐˜๐—ฎ๐˜๐—ถ๐—ผ๐—ป ๐˜๐—ผ๐—ผ๐—ธ ๐˜๐—ถ๐—บ๐—ฒ. And by implementation, I donโ€™t just mean writing code. I mean implementing it, testing it, understanding the impact, and getting it safely into production.

๐—”๐—œ ๐—ฐ๐—ต๐—ฎ๐—ป๐—ด๐—ฒ๐˜€ ๐˜๐—ต๐—ฎ๐˜ ๐—ฒ๐—พ๐˜‚๐—ฎ๐˜๐—ถ๐—ผ๐—ป. Imagine youโ€™re on a support call. Thereโ€™s a production bug in front of you. You find the problem and fix it. Then you realise the same issue exists in 10, 20, maybe 100 other places in the system. Historically, a good engineer would recognise that and probably stop at the immediate fix.

Why?

Because fixing every occurrence, validating the change and releasing it safely could be a significant piece of work and risk and there's a need now for a fix.

So you fix the incident and create a backlog item.

Maybe it gets prioritised.. Maybe it becomes โ€œtech debt.โ€.. Maybe nobody ever touches it again. Job done?

What made sense when implementation was expensive isn't true now when AI can generate the broader fix and have a PR in front of you in 10 minutes?

๐—ง๐—ต๐—ฎ๐˜ ๐—ฒ๐˜…๐—ฐ๐˜‚๐˜€๐—ฒ ๐—ต๐—ฎ๐˜€ ๐—น๐—ฎ๐—ฟ๐—ด๐—ฒ๐—น๐˜† ๐—ฑ๐—ถ๐˜€๐—ฎ๐—ฝ๐—ฝ๐—ฒ๐—ฎ๐—ฟ๐—ฒ๐—ฑ. ๐Ÿ”ฅ For the hotfix, same as before, keep the blast radius small. Restore service. Donโ€™t turn an incident into an uncontrolled refactor.

โšก After the incident. Now the harder question starts, you have the broader fix sitting in front of you. โ€œPut it in the backlogโ€ should no longer be the automatic answer.

๐Ÿง  ๐—ง๐—ต๐—ฒ ๐—ฒ๐—ป๐—ด๐—ถ๐—ป๐—ฒ๐—ฒ๐—ฟ๐—ถ๐—ป๐—ด ๐˜„๐—ผ๐—ฟ๐—ธ ๐—ต๐—ฎ๐˜€ ๐—บ๐—ผ๐˜ƒ๐—ฒ๐—ฑ. The hard part isnโ€™t typing the code anymore. Itโ€™s deciding: ๐Ÿ‘‰ What is the risk? ๐Ÿ‘‰ What is the scope? ๐Ÿ‘‰ What tests and coverage do we have? ๐Ÿ‘‰ What could this change break? ๐Ÿ‘‰ Can we release it incrementally? ๐Ÿ‘‰ What does it do to the delivery timeline? ๐Ÿ‘‰ How do we get it safely into production?

This is where I want to push engineers. โ€œ๐—œ ๐—ฟ๐—ฎ๐—ถ๐˜€๐—ฒ๐—ฑ ๐—ฎ ๐˜๐—ถ๐—ฐ๐—ธ๐—ฒ๐˜โ€ is not the same as taking responsibility. โ€œ๐—ง๐—ต๐—ฎ๐˜โ€™๐˜€ ๐—ฎ ๐—ฝ๐—ฟ๐—ผ๐—ฑ๐˜‚๐—ฐ๐˜ ๐—ฑ๐—ฒ๐—ฐ๐—ถ๐˜€๐—ถ๐—ผ๐—ปโ€ is not good enough either.

Youโ€™re the engineer closest to the problem. You understand the failure mode and the system and you already have the fix.

If the implementation cost has collapsed, but your behaviour hasnโ€™t changed, then AI isnโ€™t your bottleneck..

๐—ฌ๐—ผ๐˜‚๐—ฟ ๐—ฝ๐—ฟ๐—ผ๐—ฐ๐—ฒ๐˜€๐˜€ ๐—ถ๐˜€.

AI hasnโ€™t removed engineering responsibility. It removed one of the biggest reasons we historically deferred it. You are responsible for the quality.

So if you know the bug exists elsewhere, the fix is already sitting in front of you, what do you do?

๐—”๐—œ ๐—ท๐˜‚๐˜€๐˜ ๐—ธ๐—ถ๐—น๐—น๐—ฒ๐—ฑ ๐˜†๐—ผ๐˜‚๐—ฟ ๐—ฏ๐—ฒ๐˜€๐˜ ๐—ฒ๐˜…๐—ฐ๐˜‚๐˜€๐—ฒ. ๐—ฅ๐—ฒ๐—ฝ๐—น๐˜† ๐˜„๐—ถ๐˜๐—ต ๐˜„๐—ต๐—ฎ๐˜ ๐˜†๐—ผ๐˜‚ ๐—ฑ๐—ผ ๐—ป๐—ผ๐˜„..