Maintenance is planned, not improvised
Dependency updates, certificate renewals and platform upgrades are scheduled work with owners and dates, so they do not arrive as emergencies.
About the company
House and Garden Services Ltd provides information technology services to organisations that need software built, integrated, tested and kept running. This page describes how we work and what we hold ourselves to.
We are a software engineering and IT services company. Our work covers custom application development, web and mobile products, interface design, cloud infrastructure, system integration, modernisation of existing software, quality assurance, security consulting and ongoing support.
The work arrives in different shapes. Sometimes it is a new system that does not exist yet. More often it is an existing arrangement — part software, part spreadsheet, part habit — that has stopped scaling with the organisation. Both cases start the same way: understanding the current situation precisely before proposing anything.
We deliberately keep teams small and directly involved. The people who design a system are the people who build it, and the people who build it are the people who answer for it once it is live.

Our purpose is practical rather than aspirational. Systems fail organisations most often not because they were badly built at the start, but because nobody could safely modify them later. We aim to leave every system we touch easier to understand and easier to alter than we found it.
That commitment shapes ordinary decisions: choosing a boring, well-supported dependency over an interesting one; writing the migration script rather than the manual instruction; spending an afternoon on naming. None of it is dramatic, and all of it compounds.
A fast answer that turns out to be wrong costs more than a considered one. We would rather spend an extra day understanding a requirement than a month building against a misreading of it.
Technical work can be explained without jargon. If a decision cannot be described in terms a non-specialist understands, it usually has not been thought through properly.
Whoever builds a component is responsible for its behaviour in production. This keeps quality decisions close to the people who make them.
Every feature, dependency and abstraction has an ongoing cost. We add them when they earn their place and remove them when they no longer do.
Client systems, data and commercial context are treated as private. Access is limited to the people who need it for the work in hand.
Software outlives the people who wrote it. Documentation, naming and structure are chosen so that the next person can pick the work up.

Each engagement has a person responsible for communication, so questions do not circulate without an owner.
Progress is reviewed at agreed intervals with working software rather than status slides. Between reviews you can see what is in progress.
Any decision that changes scope, cost or architecture is confirmed in writing, including the reasoning and the alternatives considered.
We adapt to existing tracking, repository and communication tools rather than requiring a parallel set of our own.
If a date or estimate becomes unrealistic, we raise it at the point we know, not at the point it becomes visible.
Repositories, environments and documentation are visible to you throughout the engagement, not only at handover.

Work is complete when it is implemented, reviewed, tested, documented and deployable — not when the code compiles.
All changes pass peer review and automated checks. The same standard applies to urgent fixes, which are the changes most likely to cause damage.
Unit tests for logic, integration tests for boundaries, end-to-end tests for the paths users depend on, and manual exploration for the things automation misses.
Interfaces are checked for keyboard operation, focus order, contrast and assistive-technology semantics as part of normal review.
Response times and payload sizes are treated as requirements with agreed thresholds rather than as something to measure after launch.
Builds and environments are defined as code so that what runs in production can be recreated exactly.
Dependency updates, certificate renewals and platform upgrades are scheduled work with owners and dates, so they do not arrive as emergencies.
Systems we support are instrumented so that failures and degradations are detected by alerting rather than by a user reporting them.
After a significant incident we record what happened, why the safeguards did not catch it, and which specific change prevents a recurrence.
Runbooks, architecture notes and environment documentation are kept current so that internal teams can take over whenever they choose.
Written enquiries reach us directly by email. If you would rather use a form, one is available on the Contacts page, and a full description of each service is on the Services page.