Production hates you. Learn to embrace the hate and thrive
The entire production process hates you, from the machines and the networks to the very users you’re trying to help. We talked to JAX London speaker Russ Miles about why production hates you, and how you can turn this pain into an advantage.
JAXenter: Why is production such hostile battleground? How can we solve that?
Russ Miles: Production is naturally a hostile place as it is where our software products come under the greatest stresses. Not only is it where our software meets the stresses of actual users, it is where there is a constant stress between the need to innovate and change (often the entire remit of the development teams’ output) and the need for reliability (typically a concern of Operations, but of course this is now part of the team role in DevOps as well).
In some respects, I’d say that it has always been this hostile, but that we’ve been lucky enough in software development to be able to ignore it. When I say lucky, I, of course, mean that we’ve been allowed to ignore it and that’s not a good thing. Making the hostilities of production individually and collectively felt by everyone is a key stressor that can be used to improve the software we build and ship.
JAXenter: Pain is sometimes a learning tool (mostly so we learn to not do that again). You’re suggesting we embrace and thrive on it. What do you mean?
Russ Miles: Excellent question! Let me answer it this way. What is learning but a necessary reaction to a particular stressful situation or circumstance? Making the pain of stresses unignorable means that we actually do learn and improve, otherwise, there can be a tendency to imagine that these painful circumstances (such as production dying, or change happening rapidly) are one-off events. What we do with this approach is we capture the stresses that require the most amenable learnings for the system, then we make those stresses happen so they are unignorable and so the learning actually happens.
Stressors on software development systems are a worthwhile thing to capture, discuss and perhaps increase or decrease of some observable benefits.
It should also be stressed (pun intended) that not all stresses are often seen as specifically about pain. For example, the wild success of your software service means you need to deal with the stress of many more users being involved in the stress in production. The key thing is to just consider what stresses you and your software development system (including people, tools, processes, practices, environments … the whole system) should and could be caused to encourage beneficial reactions. The stresses are framed by the objectives and the learnings that are useful within those objectives, and everything needs to be subjected to measurable outcomes or you’re just hurting systems for no tangible good effect.
JAXenter: Taking a tech-book approach to solving problems is virtually impossible in the real world so how can you overcome the constraints and make it work?
Russ Miles: I personally think that tech books are all about hypothesis for experiments that can be attempted in real-world contexts. Similarly with talks and courses actually. There is never any one specific “way” to do things that will always succeed, but there are always hypothesis, examples and discussions to be had around what “might” work in your own unique context.
The point of a technical book is to accurately explain and promote, as simply and clearly as possible, those hypotheses for consideration by the reader, and then provide instructions on how to perform the experiment as safely as possible in their own specific context. This is what Antifragile Software is doing, there are some underpinning axioms that can be agreed or rejected and then there is the concept of stressors and how those stressors can be reacted to in various ways.
JAXenter: How important is it to have a healthy work-life balance? How can we achieve it?
Russ Miles: Wow, if I had the answer to this one I’d probably be as rich as Tony Robbins. My own personal rules are to try to make as much as possible of what I do as fun as possible. I love writing, both prose and code, and so as much of that in my day as possible is a good place to start. In terms of this being a healthy work-life balance, writing is not where it’s at! So I balance this out with enough activities elsewhere (I’m a voracious reader but that doesn’t exactly help), such as riding my Harley and heading to the gym. Don’t get me wrong, I don’t get this right very often but I try as much as possible. I’m also a big fan of mindfulness as a way of dealing with the natural anxieties that come with a creative job such as software development.
JAXenter: What can attendees get out of your talk?
Russ Miles: I hope they take away the idea that stressors on software development systems are a worthwhile thing to capture, discuss and perhaps increase or decrease of some observable benefits. That’s the essence of the Antifragile Software Development approach that I advocate, and hopefully, the attendees will find some of my examples are relatable enough for them to consider augmenting their own approaches with these new ideas.
Russ Miles will be delivering a talk at JAX London tomorrow that will go into more detail with these ideas, explaining how to embrace the stress and pain to make better systems.
I want to live outside, live outside all of this