JAX London Blog

JAX London Blog

JAX London, 09-12 October 2017
The Conference for JAVA & Software Innovation

Aug 28, 2017

Source: Shutterstock

Production hates you. The machines, the networks, the very users you hope to provide a service hate you. This is reality, and it makes production a hostile battle ground. In this interview, Russ Miles will talk about the reasons and how to turn this pain to your advantages.

JAX London: Why is production such hostile battle ground? 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’s 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.

Making the pain of stresses unignorable means that we actually do learn and improve.

 

JAX London: Pain is sometimes a learning tool (mostly so we learn to not do that again). You’re suggesting we embrace and thrive on it. Could you explain a little more about this?

Russ MilesExcellent 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.

It should also be stressed (pun intended) that not all stresses are often seen as specifically about pain. For example 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.

JAX London: 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 MilesI 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 hypothesis 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 concepts of stressors and how those stressors can be reacted to in various ways.

Production is naturally a hostile place as it is where our software products come under the greatest stresses.

 

JAX London: How important is it to have a healthy work-life balance? How can we achieve it? (tips & tricks)

Russ MilesWow, 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.

 

JAX London: 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.

 

Behind the Tracks

Software Architecture & Design
Software innovation & more
Microservices
Architecture structure & more
Agile & Communication
Methodologies & more
DevOps & Continuous Delivery
Delivery Pipelines, Testing & more
Big Data & Machine Learning
Saving, processing & more