Cue 04, 2024 to 2026
Leading Reportal & CUED
In January 2024 the Product Owner role became an Engineering Manager role, and I took on the Reportal & CUED engineering team: six people across back end and front end, running the platform for broadcasters and production companies.
- Role
- Engineering Manager, Reporting, 6 people
- Stage
- Report
- Stack
- Python, Angular, Kubernetes, AWS, Argo CD, Jenkins, Ruff, pytest, Cypress, Sentry
Taking over the team
When the team reorganised, the Product Owner and tech lead pair became an Engineering Manager and tech lead pair. I kept the product knowledge from the previous two years and took on the people and the delivery: six people across the back end and front end, a support desk, and a platform with one setup per customer. Some of what follows started in my last year as Product Owner, and became how the team worked once I was its manager.
Sprints, retros and support
- Two-week sprints. Backlog grooming, estimation and prioritisation with the Product Manager each had a fixed slot, so everyone knew when decisions were made.
- Retros every couple of weeks. Engineering, Operations and QA took part, and several of our working rules came out of them. I wrote about them in Engineering, Ops and Business on the same side.
- Support. I handled the support desk myself, 345 requests in all, so engineers could stay on sprint work.
Code standards and a tech debt vote
We agreed a short set of standards and applied them to every repository: Ruff for linting, pytest with a coverage target of 90%, nothing merged to main without a pull request, an approval and a passing build, and Cypress tests for the user flows.
To decide which tech debt to tackle first, I ran a team vote: everyone scored ten topics on urgency and importance. Continuous deployment for every repository and consistent linting came out on top, and became the plan, tracked repository by repository.
A cloud inventory
In January 2023, while I was still Product Owner, I started a spreadsheet of everything the department ran in the cloud: 107 Kubernetes namespaces, 97 MongoDB databases, 41 S3 buckets and around 50 Lambda functions. Each line got an owning team and a yes or no on whether it was still needed. I kept it up to date until May 2025, and several old databases were removed along the way.
Postmortems
Every outage got a written, blameless postmortem, and I followed up until the actions were done.
Some of the hardest weeks came from unclear priorities, with requests arriving through too many channels. Since then I agree priorities with stakeholders, through one line of communication, before sprint planning.
Keeping the platform current
- Moved every service to current versions of its core libraries.
- Standardised and reorganised the code repositories.
- Switched off the old first-version messaging.
- Set up shared Angular components for Reportal and BMAT's broadcast monitoring app.
- Continued unifying the per-customer services, so new customers could be set up faster.
Writing it down
Over these years I wrote most of the team's documentation: what each of the platform's core services does, every customer's setup and rules, the report and cue sheet formats, runbooks for common support tasks, and the sprint workflow.