DOG AND JONES LTD

Software engineering practice

Services

Services

Ten kinds of work, described plainly.

The descriptions below set out what each service involves and how it is carried out. They do not claim certifications, partnerships, guaranteed outcomes or results that have not been agreed with a client in writing.

Abstract monochrome photograph of intersecting translucent planes and ruled lines

01 / Service

Custom software development

Applications written for one organisation's process rather than adapted from a general-purpose product.

Custom development is appropriate when an operational process is specific enough that shaping it around off-the-shelf software would cost more than building the software would. The work starts by describing the process as it actually runs, including the exceptions people handle informally, because those exceptions are usually where generic tools fail.

From that description we define the data the system must hold, the operations performed on it and the rules that must never be violated. Implementation then proceeds in increments that can each be demonstrated against the original description.

  • Requirements captured in writing before implementation
  • Data model and business rules defined explicitly
  • Delivered in reviewable increments

02 / Service

Web application development

Browser-based systems intended to be used daily, on whatever device and connection the user happens to have.

Web applications are built with attention to the parts that are usually deferred: keyboard navigation, focus behaviour, colour contrast, form validation messages, behaviour when a request fails and behaviour on a narrow screen. These are treated as part of each feature rather than a pass at the end.

Performance is considered in terms of what the user experiences — how quickly the first useful content appears, whether the layout moves while loading, and how the interface behaves when data is slow to arrive.

  • Responsive layouts verified on small screens
  • Keyboard and assistive-technology considerations
  • Explicit handling of loading and error states

03 / Service

Business systems

Internal tools that hold the records a business runs on and the workflows around them.

Business systems are unglamorous and consequential. They govern who may see what, what happens when two people edit the same record, how a correction is made after the fact and whether the history of a change can be reconstructed later.

We give these questions the same weight as the visible features, because an internal system that cannot be audited or corrected creates work rather than removing it.

  • Role-based access enforced on the server
  • Auditable record of changes where it matters
  • Correction paths designed, not improvised

04 / Service

API and systems integration

Interfaces that let separate systems exchange information without a person in the middle.

Integrations fail in ways that are easy to miss: a request times out, a partner returns an unexpected shape, a message is delivered twice, or a nightly job stops running and nobody notices for a week. We design for those cases as the normal condition rather than the exception.

That means idempotent processing where a repeated message must not produce a duplicate effect, retries with sensible limits, validation of incoming data at the boundary, and visible reporting when synchronisation falls behind.

  • Idempotent handling of repeated messages
  • Boundary validation of external payloads
  • Reconciliation and failure reporting

05 / Service

Cloud-oriented solutions

Systems designed to run on managed infrastructure without becoming dependent on any single supplier's peculiarities.

Cloud-oriented work here means applications that are configured through their environment, that keep no important state on the machine they happen to run on, and that can be recreated from source and configuration alone.

Where managed services genuinely reduce operational burden, we use them and record the dependency. Where a managed service would be difficult to leave later, we say so before it is adopted rather than afterwards.

  • Environment-driven configuration, no secrets in source
  • Reproducible builds and deployments
  • Dependencies on managed services recorded openly

06 / Service

Software modernisation

Incremental improvement of systems that still work but have become expensive to change.

Modernisation rarely justifies a rewrite. The usual path is to establish a safety net of tests around current behaviour, isolate the parts that change most often, and replace them one at a time while the system stays in service.

Sequencing is decided by risk and friction: the change that removes the largest daily obstacle, or the largest chance of a serious failure, is done first. Progress is measurable because each step leaves the system in a releasable state.

  • Characterisation tests before behavioural change
  • Replacement in service, without a big-bang cutover
  • Sequenced by risk rather than by convenience

07 / Service

Technical consulting

Independent engineering assessment for decisions that are difficult to reverse.

Consulting engagements are usually short and focused: a review of an existing codebase, an assessment of a proposed architecture, a second opinion on a build-or-buy decision, or a written analysis of why a system behaves the way it does.

The output is a written document setting out what was examined, what was found, what the options are and what the trade-offs of each option would be. Recommendations are stated as recommendations, with the reasoning visible so it can be disagreed with.

  • Written findings with visible reasoning
  • Options presented with their trade-offs
  • No obligation to follow with implementation work

08 / Service

Quality assurance

Verification built into the work rather than performed on it afterwards.

Quality assurance covers automated tests at the levels that suit the system — unit tests for logic, integration tests for boundaries, and end-to-end checks for the few journeys that must never break — together with structured manual review where judgement is required.

We also look at what happens after release: whether failures are logged usefully, whether an error can be traced back to a request, and whether the team would find out about a problem before a user reported it.

  • Test levels chosen to match risk
  • Manual review where judgement is required
  • Post-release logging and error visibility

09 / Service

Maintenance and optimisation

Keeping a delivered system healthy as its data, usage and dependencies change.

Maintenance covers dependency updates, security patches, adjustments as external interfaces change, and the steady removal of small obstacles that accumulate in any system in use.

Optimisation is approached by measurement. A slow page or an expensive query is investigated before it is changed, so that effort is spent where it alters what users experience rather than where it is easiest to apply.

  • Scheduled dependency and security updates
  • Measurement before optimisation
  • Changes prioritised by observed impact

10 / Service

Security-conscious development

Ordinary security practice applied consistently throughout implementation.

Security work here is preventative and routine rather than a separate audit. Authorisation is checked on the server for every request, input is validated and output encoded, credentials are held outside source control, and dependencies are reviewed on introduction and on update.

Where personal data is involved, the amount collected is questioned before the schema is written, retention is defined rather than indefinite, and access is limited to the roles that require it.

  • Server-side authorisation on every request
  • Secrets kept outside the repository
  • Data minimisation and defined retention

Engagement

How a service becomes an engagement.

Any of the services above begins the same way: a written description of the problem, a conversation to establish what is already known, and a written proposal covering scope, sequence and the assumptions the proposal depends on.

Nothing is committed until that document is agreed. If the assessment is that the work is not worth doing, or not worth doing yet, that is said before a proposal is written rather than after.

Enquiries are received by email at jacobholmes1971@gmail.com. Further guidance on what to include is published at dogjonesco.com/contacts.

White light trails converging and separating against a black background, suggesting parallel workstreams
Separate workstreams, one agreed direction