Data quality is worse than the initial assessment suggested
I run a structured data quality assessment on real samples before scoping begins. On one programme the crude quality variability central to the value case only became visible once we assessed actual assay data, not the data dictionary. That happened in Phase 1.
Change management is under-resourced relative to technical delivery
I budget change at the same order as technical delivery. A 5% change allocation against a full build budget produces a platform that works and an organisation that does not use it. I have seen that pattern in programmes I was called into late.
Most complex integration is deferred to the build phase
I prototype the hardest integration in Phase 2. On one engagement the CI/CD pipeline integration was prototyped before we committed to the operating model design. Failing it at proof of concept would have changed the scope. Failing it at programme would have changed the commercial position.
Hypercare exited on a calendar date rather than evidence
I have declined to exit hypercare when the criteria were not met. The steering committee approves exit, not the project manager, the delivery director, or the client sponsor alone. Three criteria have to hold: no critical incidents open, adoption tracking against plan, operations team running the system in steady state for the agreed period.
Scope changes accepted without commercial impact assessment
I write change control into the commercial agreement from day one. On one programme the client requested additional FinOps work mid-delivery. I scoped it as a new statement of work: £250k in added revenue with no impact to the current timeline. Agile delivery does not mean scope is free.
AI model performance in production differs from testing
On one programme a root cause classification model carried a specific risk: misclassifying a critical deviation as routine could delay mitigation at real operational cost. I tested it on production-representative data in Phase 2 and built confidence-scored output into the UI, so operators saw the model's certainty alongside its recommendation. Drift monitoring was live from go-live.