@fibric highlighted the main points. I would just put the spotlight on the most important -from my own point of view - points (already in his list):
- Automate all the things. Knowing both all the code from all the repos in all the languages is complex. Knowing the full infrastructure is also hard and complex. The more complexity you had, the more likely a human error can occur. Automation improves your reliability and let your team builds, test and deploy fast and often.
A dev should not fear the infrastructure part. This knowledge should be made easier for him to grasp, so that a dev can understand and manage how his code run in any stack you use.
- Test and monitor all the things. Because of the complexity, you are not able to test everything. Code can have bugs. Infrastructure can broke. You want to know it the earlier you can.
- First of all, it's a mindset. This is - in my mind - the most important point. Devops is enabled by the tools, but it's a culture! I don't know yet what could be the best way to foster this culture. Some engineers love it and embrace it naturally. Some don't want to hear about it. I'm yet to discover a magic way to make the devops culture easier to be adopted.