Imagine what happened if the production system updated the moment you typed a letter on the keyboard. Sounds insane but this is exactly what might happen if we are not careful about where we reduce friction and where we add it.
Software development is notorious for friction: “if only we could do this faster”. Well, now we (sort of) can with LLMs — they genuinely reduce friction and barrier to entry. But everything has a price, and so does reduction of friction.
In automotive gearboxes there is a part called friction plate which is used to connect engine to wheels through gearbox. The system stops working when there is not friction. On the other side, these plates are used instead of gears in order to make the coupling not as rigid.
In essence, these plates are carefully designed to provide just the right amount of friction, and a way for the driver to control it.
In software systems–either with API design or especially with a CI/CD pipeline–the right amount of friction is often necessary. Make the deployment frictionless and you risk dropping important production functionality, too much — nobody is going to bother with jt.
I would argue this is why it is often better to create a short enough deployment manual with instructions yii have to follow, instead of creating a workflow that updates you application on every commit.