The basic idea behind Dev and Ops is to get the two roles working together. This sounds obvious, but think for a moment about how the roles have traditionally been implemented. Operations is responsible for uptime and reliability; the simplest way to keep systems up and running is to lock ‘em down and prevent change. The job of a software developer is to create change. From the beginning, the incentives for one role are misaligned with the other. The first part of DevOps, the very inkling of an idea, is to break down the walls between the roles.
Here's an example.
For years, decades even, system administrators have been writing little scripts – bash, perl, awk and sed – to automate repetitive operation and setup. These scripts are code, yet the code the sysadmins write follows none of the practices the programmers have to follow. It likely has no requirements, no formal test process, no deploy process … it might not even be in source code control. With no standards for the work, the code is likely in a different programming language than the production code. It may even do things the programmers would like to reuse, but they don’t know it exists. If the roles were actually working together, instead of at odds, they could share knowledge, practices and even the codebase.