DevOps Tools Aren’t Enough to Transform Your Process
As software practitioners, we all love tools that make us more efficient and we’ve already optimized our development environments with keyboard shortcuts, window managers, shell enhancements, and IDE plugins. Even after all these DevOps tools have shaved milliseconds off our daily workload, it’s still possible to find time to learn new configuration management tools, participate in DevOps training, and otherwise contribute to a better agile development process that actually improves team velocity.
DevOps Transformation Is a Game of Inches
In a recent joint research project conducted by Smith’s Point Analytics and Perfecto - which included over 470 developers in mid-size to large enterprises - it was shown that, on average, most developers spend around 50% of their time designing and writing code.
While that number may be shocking for hard-nosed managers to see on a spreadsheet, those who know the daily (or weekly) life of a developer also know how diverse the other activities are that surround the process of cutting quality code. Reproducing issues, running tests, fixing bugs, and managing environments all play a hand in whittling down the other half of our weekly commit to feature work.
However, the same data also showed that developers who were able to spend half the time on administrative overhead activities were able to parlay 2-3 hours per week into other more useful work like writing more acceptance and performance criteria … and, not surprisingly, automated tests.
Which DevOps Activities Drain Time From Feature Work?
Developers live in an ecosystem of tools and integrations between systems that can either accelerate or inhibit velocity. Managers should keep a keen eye open for anything that causes developers to spin their wheels; waiting for standups to hear that the testing lab is down or that tests aren’t getting written over work marked as ‘done’ the day before is too late.
Now if there’s something less sexy than writing tests, it’s having to waste precious moments on administrative tasks such as:
- Sifting through email threads for the background on a critical defect
- Collecting and correlating various service logs to reconstruct production issues
- Submitting approvals for IT to spin up new infrastructure and environments
- Following workarounds for dysfunctional SCM, CI, and issue tracking integrations
- Re-running failed test jobs to verify if patches work well
“One of the biggest barriers to efficient software development isn’t one thing at all; it’s a lot of little things that add up”, said Raphael Morozov, SVP of Engineering at My Eye Media, in a conversation I had with him in April. “Overestimating workloads due to stakeholder promises, untestable code leading to quality gaps, lack of tools tied in to source code management and issue tracking…all disrupt delivery agreements.”
The point here is that although we’ve already optimized our own DevOps practices, developer efficiency isn’t just about tools. A wider view of how we spend our time incorporates key bottlenecks on information necessary to do the job. When we resolve these inefficiencies and add the moments up, we now have a path to carving out a few hours of each developer’s time each week to improve our process, strategy, or culture.
What Can You Do to Reclaim 2-3 Hours Each Week?
Start by identifying repetitive tasks that don’t contribute value to your customer. If you can’t see how an activity drives meaningful work to your team or organization, talk about this with your team.
A classic example of time-waste is correlating log files. Many teams use solutions like Splunk and Elasticsearch to aggregate data and query it across various correlation points. An ancillary benefit to these approaches is that visualizing correlated data helps you find patterns that drive to root-cause faster. Perfecto’s DigitalZoom reporting provides a similar view over the quality of builds and status of scaled testing across teams and projects. As these examples use shared information to accelerate each contributor, the time-saving benefits also multiply across the whole team.
Secondly, the more automated your software pipeline becomes, the more critical it is to be able to provision reliable resources programmatically. Unlike on-prem hardware, cloud-based solutions offer a scalable alternative to managing servers and testing labs on site. Instant access to these resources for debugging, troubleshooting, and thorough validation reduce delays in the development process. The easier it is to spin up, test, and confirm the correctness of code changes, the more you can expect developers to build quality into their code with the same amount of time as they’ve always had.
Thirdly, free moments are only really useful when you can regroup them together into a chunk of time for honest work. Many teams already choose to optimize their team’s time for heads-down work by conducting a morning stand-up meeting then scheduling other meetings later in the day. This leaves the bulk of the morning and early afternoon for feature work and critical bug fixes with minimal context switching to really focus their individual contributions. For web and mobile front-end teams, knowing which platforms are the most important to focus your efforts on saves development time. Perfecto provides this information for free in Factors Magazine, updated quarterly.
Finally, developers that have the right information and technology to reproduce issues - whether in production or found by pre-release testing - have every reason to fix bugs quickly and move onto more interesting work. A common anti-pattern in development is to close out work because it can’t be reproduced. If you see this in your defects backlog, it’s a sure sign there’s efficiency to be reclaimed and a customer complaint to back up the need to improve your situation.
What Can 2-3 Hours Each Week Do For Your DevOps Team?
When asked how to overcome these inefficiencies, Morozov continues, “When both the team and stakeholders agree to the same goal…when they own the product and the process…it creates little room for unproductive patterns like orthodoxy and micromanaging, and instead increases morale and empowers developers to solve problems efficiently.”
How about that exploratory hackathon idea your architect suggested last month? Want to pull a spike-and-stabilize session on some innovative new area of your product? How about just treat your team to some ice cream and do a few impromptu lightning talks to facilitate team learning?
It’s up to you what you prioritize and how you use your moments, but they are there waiting for you to pull them together and use them for something worthwhile.
What would you do with this time? Leave a comment or suggestion below and become part of the conversation. We’d love to hear what you think!