Nothing was broken here. Nothing existed yet. The client was standing up a PMO
ahead of the merger and my team was on the ground floor, building the machinery
that the next five years of integration work would run on.
What the deal did to the work
Terms were renegotiated several times with the FCC, the DOJ and the businesses,
and the whole program sat on hold for months. Until approval, there was a hard
legal limit on what teams could do: design, build and test against synthetic data,
never production data from the other party. Once initiatives had gone as far as
the law allowed, engineers and PMs were reallocated across the wider Product and
Technology org, and the designs sat.
And it was not a scheduled pause. At several points it was genuinely unclear
whether the deal would survive review at all, which is a different job from
running a program with a known end state. You are building something that might never
launch, and several hundred people still have to work on it like it will.
Why a pause is expensive
Months passed and the world moved underneath the designs. A call to an API that
had since been deprecated. A data feed from a vendor team that had been
repurposed. So before anyone restarted, the designs went back through a joint
architecture review board: 52 projects reassessed over three months, high and low
level designs re-checked against what was now true, with more than 150 project
managers, senior managers, directors and architects pulled through it.
Those flaws would have surfaced anyway, in unit testing and BVT, at far higher
cost. An estimated $2M of remediation avoided. These are easy to spot in a design
review and expensive to find in testing.
Sixteen VPs and no authority over any of them
Data. I built the reporting that showed where work was actually stuck and whose
team it was sitting on. Nobody had that view before. Those reports went up to the
CIO, and that is what did the work: once a VP knows the row with their name on it
is read two levels above them, they push each other and nobody has to be chased.
Why deployments kept missing their dates
On-time launch deployments sat around 74%. The causes were not technical. Teams
were miscommunicating, documentation was wrong, and every team tracked milestones
its own way. More than a dozen vendor teams were on the program and none of their
tracking was standardized, so there was no way to see real status without asking
each of them and taking the answer on faith.
That gap is why I learned SQL and built automated reporting in Tableau. With
dozens of teams updating constantly, a near real-time view was the only thing that
would hold: code drop status by release, by parent initiative, and by team and
function, with links through to where the design and development artifacts
actually lived in Jira.
On top of the view I put a standardized process with defined acceptance gates,
each one requiring sign-off from the teams a drop affected, and used the report as
the source of truth teams aligned against. On-time deployments went from 74% to
over 95% in under three months.
Every report, ported to a tool I had never used
Mid-quarter, the client switched licensing from Tableau to Power BI and asked me
to port every report across. I had never used Power BI, and it is different enough
from Tableau in both capability and interface that it was not a translation job. I
learned it on the fly and got the reporting back up.
What I got wrong
I should have standardized intake at the start. By the time I could see that the
existing reporting was insufficient and was itself enabling the misses, more than
a dozen vendor teams had each built their own ad hoc tracking and none of it
talked to anything else. The job stopped being defining a standard and became
meeting each team one at a time and building a translation layer back from
whatever they had already committed to. None of that would have been necessary if
I had set the format before the teams built their own.