The dirty little secret about DevOps is that everybody talks about what it means for operations teams, and hardly anybody talks about what it means for software engineers. Which is possibly even more important!
Operations is not really a dedicated role, it is more like a social contract. Your ops org consists of all the skills, habits, tribal knowledge, and cultural values you have built up around delivering software, and every single engineer (and execs, and customer support) participates in this org. Engineering teams tend to struggle when software engineers don't have the operational skills they need to truly own their own services, and don't know how to learn those skills, and may not even understand why they should care.
So: how do you help your software engineers develop their ops muscles? How do you interview and hire for engineers who will enthusiastically co-create a vibrant ops culture? How do you identify and reward the heroes doing the silent, unsung work of paying down technical debt and shipping stable software? We'll talk about how to create the kind of tight feedback loops that help engineers improve their craft, prevent burnout, and encourage a healthy, fun, collaborative culture of operational excellence.
DevOps for Developers
engineer, cofounder, CTO
Why your software engineers need to get better at operations,
and how to do it.
DevOps for Developers:
“Dear operations people, learn to be more
like software engineers.”
Love, DevOps (2009-2016)
“Dear software engineers: your turn.
Time to get better at ops.”
Love, Everyone in Tech
This is not optional,
this is not “nice-to-have”
This is table stakes.
What is operations?
Operations is the constellation of your org’s technical skills, practices,
and cultural values around designing, building and maintaining systems,
shipping software, and solving problems with technology.
Operations is a social contract.
Do you need an “ops team”?
Do you need quality operations engineering skills and culture?
So you have an Ops Org …
1. Support your people in developing new skill sets
2. Express institutional value (and mean it)
Software engineers need to get better at ops.
(And they should WANT TO!! Ops is like a superpower!!!)
Developing new skill sets
Engineers should be on call
for their own services.
* learned helplessness
* fear of breaking things
* strategic incompetence
* “my time is too valuable!”
• Guard your people’s time and sleep
• No hero complexes. No martyrs.
• Don’t over-page. Align engineering pain with customer pain
• Roll up non-urgent alerts for daytime hours
• Your most valuable paging alerts are end-to-end checks on critical
Corollary: on-call must not be hell.
should deploy their own code.
Feedback needs to be fast to be eﬀective
The most powerful weapon in your arsenal
is always cause and eﬀect.
Pair your SWEs with ops/DBA for
“cool! let’s sit down and
ﬁgure this out together,
and I’ll show you how to
do it next time!”
Your eng teams should share the same review
processes, tasks and tools.
Emphasize ops feedback in early design phase.
What are the reliability requirements? How do
we distribute load or degrade gracefully?
Are we reusing components that are already
known & supported as much as possible?
Who supports this service, how is it going to
fail, what are the ripple eﬀects when it does?
What instrumentation and metrics will we need?
The cost and pain of developing software is approximately zero
compared to the operational cost of maintaining it over time.
h/t @mcfunley, “choose boring technology”
Dear fellow ops/DBAs:
Creating Institutional Value
• Performance Reviews
Probe every software engineering candidate
for their ops experience & attitude.
… yep, even FE/mobile devs!
• “Tell me about the last time you caused a production outage.”
• “What are your favorite tools for visibility, instrumentation, and
• “How would you design a deploy process?”
• “You developed service $x, and latency is 5x higher today than
yesterday. How do you start debugging the problem?”
• “What happens when you type “google.com” into a browser?
Good operational questions for SWEs
Good engineers should be able to
communicate in great detail
everything that SUCKS about their
Do they expect the network to be reliable, disks
to be fast, databases to respond, retries to
How do they react to the idea of being on call
for their own services?
Are they overly clever? Ugh.
“Operations is valued here.”
you are signaling …
• Solicit regular feedback from peers, ops, support teams
• Ask questions about relevant operational skills:
• “Who would you most like to be paired with on call? Least?”
• “Who do you ask for help when you’re completely stumped?”
• “Whose code would you be least willing to maintain?”
• Include this feedback every cycle, it should not be a surprise.
Senior software engineers should be reasonably good at these things.
So if they are not, don’t promote them.
Operations engineering is about making systems
maintainable, reliable, and comprehensible.
You need to actively solicit this feedback
by asking different questions.
It is much, much harder to recognize and reward
operational excellence than shipping shiny features.
Your operational priorities must be clearly
communicated by management,
details left up to the engineers/teams.
The patterns you call out and celebrate in your culture
will get repeated.
In conclusion …
Yes, you need an ops team,
IF you have hard operational problems.
You should try to not have hard operational problems.
Needing a dedicated
team is a sign of
• Bootstrapping a world-class ops team:
• Allspaw on blameless post mortems
• Choose boring technology:
• DevOps Weekly: devopsweekly.com
• SRE Weekly: sreweekly.com
with special thanks to: