What DevOps is not
it is not a team or role
It is not about having an internal third party setup where you ask a “DevOps” team for systems administration stuff because your project team does not know how.
What are signs that DevOps is not implemented?
you “handover” a lot of tasks (it’s much more evident if you actually use the word “handover” during task transactions, and NO changing the term to a synonym still won’t hide the fact that you are not practicing DevOps
What DevOps is
it is a discipline, a mindset, a way of working.
It is a paradigm you can use to view how you define workflows/roles/responsibilities within your software development teams
DevOps is about equipping your self-organizing project team with the skills and tools to fulfill their role of delivering value to the customer from product conceptualization, development, deployment, and continuously ensuring that the customer is getting the value all the time.
What about tooling?
Of course there is a baseline of skills/tooling that is required for a team to be able to work the “DevOps” way.
The team needs to have
- mastery on Cloud Service Providers (AWS, GCP, Azure)
- mastery on Linux Operating Systems
- mastery on automation tools e.g. Automation using scripts like bash or python, Configuration Management tools like Ansible, Cloud Resource Provisioning tool like Terraform or Cloudformation
- mastery on Automated Testing, understanding and implementation of linters,unit tests tools, UI test tools, Performance monitoring tools for the application tech stack.
- mastery on Systems Design like Microservices, Autoscaling and Loadbalancing etc.
These skills/tools need not to be on a single person (and it should not).
Having these masteries singled-out to a single person is a sure fire way to achieve a very low BUS FACTOR
What can I do to achieve DevOps within my project team?
- either find people who has the right DevOps mindset or find open-minded people within your team to study the discipline.
- be sure to avoid dogmatic people at this phase, some people pretend they know it but act otherwise.
- this role could be the DevOps evangelist within the team, much like the role of a Scrum Master in a team following the Scrum Framework of Agile Methodology
- the DevOps Evangelist shall then train the other members of the project team to grow their Server Administration skills.
- find people with high mastery on tools/skills listed above or grow multiple people within your team.
The right Mindset is crucial before you slap on the technical skills,
Here’s what a sample Self Organizing Development Team could look like
- Developer (90% programming, 10% systems administration)
- Developer (50% programming, 50% systems administration)
- Developer (30% programming, 70% systems administration)
- Product Designer(s)
- UI|UX Designer(s)
- Quality Assurance (Automated)
- Quality Assurance (Manual, for Exploratory testing)
Notice that there is no “DevOps” role, just a bunch of programmers who know their shit up to production.
Programmers like these won’t be the types that tell you “But It works on my machine!” or “It aint my problem” or just get blocked whenever they see an error in production.
They have higher skills since they know how the application behaves in production and thus, are able to create better applications.
This very popular DevOps skillset roadmap from github (kamranahmedse/developer-roadmap)