From Pipelines to Platforms
A few years ago, I measured progress by whether a pipeline worked. Now I think more about whether the next pipeline will be easier to build, operate, and trust.
That is the shift from pipeline thinking to platform thinking. The unit of value becomes the repeated workflow: ingestion, validation, transformation, documentation, deployment, monitoring, backfill, and retirement.
Good platforms encode lessons. They make the right patterns cheaper than improvisation. They give teams a paved road while still leaving room for unusual cases.
This perspective has made me more patient about infrastructure work. A platform is not just a pile of tools. It is a way to scale engineering judgment.
Encoding the Paved Road
A good paved road is not just documentation that says “please do this.” It is a set of defaults that make the preferred pattern easy. Project templates, deployment checks, standard monitors, dataset registration, and ownership metadata all help turn good practice into normal practice.
The hard part is deciding where the road should be strict. Some interfaces need strong contracts because many teams depend on them. Other workflows need flexibility because the domain is still exploratory. Platform work requires judgment about which risks deserve guardrails and which risks deserve room.
I also learned that platforms need feedback from their users. If teams keep bypassing a tool, the answer may not be more enforcement. The answer may be that the tool does not match the workflow. Internal platform teams need product loops just like external product teams.
The shift from pipelines to platforms is a shift in leverage. A single pipeline solves one problem. A good platform improves the next hundred pipelines by making reliability, privacy, and observability easier to adopt.
Platform Taste
Platform work requires taste because every abstraction has a cost. Build too little and every team reinvents the basics. Build too much and the platform becomes a maze of concepts nobody asked for.
The taste comes from watching repeated work. If multiple teams build similar checks, similar backfill scripts, or similar access patterns, the platform may need to absorb that pattern. If only one team has a special need, a local solution may be better.
I also value platforms that expose escape hatches without making them the default. Real systems have unusual cases. The platform should support them, but it should still make the common reliable path obvious.
This is where experience matters. The more incidents and migrations you see, the better you get at recognizing which patterns deserve to become infrastructure.