Tending the garden: what technical debt looks like now

AI can build a feature in an afternoon, and technical debt grows as fast. Tend to your systems and you keep the speed without the security and compliance holes.

Barry Fisher smiling broadly, with short receding hair, a short beard and thin rectangular glasses, wearing a pinstriped collared shirt.

Barry Fisher

Read time: 5 minutes

A sunlit garden with a neat lawn, round clipped shrubs and beds of red and purple flowers, a sprinkler misting water behind a young tree, and wooded hills beyond
Image: “Vibrant Summer Garden with Lush Greenery and Flowers”⁠ (opens in a new tab) by Lorenza Magnaghi⁠ (opens in a new tab), Pexels License⁠ (opens in a new tab), via Pexels.

Building software has never felt faster. A feature that once took a sprint can now take an afternoon, and for our clients that is genuinely exciting. It’s exciting for us too.

But speed changes what it means to look after a system. We’ve started to think of the codebases we care for less like buildings and more like gardens: living things that need tending if they’re going to keep flourishing.

Your website and digital systems are gardens too. Tend to them, and they stay secure, compliant and quick to change. Leave them, and they fill with technical debt: shortcuts that make later changes slower, riskier and more expensive.

Those shortcuts leave security holes and compliance gaps. Attackers find the holes and regulators find the gaps. A data breach or an investigation damages your reputation, and ties your team up when they should be moving your business forward. You can still move fast, as long as someone tends to the garden as it grows.

How technical debt takes root

Cartoon: three seeds fall into a sunny garden and grow into smiling pink, lilac and peach flowers. A grumpy dandelion weed springs up beside each one, and its seeds blow away and start more weeds
Each prompt grows what it asked for. The weeds come up alongside, and spread.

With AI, it’s easy to build a system one prompt at a time. Each prompt solves the problem in front of it. What it can’t see is everything around it: why a pattern exists, which business rule must be respected, what was decided last quarter and why.

That’s where the weeds come from. A second way of doing something that already had one. A shortcut that sidesteps a compliance rule. Code that works today but that nobody fully understands. Each one is small, but left alone they spread, and the garden gets harder to work in every season.

This is what technical debt looks like now. Less a single bad decision, more a steady self-seeding of small ones.

Planting with context

Cartoon: a row of smiling lilac flowers, each with a written label on a wooden stake beside it. A new label is written, a dashed outline shows where the new flower belongs, a seedling grows to fill it, and a butterfly flutters in
Every plant has its label, so new growth knows where it belongs.

Our answer is to make sure every change is made with the full picture. For each system we build, we codify its domain knowledge in a set of documentation files that live alongside the code: the language our clients use, how their teams actually work, and what matters most to their business. Those files live with the code, so the knowledge stays with your system when people move on.

That knowledge is organised so it can be drawn on exactly when it’s needed. Building a feature, fixing a bug, improving performance, or carrying out a security or compliance review all start from the same shared understanding. The result is new growth that fits the garden, rather than fighting it.

From writing code to tending it

Cartoon: a watering can waters a drooping, frowning flower, which springs upright with a smile. Then a grumpy weed is pulled up by its roots and dropped into a flowerpot
Less digging, more watering and weeding.

Our role is shifting. Less of our time goes on writing code, and on some projects the code we write by hand is now close to zero. More of it goes on review, alignment and quality: checking that what’s been built is correct, consistent with what came before, and true to what our clients need. A developer still reviews every change before it reaches you.

That’s the gardener’s job. Not doing all the digging, but knowing the ground, deciding what belongs, and pulling the weeds before they take hold.

Features today, futures tomorrow

Cartoon: a smiling sunflower grows and blooms, labelled features today. Its seeds fall and sprout into three seedlings, labelled futures tomorrow
Features today Futures tomorrow
Today’s flower sows tomorrow’s seedlings.

Kent Beck describes software as having two kinds of value⁠ (opens in a new tab): the features it delivers today, and the options it keeps open for tomorrow. Racing ahead on features is the fun part, and we love doing it with our clients.

For a more technical take on this, read our post on AI development without technical debt.

Our job is to make sure that race never costs them their future. Because the systems we build together should flourish now, and keep flourishing for years to come.

The 5 most important ways to tend to your digital garden

Cartoon: a clipboard checklist stands in a sunny garden. Its five boxes are ticked one by one, and for each tick a smiling flower grows and blooms in the bed beside it
Five habits, five healthy beds.

Your developers do the digging, but these five checks are yours to make.

  1. Ask how your developers keep technical debt down. Good answers are specific: who reviews each change, which automated tests run on it, where decisions and business rules are written down, and when they make time to tidy up. Be wary of reassurance without detail, or of anyone who says AI makes review unnecessary.
  2. Ask for evidence of updates. You should see a patching schedule and a record of what was updated and when. Ask how fast your developers and vendors act when a zero-day vulnerability is announced, and how they test each update before it goes live.
  3. Check your backups. They should run on a schedule, sit apart from the live system and be restored in a test from time to time. Ask when yours were last restored.
  4. Know what’s growing in your garden. Keep a list of your systems, integrations, plugins and third-party vendors, and who has access to each. Remove access as soon as someone leaves.
  5. Plan for the seasons ahead. Know when your platform and its hosting reach end of life, and budget to upgrade before then. An outside health check finds the weeds you can’t see from the path.

Our six guardrails are how we answer the first question. If your system has gone a few seasons without weeding, or someone else planted it, our website systems audit shows where technical debt has taken root, with the risks in priority order. Our support and security plans put security patches on a schedule, checked against each new vulnerability. To talk it through, book a 30-minute call with one of our friendly experts, with no obligation.

All posts →
Daniel Johnson
Using Agentic AI Without Vibe CodingPractical guide to using Agentic AI in Drupal development without vibe coding. Learn where AI helps, where it fails, and how to produce reliable code.

Want to talk this through?

Tell us what’s slowing you down. Thirty minutes with one of our friendly experts, no obligation.

Book a 30-minute call