Toby Irvine
Your instinct for safety isn't necessarily correct. Delivering slowly isn't more secure, it's fearful, and if you're afraid of changing a system then the system is not secure
I’ve touched on this in previous articles, but it’s worth dedicating a little time to this misconception as it’s at the root of so many of the problems that organisations have with security and delivery. A common way to think about maintaining security while delivering software systems at pace is this.
Where rapid delivery of changes into production is one end of a scale, being secure is at the other end and, as an organisation, you pick where along the scale you’re comfortable according to your risk appetite. This makes intuitive sense - if your mental model of software delivery is like driving a car and you’re taking more risks with your foot down, going faster. The problem with this mental model is it’s completely wrong.
Building software is one of the most complex human endeavours. It’s not possible to deliver applications at pace unless the software is of high quality. The slowest release cadence projects I’ve ever worked with have all been the lowest quality, worst designs and codebases and I’m sure you have the same experience. These low quality systems simply can’t be changed quickly. They will functionally fall apart if you try and everyone is, quite correctly, far too scared to try. Every change leads to unpredictable failures in an overly-complex system with:
You simply can’t deliver at pace unless you’re paying attention to the non-functionals. Performant, interoperable, reliable, usable, maintainable and secure systems can be changed with confidence. They have:
If this misconception is how your organisation is thinking about security then what it’s really saying is:
And these are all valid, fixable problems. Not an absolute truth about software delivery pace being antagonistic to security. The first step is identifying the real problems, I’ve listed some common ones here and I’m sure you can think of more. The next step - fixing things.
Let’s switch out security for another non-functional requirement that’s very important to your organisation: performance. From my experience working with everyone involved in software delivery it helps to avoid any ingrained ways of thinking. Can you deliver rapid changes to your software systems and maintain a high level of performance, or even improve performance in the process? Of course you can! If you wanted to ensure high performance while evolving your applications at pace you would:
Nothing controversial here - a sensible approach to meeting an important, non-functional engineering requirement. All of it equally applicable to security. Let’s make the obvious substitution:
If you’re a delivery team, doing these things takes control of the security of your systems. If you’re a security team, ensuring your organisation is doing these things scales your knowledge and expertise across the whole business. Nobody, absolutely nobody, has to slow down.
We'd love to hear from you. Let's start your journey to world-class secure software product delivery today!