Rugged Software Development
Are We Doing Enough?
Many of us can admit that security is often either an oversight or an afterthought when we're writing our software. Raise your hand if you agree. Due to a number of reasons, mainly time and budget, the focus is mostly on coding new features and then getting them deployed as soon as possible. CI/CD pipeline technologies, for those of us who use them, contain a number of tools that help us to identify the vulnerabilities in our code (SAST), in the open source components that we use, (SCA) and in a running app (DAST). We rely heavily on these tools to catch as many potential vulnerable areas in our code as possible but it's not enough!
We need to take additional steps to ensure that our code is going to run as intended, regardless of the conditions it encounters when it is deployed. A big part of this is obviously security but that isn't the only thing. We also have to take into account reliability, survivability and a variety of other factors. The Internet, and networks in general, are dangerous places where we need to be conscious of both malicious actors as well as other unintentional adverse conditions. This is where the concept of "Rugged Software Development" comes into play.
Rugged Software Development?
In a nutshell, "Rugged Software Development" describes software development teams that have a culture of rapidly evolving their ability to create available, survivable, defensible, secure, and resilient software. This is exactly the kind of culture that we need to strive to be here as we continue to develop our software.
It’s a Mindset
There’s been a growing movement among the developer community and it has culminated with the creation of the Rugged Manifesto. The Rugged Manifesto is a set of statements or better yet, a "mindset" that each of us should consider, should be thinking about, should strive to put into practice every day as we are writing our code.
Basically, the Rugged Manifesto states:
These are simple statements, a mindset as described earlier, that we should all be saying to ourselves, thinking about, as we are developing our software.
In Closing
Software is like the air - it is everywhere and almost in everything that we use and interact with. As software developers we have an incredible opportunity to move our businesses – our world – into the future and as such we have an ethical and moral responsibility to ensure that our code is clean, bug free and void of anything that can be exploited from both internal and external malicious sources. It is encouraged that all of us take the above statements and put them into practice – to help encourage and foster a culture that promotes rugged development wherever you write code - for your company, contributing to open source, etc.