DevOps: How To Start
March 18th, 2011
(Stolen from Evan Bottcher )
How to assess the current situation?
I would start by drawing a big visual map of the path from developer check-in to production, including the likely integration of multiple streams of work. Have the teams estimate the time taken in each stage, likely delays etc. This can be quite enlightening when seen from a total value-stream view – as few people will have the whole picture at present.
Categorise time and effort as ‘value-add’ vs ‘non-value-add’. E.g. time in manually testing from scripted scenarios is non-value-add as a computer could do it more quickly. Manual testing for exploratory testing is probably value-add, if it is genuinely finding defects.
Metrics would be build times, deployment time, how long does it take to configure an environment. How many defects are found, how many are true defects, how many are configuration and environment?
How to shape an improvement plan for “last mile”?
Need to prioritise areas of concern from your map of the path to production. Root cause analysis should be done to understand the cause of delays and defects. Spend some time setting a vision for what the best path to production would look like for the customer, and build out a set of steps to implement those changes. E.g. “shift to trunk development”, “train staff in continuous integration”, “automate self-service production-like environment”.
Who is able to do this?
Need to quickly understand the source control, development practices, deployment environment and architecture in sufficient detail to be able to understand how to improve things. If it’s a unix target environment, best to understand something of that environment.
A generalised set of tools/tech/skills:
- automation (e.g. capistrano, ruby, bash, powershell etc.)
- source control, and methods to do trunk development and deployments (feature toggles and branch by abstraction)
- configuration management – chef, puppet, whatever you can apply to windows servers if that’s in scope
- understand the ops perspective – tools for monitoring, logging, plotting system performance and stability over time (nagios, ganglia, cactii in the open source area)



