A Developer Mindset!
I believe that DevOps empowers your entire software development lifecycle. I like to call DevOps the last mile of agilebecause agile is necessary to have a good DevOps culture. DevOps provides the high quality, scalable, repeatable process that allows teams to deliver completed software when the team needs it.
I like to think that DevOps is another skillset to have on your development team, using a the scrum meaning of "development team". DevOps experts understand Operations concerns like networking, infrastructure, and security. Development teams strive to solve these non functional issues in an automated, repeatable way. A developer mindset helps achieve those goals. Here are 5 steps I have found helpful in bringing a developer mindset to the DevOps skillset.
Solve Problems with Code not always configuration
Many DevOps processes are more about configuration management, done via User Interfaces. Instead, use tooling that can utilize code to drive the changes. For instance, when setting up servers, use a tools like Chef, Puppet, or PowerShell DSC. These all require source code to describe the setup of the servers. If your tool only has a gui, think about how you can hook code into the tool api to accomplish what you want, measuring the benefits of this approach.
Automate All Redundant tasks
Identify tasks that you do multiple times, then start automating these tasks in a repeatable way. Sure you can still utilize your coding and engineering standards, to accomplish this but just do it. For instance, when you ask for approval from a group of people (an advisory board that approves changes for instance) before moving to production, find a way to get those approvals automatically via some type of work flow. Ideally imbed this in your Continuous deployment.
Professionals Test First
Following good software engineering principles, write your tests first and code to them. For your workflow, write a test using automation with a unit testing framework of your choice. Use your code to validate those tests. No matter what language you use, find a testing framework to help standardize the unit tests you write. We use coding katas to help hone our skills as test first developers.
Find other tests to help validate your code. Even in your pipelines, validate your automation code before testing and deploying your application code.
Store your Source Code in a Repository
Do not just use something like Git. Follow the branching strategy your organization uses (if you are confident in your branching fu, create a better strategy!). Use your organizational standards in branching policies. Use (gasp!) continuous integration to validate your ops code.
Look for patterns among the different tasks in the ops tasks, -- for instance CI/CD patterns can be used per team. Strive for canary deployments if your organization can handle them. Look for patterns in other spaces. For instance security. Look for patterns beyond the scans you can automate in the pipelines. Look for security patterns that are important to your organzation for the best ways to automate those tasks.
An example of the security patterns would be automating part of the ISO certification of your pipelines. Determine coding standards, automation that can be used, and tooling for security that is acceptable. This helps teams put security into their pipelines at the beginning of the build cycle, getting you to earlier feedback loops. Set that up as a recommended pattern in your organization.
Use these steps as a beginning to building DevOps skills in your teams. Keep up on trends, and always look to automate your processes! Happy coding!