SENIOR SOFTWARE ENGINEER
PHPPurposeTo design and build the modular platform that will carry the business capability as we move off a forty-year-old system
working in PHP 8.3 with Slim, Doctrine and PostgreSQL
and to share ownership of it properly across a small team.The stackBackend
PHP 8.3
Slim 4
PHP-DI 7
Doctrine ORM 2 & DBAL 3
PostgreSQL 16
Symfony Console, Cache, YAML
respect/validationFront end
React 18
React Router 6
TanStack Query 5
an internal component library
plain JavaScriptQuality
PHPUnit
PHP_CodeSniffer
Phan
Playwright
gated on every branch in GitHub ActionsInfrastructure
Docker
nginx & PHP-FPM
AWS
GitHub Actions to a container registryApplications are assembled from libraries rather than handed to you by a ready-made framework: routes registered explicitly, dependencies injected through a container, Doctrine used as a data mapper with entities and repositories. A set of internal Composer packages sits underneath
authentication, permissions, queuing, customer lookups and more
and a new module is built on top of these rather than from nothing.Background to the roleWe are a fleet management company, recently been acquired by a blue chip bank. We have a bespoke system to run the company which is also forty years old, and the next few years are about moving off it.The bank are introducing a new leasing platform. Some of what we do will migrate onto it. A great deal will not, and those gaps are what we will be building. The scope is business-wide and extensive: every operational area of the company has capability that will need rebuilding over the coming years.To take one small illustration from one team: the new leasing platform can accept the concept of a penalty charge notice and invoice it to a customer. It cannot, however, take in and scan the physical paperwork, identify who was driving, run the correspondence and appeals, or handle the payment and refunds. This is a gap, and therefore a module we have built ourselves and put live this year
and it is one module, from one department, among many still to come.We already run a growing estate of services in production, each with its own React frontend, all built to a single shared architecture with a set of internal libraries beneath them. The roadmap ahead is measured in years rather than months.The team is small – two developers, two business analysts, a project manager. That is the unusual part of this job: the scope of a large programme with the autonomy of a very small team, and correspondingly real ownership of what gets built.Example problemsThe business areas vary enormously. The engineering shapes repeat, and these are the ones that come up again and again:Long-running business processes
cases that carry a state for weeks, branch on what they turn out to be, wait on other people or external systems, and have to be picked up by whoever is next. We drive these with a configurable workflow engine.Money that has to reconcile
charges, payments, refunds and fees held in a double-entry ledger and balanced against a finance system we do not control.Getting data in
documents and files arriving from outside, including scanned paperwork through OCR, matched against customers, vehicles and people.Integration with systems of record
largely file-based exchange and vendor APIs, where we are constrained to the interfaces someone else publishes.Designing new modules
from high-level business requirements rather than from a specification handed to you. This is the majority of the work ahead.Bringing on one junior developer
, which is a real part of this role and not a line on a job description.Essential experienceDoctrine ORM, or another data-mapper ORM
such as Hibernate or Entity Framework
and able to explain how the unit of work behaves and when a change actually reaches the database. This is the single most important item on this list.Modern PHP 8
, written to SOLID principles, in applications composed from libraries rather than inside one large opinionated frameworkPostgreSQL
schema design, query optimisation, migrationsAutomated testing as routine
, not as a phase
PHPUnit or equivalent
together with static analysis and coding standards enforced in CIGit and pull-request review
as a normal part of the working dayDocker
for local development and deploymentEnough JavaScript and React
to work confidently in the front ends. You do not need to be a React specialist, but roughly a fifth of the work is there and it cannot be avoided.Also valuedSymfony
its conventions transfer here almost directlyWorkflow engines, state machines or long-running case management systemsFinancial systems, ledgers or reconciliation against an external system of recordDocument processing, OCR or data extractionFleet, leasing, or another regulated environmentIf this is you and you want to know more, please send me your CV and we can talk more around the role / company.
TPBN1_UKTJ…
