The simplest way I can imagine is : « you have to maintain what you developed », or, «you have to make sure that the component you developed runs correctly in from the dev stack to the production stack, and all the intermediate stages » All the other parts are direct consequences: - the engineer as to be aware of the infrastructure components, he has to understand it correctly - pushing/updating updates should not require complex sysadmin skills (ie automation and abstraction of some plumbing is helpful)
This implies smaller dev cycles, smaller updates, easier to deploy. The container (Docker-related) paradigm shift is also very helpful to separate the concerns: once the infrastructure foundations are set (permissions, ...), updating/adding a service should no longer require advanced infrastructure skills.
This is a "from the top of my head" description and I'm pretty confident you'd find better answer on internet, but - from my point of view - the most important point is that mentality shift, where the software engineer is no longer conflicting with the sysadmin team, but rather mixing the skills and collaborating to manage his development in its whole lifecycle (from dev to running in prod, and handling the issues)