Sustainability
SUSTAINABILITY
TTM | ROI | Sellability | Agility | Reputation |
Behaving in a manner that is favourable to the continued viability of your business or the environment.
Sustainability is a quality that ensures that the debt incurred from the introduction of change into a value stream remains favourable to a business' ability to remain competitive. Sustainability can be viewed from two perspectives:
- The solutions and practices you employ are sustainable to your business.
- The solutions and practices you employ are environmentally sustainable.
DEFINITION
The word “sustainable” has an abundance of meaning. For instance, dictionary.com issues several different descriptions, including:
No wonder it's so hard to pin down.
- “capable of being supported or upheld, as by having its weight borne from below.
- pertaining to a system that maintains its own viability by using techniques that allow for continual reuse
- able to be maintained or kept going, as an action or process
- able to be confirmed or upheld”
We'll discuss both here.
BUSINESS SUSTAINABILITY
What, in essence, is business sustainability? Fundamentally, we are interested in the obstacles that divert (or will divert) you from your primary focus - solving your business goals. Any process, or practice, that slows (or diverts you) affects your ability to sustain your desired (short and long-term) future state is an obstacle. Behaving sustainably ensures that practices are repeatable, and never become a hindrance to your goals.
A business applying sustainable practices to its value delivery (its output) is always going to be better placed to drive forward with change (at pace), to adapt (as problems arise), and thus, is better protected, than one that neglects it.
TIME DILATION
Businesses that fail to behave sustainably - or don't resolve their sustainability concerns in sufficient time - slow.
“But surely we'd realise this was happening, and tackle it?” Not necessarily. The situation is similar to those Sci-Fi shows describing black holes and time dilation: “Time does stop at the event horizon of a black hole, but only as seen by someone outside the black hole. This is because any physical signal will get infinitely redshifted at the event horizon, thus never reaching the outside observer. Someone falling into a black hole, however, would not see time stop.” [1]
Or, to paraphrase, the fact that time (delivery speed in our case) is slowing is imperceptible to someone falling into a black hole. It's a similar feeling to how time behaves in a business suffering from poor sustainability. Unless you're told (e.g. by an external source), or are provided evidence, you become accustomed to the pace (and manner) at which you operate, and don't necessarily realise your predicament. This is dangerous territory. The pace of change becomes ingrained into the business' culture, becoming a very difficult cultural challenge to solve.
If Sustainability is hard to define, then it's doubly hard to agree upon what affects it. Let's look at a concrete example.
Many established businesses are in a transitory state between on-prem and Cloud-based solutions (a hybrid architecture). Consequently, staff must still focus some of their energy on problems already solved by another party (Table Stakes), including: server provisioning, Operating System upgrades, vulnerability scanning (to ensure the servers remain compliant), patching (sometimes in a hurry), and (physical) networking. Increasingly this practice is becoming unsustainable. It's an obstacle diverting you from your true goals because: (a) it provokes unnecessary work (someone else can do it for you), and (b) the competition may already have concluded this journey.
Some of the concerns that I've encountered around Business Sustainability are:
- (Insufficient) Uniformity.
- Favouring efficiency over effectiveness.
- Technology Sprawl.
- Single Points of Failure.
- The Cycle of Discontent.
- Technical Debt.
- Project Bias.
- Efficiency Bias.
- Insufficient automation.
- Financially unsustainable.
INSUFFICIENT UNIFORMITY
Divergences in processes, technologies, and techniques can indeed be useful tools to enhance efficiency. However, they also create complexity and scaling challenges. Uniformity may not always be the most attractive proposition, but it's often sufficient for the task at hand, and better protects a business from (a) a lack of consistency, and (b) unnecessary specialisms that create Single-Points-of-Failure. See the section on Uniformity.
FAVOURING EFFICIENCY OVER EFFECTIVENESS
The words “efficient” and “effective” do not mean the same thing. Efficiency relates to Productivity - e.g. how efficiently you can make a change. Effectiveness relates to how effective your work is at influencing and engaging your customers and business.
Being ineffective means we're not solving real business problems (even if we do them well!), thus we are not behaving sustainably. See Effective Over Efficient.
TECHNOLOGY SPRAWL
There are many ways to solve a problem with technology. Introducing new technologies, platforms, and tooling carries risk if its uptake remains low. It complexifies the Value Stream, and leaves us unable to easily divert staff onto that branch.
Consider the practice of Technology per Microservice that seems to be widely promoted. It promotes diversity (great), but it is often overapplied (to the point of the ridiculous), favouring the advancement of unit-level efficiency over long-term sustainability (Unit-Level Productivity v Business-Level Scale). This leads to Technology Sprawl, and Sustainability challenges.
SINGLE-POINTS-OF-FAILURE
The human element of Sustainability is very important. The most common challenges being specialisms and Single-Points-of-Failure.
Specialisms are good, but only to a point. They can enable incredible productivity benefits, but sometimes to the detriment of business scaling and Agility - i.e. (poorer) Sustainability.
Shared Context is another related topic. The loss of information before it can be shared with others reduces our ability to support change, again impacting Sustainability.
TECHNICAL DEBT
Much has been written about Technical Debt. It's a debt that's embedded into our Value Stream (e.g. a poor design, or security posture) that (may eventually) lead to Sustainability issues.
THE CYCLE OF DISCONTENT
Constant reaction also eats away at your Sustainability. See below.The Cycle of Discontent (above) shows what happens to Sustainability when most of your decisions are reactionary. The cycle has four phases:
- Constant Reaction. The business is never fully prepared for the incoming work, making it very reactionary [2].
- Constraining Force. Due to the reactionary nature, there is rarely sufficient time, or resource, to fully analyse, understand, and contextualise the problem, and thus, to identify the correct solution.
- Debt Accrual. Debts are incurred that are never resolved, causing unnecessary, and overly-complex work, often without people attributing a cause.
- Slower & Slower Deliveries. Each change has greater risk, is more complex, and/or has a greater Blast Radius. Thus, tasks become harder, and take longer.
What's occurring is a continuous (vicious) cycle, where the constant need to react causes rushed decisions and constrains our optionality (possible solutions), leading to an increase in debts, slower deliveries, and consequently poorer Sustainability.
PROJECT BIAS
The “cult of the project” often promotes short-term, project-oriented thinking and delivery, over longer-term Sustainability. There's a bias heavily in favour of finishing the project, but less so towards Sustainability. See Project Bias.
EFFICIENCY BIAS
I've already related a story (here) about a parochial focus on efficiency. This is a prime example of an Efficiency Bias (Unit-Level Efficiency Bias), at the expense of Agility and Sustainability. It's an easy trap to fall into. Highly efficient surely means good, without any downsides? No, I'm afraid not.
The moral of the story is that good can (and should) be viewed through many lenses. In this case, isolated development results in less communication and collaboration, which is (generally) not a good thing, as it leads to Single-Points-of-Failure, a loss of Shared Context, and makes supportability much harder. And if the pace of development increases, but the verification stage takes longer (the testers have more work, so there's more WIP), then that also suggests greater potential for rework. None of this screams sustainability.
Also see: Unit-Level Productivity v Business-Level Scale.
INSUFFICIENT AUTOMATION
Neglecting automation in this age is likely to cause friction in business settings. For instance, whilst it's generally held that adding automated tests (e.g. Unit Tests) early on may slow the initial release, it's unsustainable, and lacks predictability.
FINANCIALLY SUSTAINABLE
Not all solutions are financially sustainable. Take - for instance - software licensing costs. They may seem reasonable when the workload is average, but prohibitive when the workload must be significantly scaled. It's one to be wary of.
ENVIRONMENTAL SUSTAINABILITY
Rewind two decades and you'd be hard pressed to find businesses reporting on their (environmental) sustainability targets, let alone investing millions of dollars into carbon neutral policies. Today, you'll find a sustainability section in most large corporations' websites and investor relations packs.
Being sustainable isn't just good for the environment and our future though. It's also starting to make more and more business sense, as: (a) financial incentives are offered, (b) retaining competitive advantage (the influencing power of your competitors - i.e. if everyone else is doing it, surely you can't get left behind?), (c) efficiency, equating to cost savings, (d) customer expectations (new custom may expect it; it's increasingly being included in RFIs etc), (e) it's attractive to new talent, and (f) investors are asking these very questions.
The main considerations from a technology perspective are:
- Data centers, and their resource consumption.
- Transactional processing.
- Transportation.
- Data storage.
- Product lifetime.
- Useability.
- Communication channels.
DATA CENTERS & RESOURCE CONSUMPTION
Our software needs a secure and reliable place for it to run. Typically, this is a data center, which may be situated in a business' premises, or (more commonly) out-with.
Data centers are stuffed full of technology, including hardware (e.g. compute, storage, reliability infrastructure), networking (e.g. routers and switches), and the numerous layers of software that our applications run on. All of it needs power (and water for cooling), making them an obvious sustainability target.
A few things can be done in this space. Firstly, we can look at efficiency (of the resources) in the data center. Are they as efficient as they could be? Do they need to be replaced with newer, more efficient, solutions? I'll discuss some of these factors shortly. Secondly, since there's no getting around it (data centers require resources), we should look at the energy supply. Does it come from a renewable energy supply? Does the water - used to cool the servers - come from a sustainable source?
RENEWABLE ENERGY & UNDERWATER DATA CENTERS?
Sustainability is at the heart of most of the big cloud players. For instance, Amazon plans to be using 100% renewable energy by 2025 [3]. As does Microsoft [4].
In 2018 Microsoft (and partners) dropped a shipping-container-sized data center into the sea off the coast of Scotland, to confirm some of its ideas around reliability, performance, efficiency, and sustainability [5].
It's interesting from many perspectives. Firstly, the deployment of the data center to a cooler, subsea temperature, allowed for a more energy efficient data center design. Secondly, the data center was powered (it seems) exclusively using renewable energy. And finally, when raised in 2020, they found only an eighth of the number of faults typically seen in land-based data centers. This all promotes Sustainability.
PROCESSING EFFICIENCY
The efficiency with which our hardware and software runs is also food-for-thought. The more efficient our software is able to be, the fewer the resources (energy, water) it uses, and thus, the greater our Sustainability.
Processing efficiency may be affected by:
- Hardware efficiency. Is the hardware our software runs upon efficient?
- Virtualisation techniques. Techniques like virtualisation (and containers) were introduced - in part - to solve the problem of (financial) Waste, but being able to more effectively use hardware also reduces our infrastructure estate, and thus reduces our carbon footprint.
- Language selection. The choice of programming language has ramifications in terms of efficiency, memory usage etc.
- The runtime platform, and service selection. For instance, some services are “always on” (e.g. IaaS, PaaS, CaaS), whilst others are more Just-in-Time (JIT) (Serverless), and may have a greater impact.
- Configuration, and Right-Sizing. How we select and configure our solutions can also play a part. It's possible to over-provision a Serverless function, just as it's possible to overprovision an IaaS instance (e.g. a t3.xlarge when you only need a t3.micro). It requires analysis, good judgement, and discipline.
- System interactions; e.g. how (and how often) does one system interact with another system to achieve something? Is it many small-grained calls, or one coarse-grained aggregate call? I've also witnessed applications that regularly refresh their data from the database after each step in a business transaction, creating significant performance, efficiency, and sustainability burdens.
- Smart server capacity management. In the old days we often found that hardware was over-provisioned for the load, resulting in us only using a fraction of their potential. This was poor both for CapEx, but also for Sustainability.
PRODUCT LIFETIME
Businesses that run their own infrastructure also need to consider its lifetime, whereas Cloud vendors handle this for us. Technology advances at a fast pace; hardware can quickly become inefficient in the matter of only a few years, raising the question of sustainability. And once it's marked for disposal, how do you dispose of it safely and sustainably?
Software that was once efficient becomes bloated over time (as new features are attached to it, and code branches are no longer navigated), requiring attention to keep it clean, make it efficient, and to support Sustainability.
BALANCING RETURN & SUSTAINABILITY
A balance must be struck between making a sufficient return on investment (ROI), and replacing / updating our hardware and software to meet efficiency and Sustainability needs.
TRANSPORTATION
The carbon footprint cost of the Just-in-Time (JIT) distribution of physical items (over air, rail, road, or sea) is a well-known concern. In software terms, we transport digital items over the network (internet). That network(s) needs to be powered, and that requires energy.
STORAGE
Many of the software solutions we use require some form of storage capability, including: data lakes and warehouses, databases, file servers, executables (in various guises), binary and source code storage, CI/CD outputs, log files, project management tools (e.g. Agile ticketing), documentation, and email communications. They all carry a carbon footprint.
Storage though also bleeds into the sharing of information and application integration strategies. The two common information sharing models are:
- System A requests data from System B and holds the data transiently (i.e. discards it after use).
- System A requests (or is supplied with) a copy of data from System B, and then uses that data for its own purposes. I've seen a chain of producers/consumers, all duplicating data sets to consume it elsewhere.
Option A minimises data duplication, but has some resilience ramifications. Option B can protect a system from redundancy issues, but (by duplicating the dataset), increasing the overall carbon footprint.
Bloated codebases not only carry complexity challenges, they also inflate storage needs. So too can dependencies. The preferred deployment model for modern software tends to promote explicit declaration, and decoupling; i.e. independence (Twelve Factor Applications). Whilst this practice is sensible (it protects us from unanticipated change), it also leads us to repeatedly duplicate - and bundle - the same package binaries alongside the application. Worse still, it's quite common for these referenced dependencies to not be used, consuming valuable storage space for no benefit.
The manner in which we communicate with one another also comes in for criticism. Email - still a major form of digital communication - has a surprisingly large carbon footprint.
EMAIL FOOTPRINT
“Sending 65 emails is roughly equivalent to driving 1km in a car. In a year, an average person in the developed world adds 136kg of CO2 to their carbon footprint from the emails they send and receive. This is equivalent to an extra 320km driven in a car. Globally, the world's email usage generates as much CO2 as having an extra seven million cars on the roads.” [6]
The moral of the story? Don't store unneeded data, nor store data for longer than it's needed.
USEABILITY
It may not be immediately obvious, but Useability is another factor. User journeys that are laboured and unintuitive waste CPU (and memory) cycles on unnecessary activities that could have been shortened and made more environmentally sustainable.
COMMUNICATIONS
Like it or not, video communication has become embedded into the personal and business lives of many since the pandemic. It's an important form of communication in a world that's increasingly used to remote working policies.
I hadn't considered it until quite recently - when I stumbled upon a colleague's “sustainability profile picture” - but it seems that video content (particularly HD video) has a significant carbon footprint that shouldn't be underestimated [7].
PILLARS AFFECTED
TTM
Sustainable practices help a business to remain fast, nimble, and competitive. A business in this position has stayed on top of waste, and thus is better able to drive change forward.
AGILITY
Businesses that fail to solve their internal Sustainability issues tend to be slower, making them less adaptable to change and market pressures.
SELLABILITY
Increasingly, customers are requesting vendors and partners to publish their carbon footprint and environmental sustainability practices. They also expect the fast, reliable, repeatable delivery of value. Businesses that fail to tackle these challenges may be putting themselves at a disadvantage.
REPUTATION
Both flavours of Sustainability may affect Reputation. From the internal (business practices) perspective, our ability to deliver in a sustainable fashion (i.e. repeatedly, reliably) is important both to ourselves, and to our customers. Poor business sustainability typically leads to: Technical Debt, an increase in (Value Stream) complexity, and the slowing of the business (as I showed in the Cycle of Discontent). None of this supports our Reputation.
Environmental Sustainability on the other hand may affect Reputation in the following ways: investor relations (e.g. will investors invest in our business if it doesn't meet sustainability expectations?), customer engagement (e.g. “prove to me that your business is using environmentally sustainable practices”), and staff hires (staff want to be part of something that is seen to be doing good, making environmental sustainability a good candidate).
SUMMARY
I've chosen here to view Sustainability through two different lenses:
- The (internal) business practices that affect the flow of value to customers.
- The practices the business employs that impact the environment.
Businesses that fail in the first may suffer from TTM and Agility challenges. They have failed to sufficiently resolve their debts - incurred as part of ongoing workstreams - and must now work with increased complexity and slower processes. Businesses that fail in the second are facing into the wind, and may decrease their sales potential, investment opportunities, and talent acquisition. This is bad for competitiveness.
Sustainability isn't easy to achieve. Businesses (and employees) have many pressing demands placed upon them, be it financial, time, political, cultural, or bias, making it (too) easy to sacrifice Sustainability when the stakes are down. For instance, Project Bias incentivises people to finish a project on time and on budget, but it doesn't necessarily consider long-term sustainability.
A note of caution. Of course Environmental Sustainability is important, but it must be done sensibly. There's little point in building an environmentally sustainable solution if you can't sensibly maintain or manage it.
FURTHER CONSIDERATIONS
- [1] - https://profoundphysics.com/why-time-slows-down-near-a-black-hole/
- [2] - Being reactive isn't necessarily bad, in fact it can be very good. However, the constant need to react isn't a good sign.
- [3] - Renewable Energy - Amazon Sustainability (https://sustainability.aboutamazon.com/environment/renewable-energy?energyType=true)
- [4] - https://azure.microsoft.com/en-us/global-infrastructure/sustainability/#environmental-impact
- [5] - Undersea Data Centers - https://news.microsoft.com/innovation-stories/project-natick-underwater-datacenter/, https://www.microsoft.com/en-us/research/podcast/putting-the-cloud-under-the-sea-with-ben-cutler/
- [6] - The thought experiment: What is the carbon footprint of an email? https://www.sciencefocus.com/planet-earth/the-thought-experiment-what-is-the-carbon-footprint-of-an-email/
- [7] - Virtual Meetings - https://news.mit.edu/2021/how-to-reduce-environmental-impact-next-virtual-meeting-0304
- Blast Radius
- CapEx v OpEx
- Cycle of Discontent
- (the) Cloud
- Effective Over Efficient
- Just-in-Time (JIT)
- PaaS
- Project Bias
- Serverless
- Shared Context
- Single-Points-of-Failure
- Table Stakes
- Technical Debt
- Technology per Microservice
- Twelve Factor Applications
- Unit-Level Efficiency Bias
- Unit-Level Productivity v Business-Level Scale
- Unit Testing
- Value Stream
- Work-in-Progress (WIP)