Our core claim at bmc::labs is that we offer: solid engineering. sustainable code. Sustainability is a big topic right now - as it should be - but what does “sustainable” mean in this context? This article answers that question.
Sustainability is a popular word right now, and it is mostly used in an environmental context as humanity faces the challenge of climate change. We believe that is great - about time, actually. But we also believe there is more to sustainability, yet it all feeds back into the same philosophy.
A thing, organisation or process can be sustainable in three ways:
- environmentally, meaning its creation, operation or execution either has a negligible environmental impact (very, very rare) or it evens out over time
- economically, meaning that it generates profit through sales or services provided while creating value for all parties involved
- technologically, meaning that the complexity of its implementation does not outstrip the maintenance effort it requires
You may have noticed that these three compete or overlap to some degree. That’s true, but you’ll hopefully also appreciate there is a difference between focussing on balancing environmental impact even if it helps profit (e.g. through positive messaging) and solely optimizing for profit, as you probably appreciate that while the term “technical debt” is not only, but chiefly a technical term.
To us, the overarching theme is that we want to counteract what we perceive to be a pervasive culture of throwing away stuff, and we want to help our customers in doing that too. We believe that the time of doing things “quick-quick” is over… There is very little left to invent that will shake society to its core, yet what we do have is often either horrendously designed or dominated by making a lot of money fast™.
Neither works for us particularly well, mindset-wise. We are engineering nerds on every front and we hate throw-away anything. We like function driven, bulletproof engineering. It’s an unpretentious and sober approach, focused on delivering solutions which are minimalistic, but what they do, they do well.
There’s a trend for that, too. Sites such as ifixit.com - amazing, by the way - have been showing people how to repair their electronics for years. How much better would all our stuff be if it was designed not with inevitable obsolescence but instead with longevity and serviceability in mind? is the question being asked here, and it’s not a new question, but definitely one we believe humanity should get more comfortable with again.
for our code
When you break it down, code is an engineering product like every other. It is a specification of how information is to be handled; one which can be understood and executed by a computational unit. Why it is often treated differently is a mystery, especially when it comes from people who consider themselves engineers.
We believe all code should strive to be sustainable.
The times of it doesn’t matter if it runs efficient, processors are getting faster are over, and the underlying mindset was a mistake at best. Development time should be a factor, yes, but dismissing any and all efforts because of it for the majority of software systems just isn’t sustainable. Growing complexity will catch up with you.
The times of we rewrite everything every few years anyway when there’s a new framework are over as well. As the base technologies - frameworks, libraries, tool chains - mature, code will commonly run decades. As software is now a key component for our mobility, transport, medical and other critical infrastructure, companies will have to depend on being able to maintain their codebases for decades, not years. Again, one must acknowledge, as we’ve been here before, though for other reasons.
The times of yeah we’ll fix the style before it goes into production are over, too. We now have continuous integration easily available everywhere, at our fingertips. We have linters and fixers built into our code editors and IDEs. We have reproducible builds using containers, and we have excellent unit testing frameworks. There is just no more excuse for producing sloppy, unmaintainable and therefore unsustainable code.
Overall, we simply want to promote the sustainable mindset. Specifically, we want to help our customers when it comes to:
- producing better, longer lasting and serviceable products results in less production of goods in general and therefore in less environmental impact
- providing efficient services and tools to work leads to less cost throughout the product life-cycle, thereby increasing economic efficiency
- sound engineering design decisions, well-designed codebases, APIs and development processes reduce technical debt
in short: solid engineering. sustainable code.